diff --git a/scripts/py_matter_idl/matter_idl/generators/kotlin/MatterClusters.jinja b/scripts/py_matter_idl/matter_idl/generators/kotlin/MatterClusters.jinja
index 2562d5f..76fa2eb 100644
--- a/scripts/py_matter_idl/matter_idl/generators/kotlin/MatterClusters.jinja
+++ b/scripts/py_matter_idl/matter_idl/generators/kotlin/MatterClusters.jinja
@@ -93,40 +93,27 @@
 {%- endif -%}
 {% endfor -%}
 
-{%- for command in cluster.commands | sort(attribute='code') -%}
-{%- set callbackName = command | javaCommandCallbackName() -%}
-{%- if not command.is_timed_invoke %}
-  suspend fun {{command.name | lowfirst_except_acronym}}(
-{%- if command.input_param -%}
-{%- for field in (cluster.structs | named(command.input_param)).fields -%}
-  {{field.name | lowfirst_except_acronym}}: {{encode_value(cluster, field | asEncodable(typeLookup), 0)}}
-{%- if not loop.last -%}, {% endif %}
-{%- endfor -%}
-{%- endif -%}
-  )
-{%- if command | hasResponse -%}
-    : {{callbackName}} {
-{%- else %} {
-{%- endif %}  
-    // Implementation needs to be added here
-  }
-{%- endif %}
-
+{% for command in cluster.commands | sort(attribute='code') -%}
+{%- set callbackName = command | javaCommandCallbackName() %}
   suspend fun {{command.name | lowfirst_except_acronym}}(
 {%- if command.input_param -%}
 {%- for field in (cluster.structs | named(command.input_param)).fields -%}
   {{field.name | lowfirst_except_acronym}}: {{encode_value(cluster, field | asEncodable(typeLookup), 0)}}
 {%- if not loop.last -%}, {% endif %}  
 {%- endfor -%}
-  , timedInvokeTimeoutMs: Int)
+  , timedInvokeTimeoutMs: Int? = null)
 {%- else -%}
-  timedInvokeTimeoutMs: Int)
+  timedInvokeTimeoutMs: Int? = null)
 {%- endif -%}
 {%- if command | hasResponse -%}
     : {{callbackName}} {
 {%- else %} {
 {%- endif %}  
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 {% endfor -%}
 
diff --git a/scripts/py_matter_idl/matter_idl/generators/kotlin/__init__.py b/scripts/py_matter_idl/matter_idl/generators/kotlin/__init__.py
index 0650d8c..025a314 100644
--- a/scripts/py_matter_idl/matter_idl/generators/kotlin/__init__.py
+++ b/scripts/py_matter_idl/matter_idl/generators/kotlin/__init__.py
@@ -132,13 +132,25 @@
 
 
 def GlobalNameToJavaName(name: str) -> str:
-    if name in {'Int8u', 'Int8s', 'Int16u', 'Int16s'}:
-        return 'Integer'
+    if name == 'Int8s':
+        return 'Byte'
+    if name == 'Int8u':
+        return 'UByte'
+    if name == 'Int16s':
+        return 'Short'
+    if name == 'Int16u':
+        return 'UShort'
 
-    if name.startswith('Int'):
+    if name == 'Int32s':
+        return 'Int'
+    if name == 'Int32u':
+        return 'UInt'
+    if name == 'Int64s':
         return 'Long'
+    if name == 'Int64u':
+        return 'ULong'
 
-    # Double/Float/Booleans/CharString/OctetString
+    # Double/Float/Boolean/CharString/OctetString
     return name
 
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccessControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccessControlCluster.kt
index bb31661..2fbee5e 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccessControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccessControlCluster.kt
@@ -88,36 +88,36 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSubjectsPerAccessControlEntryAttribute(): Integer {
+  suspend fun readSubjectsPerAccessControlEntryAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeSubjectsPerAccessControlEntryAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readTargetsPerAccessControlEntryAttribute(): Integer {
+  suspend fun readTargetsPerAccessControlEntryAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeTargetsPerAccessControlEntryAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAccessControlEntriesPerFabricAttribute(): Integer {
+  suspend fun readAccessControlEntriesPerFabricAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAccessControlEntriesPerFabricAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
@@ -162,19 +162,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccountLoginCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccountLoginCluster.kt
index 5c7ee57..f3021af 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccountLoginCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AccountLoginCluster.kt
@@ -32,17 +32,33 @@
 
   suspend fun getSetupPIN(
     tempAccountIdentifier: String,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetSetupPINResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun login(tempAccountIdentifier: String, setupPIN: String, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun login(
+    tempAccountIdentifier: String,
+    setupPIN: String,
+    timedInvokeTimeoutMs: Int? = null
+  ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun logout(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun logout(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
@@ -86,19 +102,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActionsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActionsCluster.kt
index 112a217..1b7e91e 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActionsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActionsCluster.kt
@@ -32,129 +32,125 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun instantAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun instantAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun instantActionWithTransition(
-    actionID: UShort,
-    invokeID: UInt?,
-    transitionTime: UShort
-  ) {
-    // Implementation needs to be added here
+  suspend fun instantAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun instantActionWithTransition(
     actionID: UShort,
     invokeID: UInt?,
     transitionTime: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun startAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun startAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun startActionWithDuration(actionID: UShort, invokeID: UInt?, duration: UInt) {
-    // Implementation needs to be added here
+  suspend fun startAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun startActionWithDuration(
     actionID: UShort,
     invokeID: UInt?,
     duration: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stopAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
+  suspend fun stopAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stopAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun pauseAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun pauseAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun pauseActionWithDuration(actionID: UShort, invokeID: UInt?, duration: UInt) {
-    // Implementation needs to be added here
+  suspend fun pauseAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun pauseActionWithDuration(
     actionID: UShort,
     invokeID: UInt?,
     duration: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun resumeAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
+  suspend fun resumeAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun resumeAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enableAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enableAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enableActionWithDuration(actionID: UShort, invokeID: UInt?, duration: UInt) {
-    // Implementation needs to be added here
+  suspend fun enableAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enableActionWithDuration(
     actionID: UShort,
     invokeID: UInt?,
     duration: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun disableAction(actionID: UShort, invokeID: UInt?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun disableAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun disableActionWithDuration(actionID: UShort, invokeID: UInt?, duration: UInt) {
-    // Implementation needs to be added here
+  suspend fun disableAction(actionID: UShort, invokeID: UInt?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun disableActionWithDuration(
     actionID: UShort,
     invokeID: UInt?,
     duration: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readActionListAttribute(): ActionListAttribute {
@@ -228,19 +224,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActivatedCarbonFilterMonitoringCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActivatedCarbonFilterMonitoringCluster.kt
index 9f093fa..1133dea 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActivatedCarbonFilterMonitoringCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ActivatedCarbonFilterMonitoringCluster.kt
@@ -35,35 +35,35 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun resetCondition() {
+  suspend fun resetCondition(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readConditionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun resetCondition(timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeConditionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readConditionAttribute(): Integer {
+  suspend fun readDegradationDirectionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeConditionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDegradationDirectionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readDegradationDirectionAttribute(): Integer {
+  suspend fun readChangeIndicationAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDegradationDirectionAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readChangeIndicationAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeChangeIndicationAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeChangeIndicationAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -146,19 +146,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AdministratorCommissioningCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AdministratorCommissioningCluster.kt
index bd60ac3..359feb4 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AdministratorCommissioningCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AdministratorCommissioningCluster.kt
@@ -38,27 +38,39 @@
     discriminator: UShort,
     iterations: UInt,
     salt: ByteArray,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun openBasicCommissioningWindow(
     commissioningTimeout: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun revokeCommissioning(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readWindowStatusAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun revokeCommissioning(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readWindowStatusAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeWindowStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWindowStatusAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -125,19 +137,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AirQualityCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AirQualityCluster.kt
index 4a88ec4..ed191ea 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AirQualityCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AirQualityCluster.kt
@@ -28,11 +28,11 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readAirQualityAttribute(): Integer {
+  suspend fun readAirQualityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAirQualityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAirQualityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -77,19 +77,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationBasicCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationBasicCluster.kt
index d02e2da..aba8f4a 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationBasicCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationBasicCluster.kt
@@ -40,11 +40,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readVendorIDAttribute(): Integer {
+  suspend fun readVendorIDAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeVendorIDAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeVendorIDAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -56,11 +56,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readProductIDAttribute(): Integer {
+  suspend fun readProductIDAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeProductIDAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeProductIDAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -75,11 +75,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readStatusAttribute(): Integer {
+  suspend fun readStatusAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeStatusAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -143,19 +143,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationLauncherCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationLauncherCluster.kt
index 8da3f18..2dfd1f1 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationLauncherCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ApplicationLauncherCluster.kt
@@ -36,43 +36,36 @@
 
   suspend fun launchApp(
     application: ChipStructs.ApplicationLauncherClusterApplicationStruct?,
-    data: ByteArray?
-  ): LauncherResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun launchApp(
-    application: ChipStructs.ApplicationLauncherClusterApplicationStruct?,
     data: ByteArray?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): LauncherResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stopApp(
-    application: ChipStructs.ApplicationLauncherClusterApplicationStruct?
-  ): LauncherResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun stopApp(
     application: ChipStructs.ApplicationLauncherClusterApplicationStruct?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): LauncherResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun hideApp(
-    application: ChipStructs.ApplicationLauncherClusterApplicationStruct?
-  ): LauncherResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun hideApp(
     application: ChipStructs.ApplicationLauncherClusterApplicationStruct?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): LauncherResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readCatalogListAttribute(): CatalogListAttribute {
@@ -151,19 +144,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AudioOutputCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AudioOutputCluster.kt
index 901b65d..02f8838 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AudioOutputCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/AudioOutputCluster.kt
@@ -30,20 +30,20 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun selectOutput(index: UByte) {
-    // Implementation needs to be added here
+  suspend fun selectOutput(index: UByte, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun selectOutput(index: UByte, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun renameOutput(index: UByte, name: String) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun renameOutput(index: UByte, name: String, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun renameOutput(index: UByte, name: String, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readOutputListAttribute(): OutputListAttribute {
@@ -57,11 +57,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentOutputAttribute(): Integer {
+  suspend fun readCurrentOutputAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentOutputAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentOutputAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -106,19 +106,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BallastConfigurationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BallastConfigurationCluster.kt
index f931c4c..6acc691 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BallastConfigurationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BallastConfigurationCluster.kt
@@ -38,31 +38,31 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readPhysicalMinLevelAttribute(): Integer {
+  suspend fun readPhysicalMinLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePhysicalMinLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePhysicalMinLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readPhysicalMaxLevelAttribute(): Integer {
+  suspend fun readPhysicalMaxLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePhysicalMaxLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePhysicalMaxLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readBallastStatusAttribute(): Integer {
+  suspend fun readBallastStatusAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBallastStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBallastStatusAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinLevelAttribute(): Integer {
+  suspend fun readMinLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -74,11 +74,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxLevelAttribute(): Integer {
+  suspend fun readMaxLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -90,7 +90,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -132,11 +132,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readLampQuantityAttribute(): Integer {
+  suspend fun readLampQuantityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLampQuantityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLampQuantityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -210,7 +210,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readLampAlarmModeAttribute(): Integer {
+  suspend fun readLampAlarmModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -222,7 +222,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLampAlarmModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLampAlarmModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -286,19 +286,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BarrierControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BarrierControlCluster.kt
index 505fd47..0c963de 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BarrierControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BarrierControlCluster.kt
@@ -28,47 +28,47 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun barrierControlGoToPercent(percentOpen: UByte) {
+  suspend fun barrierControlGoToPercent(percentOpen: UByte, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun barrierControlStop(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readBarrierMovingStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun barrierControlGoToPercent(percentOpen: UByte, timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeBarrierMovingStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun barrierControlStop() {
+  suspend fun readBarrierSafetyStatusAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun barrierControlStop(timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeBarrierSafetyStatusAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierMovingStateAttribute(): Integer {
+  suspend fun readBarrierCapabilitiesAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBarrierMovingStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBarrierCapabilitiesAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierSafetyStatusAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeBarrierSafetyStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readBarrierCapabilitiesAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeBarrierCapabilitiesAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readBarrierOpenEventsAttribute(): Integer {
+  suspend fun readBarrierOpenEventsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -80,11 +80,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBarrierOpenEventsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBarrierOpenEventsAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierCloseEventsAttribute(): Integer {
+  suspend fun readBarrierCloseEventsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -96,11 +96,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBarrierCloseEventsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBarrierCloseEventsAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierCommandOpenEventsAttribute(): Integer {
+  suspend fun readBarrierCommandOpenEventsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -115,11 +115,11 @@
   suspend fun subscribeBarrierCommandOpenEventsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierCommandCloseEventsAttribute(): Integer {
+  suspend fun readBarrierCommandCloseEventsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -134,11 +134,11 @@
   suspend fun subscribeBarrierCommandCloseEventsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierOpenPeriodAttribute(): Integer {
+  suspend fun readBarrierOpenPeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -150,11 +150,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBarrierOpenPeriodAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBarrierOpenPeriodAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierClosePeriodAttribute(): Integer {
+  suspend fun readBarrierClosePeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -166,15 +166,15 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBarrierClosePeriodAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBarrierClosePeriodAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBarrierPositionAttribute(): Integer {
+  suspend fun readBarrierPositionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBarrierPositionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBarrierPositionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -219,19 +219,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BasicInformationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BasicInformationCluster.kt
index 69dbbdb..bef0daf 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BasicInformationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BasicInformationCluster.kt
@@ -36,19 +36,19 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun mfgSpecificPing() {
+  suspend fun mfgSpecificPing(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readDataModelRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun mfgSpecificPing(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readDataModelRevisionAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeDataModelRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDataModelRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -60,11 +60,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readVendorIDAttribute(): Integer {
+  suspend fun readVendorIDAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeVendorIDAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeVendorIDAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -76,11 +76,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readProductIDAttribute(): Integer {
+  suspend fun readProductIDAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeProductIDAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeProductIDAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -116,11 +116,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readHardwareVersionAttribute(): Integer {
+  suspend fun readHardwareVersionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeHardwareVersionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeHardwareVersionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -135,11 +135,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSoftwareVersionAttribute(): Long {
+  suspend fun readSoftwareVersionAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSoftwareVersionAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeSoftwareVersionAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -289,19 +289,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BinaryInputBasicCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BinaryInputBasicCluster.kt
index 7fee672..65c305c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BinaryInputBasicCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BinaryInputBasicCluster.kt
@@ -92,11 +92,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPolarityAttribute(): Integer {
+  suspend fun readPolarityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePolarityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePolarityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -116,7 +116,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readReliabilityAttribute(): Integer {
+  suspend fun readReliabilityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -128,23 +128,23 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeReliabilityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeReliabilityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readStatusFlagsAttribute(): Integer {
+  suspend fun readStatusFlagsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeStatusFlagsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeStatusFlagsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readApplicationTypeAttribute(): Long {
+  suspend fun readApplicationTypeAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeApplicationTypeAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeApplicationTypeAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -189,19 +189,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BindingCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BindingCluster.kt
index edc98cf..10a9bcb 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BindingCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BindingCluster.kt
@@ -94,19 +94,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BooleanStateCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BooleanStateCluster.kt
index 2ba45f0..4d3d86e 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BooleanStateCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BooleanStateCluster.kt
@@ -77,19 +77,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BridgedDeviceBasicInformationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BridgedDeviceBasicInformationCluster.kt
index 3c825cc..f8f0764 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BridgedDeviceBasicInformationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/BridgedDeviceBasicInformationCluster.kt
@@ -40,11 +40,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readVendorIDAttribute(): Integer {
+  suspend fun readVendorIDAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeVendorIDAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeVendorIDAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -72,11 +72,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readHardwareVersionAttribute(): Integer {
+  suspend fun readHardwareVersionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeHardwareVersionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeHardwareVersionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -91,11 +91,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSoftwareVersionAttribute(): Long {
+  suspend fun readSoftwareVersionAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSoftwareVersionAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeSoftwareVersionAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -218,19 +218,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonDioxideConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonDioxideConcentrationMeasurementCluster.kt
index 4ec67d9..ced39ab 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonDioxideConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonDioxideConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonMonoxideConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonMonoxideConcentrationMeasurementCluster.kt
index 30c75be..f7e0ca1 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonMonoxideConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/CarbonMonoxideConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ChannelCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ChannelCluster.kt
index dc9db0e..92cb96d 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ChannelCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ChannelCluster.kt
@@ -36,32 +36,35 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeChannel(match: String): ChangeChannelResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeChannel(match: String, timedInvokeTimeoutMs: Int): ChangeChannelResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeChannelByNumber(majorNumber: UShort, minorNumber: UShort) {
-    // Implementation needs to be added here
+  suspend fun changeChannel(
+    match: String,
+    timedInvokeTimeoutMs: Int? = null
+  ): ChangeChannelResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun changeChannelByNumber(
     majorNumber: UShort,
     minorNumber: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun skipChannel(count: Short) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun skipChannel(count: Short, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun skipChannel(count: Short, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readChannelListAttribute(): ChannelListAttribute {
@@ -135,19 +138,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ColorControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ColorControlCluster.kt
index 4312bfe..0529929 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ColorControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ColorControlCluster.kt
@@ -55,24 +55,14 @@
     direction: UInt,
     transitionTime: UShort,
     optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToHue(
-    hue: UByte,
-    direction: UInt,
-    transitionTime: UShort,
-    optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveHue(moveMode: UInt, rate: UByte, optionsMask: UInt, optionsOverride: UInt) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveHue(
@@ -80,19 +70,13 @@
     rate: UByte,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stepHue(
-    stepMode: UInt,
-    stepSize: UByte,
-    transitionTime: UByte,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun stepHue(
@@ -101,18 +85,13 @@
     transitionTime: UByte,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToSaturation(
-    saturation: UByte,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveToSaturation(
@@ -120,18 +99,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveSaturation(
-    moveMode: UInt,
-    rate: UByte,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveSaturation(
@@ -139,19 +113,13 @@
     rate: UByte,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stepSaturation(
-    stepMode: UInt,
-    stepSize: UByte,
-    transitionTime: UByte,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun stepSaturation(
@@ -160,19 +128,13 @@
     transitionTime: UByte,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToHueAndSaturation(
-    hue: UByte,
-    saturation: UByte,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveToHueAndSaturation(
@@ -181,19 +143,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToColor(
-    colorX: UShort,
-    colorY: UShort,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveToColor(
@@ -202,13 +158,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveColor(rateX: Short, rateY: Short, optionsMask: UInt, optionsOverride: UInt) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveColor(
@@ -216,19 +172,13 @@
     rateY: Short,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stepColor(
-    stepX: Short,
-    stepY: Short,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun stepColor(
@@ -237,18 +187,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToColorTemperature(
-    colorTemperatureMireds: UShort,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveToColorTemperature(
@@ -256,19 +201,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enhancedMoveToHue(
-    enhancedHue: UShort,
-    direction: UInt,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enhancedMoveToHue(
@@ -277,18 +216,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enhancedMoveHue(
-    moveMode: UInt,
-    rate: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enhancedMoveHue(
@@ -296,19 +230,13 @@
     rate: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enhancedStepHue(
-    stepMode: UInt,
-    stepSize: UShort,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enhancedStepHue(
@@ -317,19 +245,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enhancedMoveToHueAndSaturation(
-    enhancedHue: UShort,
-    saturation: UByte,
-    transitionTime: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enhancedMoveToHueAndSaturation(
@@ -338,21 +260,13 @@
     transitionTime: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun colorLoopSet(
-    updateFlags: UInt,
-    action: UInt,
-    direction: UInt,
-    time: UShort,
-    startHue: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun colorLoopSet(
@@ -363,28 +277,25 @@
     startHue: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stopMoveStep(optionsMask: UInt, optionsOverride: UInt) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stopMoveStep(optionsMask: UInt, optionsOverride: UInt, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveColorTemperature(
-    moveMode: UInt,
-    rate: UShort,
-    colorTemperatureMinimumMireds: UShort,
-    colorTemperatureMaximumMireds: UShort,
+  suspend fun stopMoveStep(
     optionsMask: UInt,
-    optionsOverride: UInt
+    optionsOverride: UInt,
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveColorTemperature(
@@ -394,21 +305,13 @@
     colorTemperatureMaximumMireds: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stepColorTemperature(
-    stepMode: UInt,
-    stepSize: UShort,
-    transitionTime: UShort,
-    colorTemperatureMinimumMireds: UShort,
-    colorTemperatureMaximumMireds: UShort,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun stepColorTemperature(
@@ -419,56 +322,60 @@
     colorTemperatureMaximumMireds: UShort,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readCurrentHueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentHueAttribute(): Integer {
+  suspend fun subscribeCurrentHueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentHueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readCurrentSaturationAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentSaturationAttribute(): Integer {
+  suspend fun subscribeCurrentSaturationAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentSaturationAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readRemainingTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRemainingTimeAttribute(): Integer {
+  suspend fun subscribeRemainingTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRemainingTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readCurrentXAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentXAttribute(): Integer {
+  suspend fun subscribeCurrentXAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentXAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readCurrentYAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentYAttribute(): Integer {
+  suspend fun subscribeCurrentYAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentYAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDriftCompensationAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readDriftCompensationAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeDriftCompensationAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDriftCompensationAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -480,26 +387,23 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readColorTemperatureMiredsAttribute(): Integer {
+  suspend fun readColorTemperatureMiredsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorTemperatureMiredsAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeColorTemperatureMiredsAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorModeAttribute(): Integer {
+  suspend fun readColorModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOptionsAttribute(): Integer {
+  suspend fun readOptionsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -511,7 +415,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOptionsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOptionsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -526,19 +430,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary1XAttribute(): Integer {
+  suspend fun readPrimary1XAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary1XAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary1XAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary1YAttribute(): Integer {
+  suspend fun readPrimary1YAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary1YAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary1YAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -553,19 +457,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary2XAttribute(): Integer {
+  suspend fun readPrimary2XAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary2XAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary2XAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary2YAttribute(): Integer {
+  suspend fun readPrimary2YAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary2YAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary2YAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -580,19 +484,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary3XAttribute(): Integer {
+  suspend fun readPrimary3XAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary3XAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary3XAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary3YAttribute(): Integer {
+  suspend fun readPrimary3YAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary3YAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary3YAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -607,19 +511,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary4XAttribute(): Integer {
+  suspend fun readPrimary4XAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary4XAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary4XAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary4YAttribute(): Integer {
+  suspend fun readPrimary4YAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary4YAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary4YAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -634,19 +538,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary5XAttribute(): Integer {
+  suspend fun readPrimary5XAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary5XAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary5XAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary5YAttribute(): Integer {
+  suspend fun readPrimary5YAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary5YAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary5YAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -661,19 +565,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary6XAttribute(): Integer {
+  suspend fun readPrimary6XAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary6XAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary6XAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPrimary6YAttribute(): Integer {
+  suspend fun readPrimary6YAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePrimary6YAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePrimary6YAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -688,7 +592,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readWhitePointXAttribute(): Integer {
+  suspend fun readWhitePointXAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -700,11 +604,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWhitePointXAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWhitePointXAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readWhitePointYAttribute(): Integer {
+  suspend fun readWhitePointYAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -716,11 +620,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWhitePointYAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWhitePointYAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorPointRXAttribute(): Integer {
+  suspend fun readColorPointRXAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -732,11 +636,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorPointRXAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorPointRXAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorPointRYAttribute(): Integer {
+  suspend fun readColorPointRYAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -748,7 +652,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorPointRYAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorPointRYAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -771,7 +675,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readColorPointGXAttribute(): Integer {
+  suspend fun readColorPointGXAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -783,11 +687,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorPointGXAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorPointGXAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorPointGYAttribute(): Integer {
+  suspend fun readColorPointGYAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -799,7 +703,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorPointGYAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorPointGYAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -822,7 +726,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readColorPointBXAttribute(): Integer {
+  suspend fun readColorPointBXAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -834,11 +738,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorPointBXAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorPointBXAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorPointBYAttribute(): Integer {
+  suspend fun readColorPointBYAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -850,7 +754,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorPointBYAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorPointBYAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -873,106 +777,106 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEnhancedCurrentHueAttribute(): Integer {
+  suspend fun readEnhancedCurrentHueAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEnhancedCurrentHueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEnhancedCurrentHueAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readEnhancedColorModeAttribute(): Integer {
+  suspend fun readEnhancedColorModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEnhancedColorModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEnhancedColorModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorLoopActiveAttribute(): Integer {
+  suspend fun readColorLoopActiveAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorLoopActiveAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorLoopActiveAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorLoopDirectionAttribute(): Integer {
+  suspend fun readColorLoopDirectionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorLoopDirectionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorLoopDirectionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorLoopTimeAttribute(): Integer {
+  suspend fun readColorLoopTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorLoopTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorLoopTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorLoopStartEnhancedHueAttribute(): Integer {
+  suspend fun readColorLoopStartEnhancedHueAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeColorLoopStartEnhancedHueAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorLoopStoredEnhancedHueAttribute(): Integer {
+  suspend fun readColorLoopStoredEnhancedHueAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeColorLoopStoredEnhancedHueAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorCapabilitiesAttribute(): Integer {
+  suspend fun readColorCapabilitiesAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeColorCapabilitiesAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeColorCapabilitiesAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorTempPhysicalMinMiredsAttribute(): Integer {
+  suspend fun readColorTempPhysicalMinMiredsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeColorTempPhysicalMinMiredsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readColorTempPhysicalMaxMiredsAttribute(): Integer {
+  suspend fun readColorTempPhysicalMaxMiredsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeColorTempPhysicalMaxMiredsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readCoupleColorTempToLevelMinMiredsAttribute(): Integer {
+  suspend fun readCoupleColorTempToLevelMinMiredsAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeCoupleColorTempToLevelMinMiredsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
@@ -1036,19 +940,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ContentLauncherCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ContentLauncherCluster.kt
index ee6dcff..014ba9f 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ContentLauncherCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ContentLauncherCluster.kt
@@ -35,35 +35,27 @@
   suspend fun launchContent(
     search: ChipStructs.ContentLauncherClusterContentSearchStruct,
     autoPlay: Boolean,
-    data: String?
-  ): LauncherResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun launchContent(
-    search: ChipStructs.ContentLauncherClusterContentSearchStruct,
-    autoPlay: Boolean,
     data: String?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): LauncherResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun launchURL(
-    contentURL: String,
-    displayString: String?,
-    brandingInformation: ChipStructs.ContentLauncherClusterBrandingInformationStruct?
-  ): LauncherResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun launchURL(
     contentURL: String,
     displayString: String?,
     brandingInformation: ChipStructs.ContentLauncherClusterBrandingInformationStruct?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): LauncherResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readAcceptHeaderAttribute(): AcceptHeaderAttribute {
@@ -77,7 +69,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSupportedStreamingProtocolsAttribute(): Long {
+  suspend fun readSupportedStreamingProtocolsAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -92,7 +84,7 @@
   suspend fun subscribeSupportedStreamingProtocolsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -137,19 +129,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DescriptorCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DescriptorCluster.kt
index 813c7b9..d0cedbe 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DescriptorCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DescriptorCluster.kt
@@ -130,19 +130,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DiagnosticLogsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DiagnosticLogsCluster.kt
index af66e72..fbf46e3 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DiagnosticLogsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DiagnosticLogsCluster.kt
@@ -38,18 +38,14 @@
   suspend fun retrieveLogsRequest(
     intent: UInt,
     requestedProtocol: UInt,
-    transferFileDesignator: String?
-  ): RetrieveLogsResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun retrieveLogsRequest(
-    intent: UInt,
-    requestedProtocol: UInt,
     transferFileDesignator: String?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): RetrieveLogsResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
@@ -93,19 +89,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherAlarmCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherAlarmCluster.kt
index bdfa74c..a13c51a 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherAlarmCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherAlarmCluster.kt
@@ -28,51 +28,51 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun reset(alarms: ULong) {
+  suspend fun reset(alarms: ULong, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun modifyEnabledAlarms(mask: ULong, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readMaskAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun reset(alarms: ULong, timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeMaskAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun modifyEnabledAlarms(mask: ULong) {
+  suspend fun readLatchAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun modifyEnabledAlarms(mask: ULong, timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeLatchAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaskAttribute(): Long {
+  suspend fun readStateAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaskAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeStateAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readLatchAttribute(): Long {
+  suspend fun readSupportedAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLatchAttribute(minInterval: Int, maxInterval: Int): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readStateAttribute(): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeStateAttribute(minInterval: Int, maxInterval: Int): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readSupportedAttribute(): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeSupportedAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeSupportedAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -117,19 +117,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherModeCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherModeCluster.kt
index 57db5fa..f24f914 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherModeCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DishwasherModeCluster.kt
@@ -38,12 +38,15 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeToMode(newMode: UByte): ChangeToModeResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int): ChangeToModeResponse {
-    // Implementation needs to be added here
+  suspend fun changeToMode(
+    newMode: UByte,
+    timedInvokeTimeoutMs: Int? = null
+  ): ChangeToModeResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readSupportedModesAttribute(): SupportedModesAttribute {
@@ -57,11 +60,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentModeAttribute(): Integer {
+  suspend fun readCurrentModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -141,19 +144,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DoorLockCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DoorLockCluster.kt
index 851df95..53e1695 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DoorLockCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/DoorLockCluster.kt
@@ -86,28 +86,32 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun lockDoor(PINCode: ByteArray?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun lockDoor(PINCode: ByteArray?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun unlockDoor(PINCode: ByteArray?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun unlockDoor(PINCode: ByteArray?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun unlockWithTimeout(timeout: UShort, PINCode: ByteArray?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setWeekDaySchedule(
-    weekDayIndex: UByte,
-    userIndex: UShort,
-    daysMask: UInt,
-    startHour: UByte,
-    startMinute: UByte,
-    endHour: UByte,
-    endMinute: UByte
+  suspend fun unlockWithTimeout(
+    timeout: UShort,
+    PINCode: ByteArray?,
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setWeekDaySchedule(
@@ -118,45 +122,37 @@
     startMinute: UByte,
     endHour: UByte,
     endMinute: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getWeekDaySchedule(
-    weekDayIndex: UByte,
-    userIndex: UShort
-  ): GetWeekDayScheduleResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getWeekDaySchedule(
     weekDayIndex: UByte,
     userIndex: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetWeekDayScheduleResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun clearWeekDaySchedule(weekDayIndex: UByte, userIndex: UShort) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun clearWeekDaySchedule(
     weekDayIndex: UByte,
     userIndex: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setYearDaySchedule(
-    yearDayIndex: UByte,
-    userIndex: UShort,
-    localStartTime: UInt,
-    localEndTime: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setYearDaySchedule(
@@ -164,45 +160,37 @@
     userIndex: UShort,
     localStartTime: UInt,
     localEndTime: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getYearDaySchedule(
-    yearDayIndex: UByte,
-    userIndex: UShort
-  ): GetYearDayScheduleResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getYearDaySchedule(
     yearDayIndex: UByte,
     userIndex: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetYearDayScheduleResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun clearYearDaySchedule(yearDayIndex: UByte, userIndex: UShort) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun clearYearDaySchedule(
     yearDayIndex: UByte,
     userIndex: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setHolidaySchedule(
-    holidayIndex: UByte,
-    localStartTime: UInt,
-    localEndTime: UInt,
-    operatingMode: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setHolidaySchedule(
@@ -210,28 +198,32 @@
     localStartTime: UInt,
     localEndTime: UInt,
     operatingMode: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getHolidaySchedule(holidayIndex: UByte): GetHolidayScheduleResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getHolidaySchedule(
     holidayIndex: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetHolidayScheduleResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun clearHolidaySchedule(holidayIndex: UByte) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun clearHolidaySchedule(holidayIndex: UByte, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun clearHolidaySchedule(holidayIndex: UByte, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setUser(
@@ -242,21 +234,29 @@
     userStatus: UInt?,
     userType: UInt?,
     credentialRule: UInt?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun getUser(userIndex: UShort): GetUserResponse {
-    // Implementation needs to be added here
+  suspend fun getUser(userIndex: UShort, timedInvokeTimeoutMs: Int? = null): GetUserResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun getUser(userIndex: UShort, timedInvokeTimeoutMs: Int): GetUserResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun clearUser(userIndex: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun clearUser(userIndex: UShort, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setCredential(
@@ -266,33 +266,43 @@
     userIndex: UShort?,
     userStatus: UInt?,
     userType: UInt?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): SetCredentialResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getCredentialStatus(
-    credential: ChipStructs.DoorLockClusterCredentialStruct
-  ): GetCredentialStatusResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getCredentialStatus(
     credential: ChipStructs.DoorLockClusterCredentialStruct,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetCredentialStatusResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun clearCredential(
     credential: ChipStructs.DoorLockClusterCredentialStruct?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun unboltDoor(PINCode: ByteArray?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun unboltDoor(PINCode: ByteArray?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readLockStateAttribute(): LockStateAttribute {
@@ -303,11 +313,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readLockTypeAttribute(): Integer {
+  suspend fun readLockTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLockTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLockTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -327,7 +337,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readDoorOpenEventsAttribute(): Long {
+  suspend fun readDoorOpenEventsAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -339,11 +349,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDoorOpenEventsAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeDoorOpenEventsAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readDoorClosedEventsAttribute(): Long {
+  suspend fun readDoorClosedEventsAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -355,11 +365,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDoorClosedEventsAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeDoorClosedEventsAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readOpenPeriodAttribute(): Integer {
+  suspend fun readOpenPeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -371,127 +381,124 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOpenPeriodAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOpenPeriodAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfTotalUsersSupportedAttribute(): Integer {
+  suspend fun readNumberOfTotalUsersSupportedAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfTotalUsersSupportedAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfPINUsersSupportedAttribute(): Integer {
+  suspend fun readNumberOfPINUsersSupportedAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfPINUsersSupportedAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfRFIDUsersSupportedAttribute(): Integer {
+  suspend fun readNumberOfRFIDUsersSupportedAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfRFIDUsersSupportedAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfWeekDaySchedulesSupportedPerUserAttribute(): Integer {
+  suspend fun readNumberOfWeekDaySchedulesSupportedPerUserAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfWeekDaySchedulesSupportedPerUserAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfYearDaySchedulesSupportedPerUserAttribute(): Integer {
+  suspend fun readNumberOfYearDaySchedulesSupportedPerUserAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfYearDaySchedulesSupportedPerUserAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfHolidaySchedulesSupportedAttribute(): Integer {
+  suspend fun readNumberOfHolidaySchedulesSupportedAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfHolidaySchedulesSupportedAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxPINCodeLengthAttribute(): Integer {
+  suspend fun readMaxPINCodeLengthAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxPINCodeLengthAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxPINCodeLengthAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinPINCodeLengthAttribute(): Integer {
+  suspend fun readMinPINCodeLengthAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinPINCodeLengthAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinPINCodeLengthAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxRFIDCodeLengthAttribute(): Integer {
+  suspend fun readMaxRFIDCodeLengthAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxRFIDCodeLengthAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxRFIDCodeLengthAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinRFIDCodeLengthAttribute(): Integer {
+  suspend fun readMinRFIDCodeLengthAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinRFIDCodeLengthAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinRFIDCodeLengthAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCredentialRulesSupportAttribute(): Integer {
+  suspend fun readCredentialRulesSupportAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCredentialRulesSupportAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeCredentialRulesSupportAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfCredentialsSupportedPerUserAttribute(): Integer {
+  suspend fun readNumberOfCredentialsSupportedPerUserAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfCredentialsSupportedPerUserAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
@@ -511,7 +518,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readLEDSettingsAttribute(): Integer {
+  suspend fun readLEDSettingsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -523,11 +530,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLEDSettingsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLEDSettingsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readAutoRelockTimeAttribute(): Long {
+  suspend fun readAutoRelockTimeAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -539,11 +546,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAutoRelockTimeAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeAutoRelockTimeAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readSoundVolumeAttribute(): Integer {
+  suspend fun readSoundVolumeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -555,11 +562,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSoundVolumeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSoundVolumeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOperatingModeAttribute(): Integer {
+  suspend fun readOperatingModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -571,29 +578,29 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOperatingModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOperatingModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSupportedOperatingModesAttribute(): Integer {
+  suspend fun readSupportedOperatingModesAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeSupportedOperatingModesAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDefaultConfigurationRegisterAttribute(): Integer {
+  suspend fun readDefaultConfigurationRegisterAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeDefaultConfigurationRegisterAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
@@ -667,7 +674,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readLocalProgrammingFeaturesAttribute(): Integer {
+  suspend fun readLocalProgrammingFeaturesAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -682,11 +689,11 @@
   suspend fun subscribeLocalProgrammingFeaturesAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readWrongCodeEntryLimitAttribute(): Integer {
+  suspend fun readWrongCodeEntryLimitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -698,11 +705,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWrongCodeEntryLimitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWrongCodeEntryLimitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readUserCodeTemporaryDisableTimeAttribute(): Integer {
+  suspend fun readUserCodeTemporaryDisableTimeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -717,7 +724,7 @@
   suspend fun subscribeUserCodeTemporaryDisableTimeAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
@@ -756,7 +763,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readExpiringUserTimeoutAttribute(): Integer {
+  suspend fun readExpiringUserTimeoutAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -768,7 +775,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeExpiringUserTimeoutAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeExpiringUserTimeoutAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -813,19 +820,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ElectricalMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ElectricalMeasurementCluster.kt
index 292dfc4..17ad4bc 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ElectricalMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ElectricalMeasurementCluster.kt
@@ -28,547 +28,543 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun getProfileInfoCommand() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getProfileInfoCommand(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getMeasurementProfileCommand(
-    attributeId: UShort,
-    startTime: UInt,
-    numberOfIntervals: UInt
-  ) {
-    // Implementation needs to be added here
+  suspend fun getProfileInfoCommand(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getMeasurementProfileCommand(
     attributeId: UShort,
     startTime: UInt,
     numberOfIntervals: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readMeasurementTypeAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementTypeAttribute(): Long {
+  suspend fun subscribeMeasurementTypeAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementTypeAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun readDcVoltageAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcVoltageAttribute(): Integer {
+  suspend fun subscribeDcVoltageAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcVoltageAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcVoltageMinAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcVoltageMinAttribute(): Integer {
+  suspend fun subscribeDcVoltageMinAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcVoltageMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcVoltageMaxAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcVoltageMaxAttribute(): Integer {
+  suspend fun subscribeDcVoltageMaxAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcVoltageMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcCurrentAttribute(): Integer {
+  suspend fun subscribeDcCurrentAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcCurrentAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcCurrentMinAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcCurrentMinAttribute(): Integer {
+  suspend fun subscribeDcCurrentMinAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcCurrentMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcCurrentMaxAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcCurrentMaxAttribute(): Integer {
+  suspend fun subscribeDcCurrentMaxAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcCurrentMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcPowerAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcPowerAttribute(): Integer {
+  suspend fun subscribeDcPowerAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcPowerAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcPowerMinAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcPowerMinAttribute(): Integer {
+  suspend fun subscribeDcPowerMinAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcPowerMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcPowerMaxAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcPowerMaxAttribute(): Integer {
+  suspend fun subscribeDcPowerMaxAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcPowerMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcVoltageMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcVoltageMultiplierAttribute(): Integer {
+  suspend fun subscribeDcVoltageMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcVoltageMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcVoltageDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcVoltageDivisorAttribute(): Integer {
+  suspend fun subscribeDcVoltageDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcVoltageDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcCurrentMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcCurrentMultiplierAttribute(): Integer {
+  suspend fun subscribeDcCurrentMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcCurrentMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcCurrentDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcCurrentDivisorAttribute(): Integer {
+  suspend fun subscribeDcCurrentDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcCurrentDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcPowerMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcPowerMultiplierAttribute(): Integer {
+  suspend fun subscribeDcPowerMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcPowerMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readDcPowerDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readDcPowerDivisorAttribute(): Integer {
+  suspend fun subscribeDcPowerDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDcPowerDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readAcFrequencyAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcFrequencyAttribute(): Integer {
+  suspend fun subscribeAcFrequencyAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcFrequencyAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readAcFrequencyMinAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcFrequencyMinAttribute(): Integer {
+  suspend fun subscribeAcFrequencyMinAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcFrequencyMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readAcFrequencyMaxAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcFrequencyMaxAttribute(): Integer {
+  suspend fun subscribeAcFrequencyMaxAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcFrequencyMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readNeutralCurrentAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readNeutralCurrentAttribute(): Integer {
+  suspend fun subscribeNeutralCurrentAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeNeutralCurrentAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readTotalActivePowerAttribute(): Int {
     // Implementation needs to be added here
   }
 
-  suspend fun readTotalActivePowerAttribute(): Long {
+  suspend fun subscribeTotalActivePowerAttribute(minInterval: Int, maxInterval: Int): Int {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTotalActivePowerAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun readTotalReactivePowerAttribute(): Int {
     // Implementation needs to be added here
   }
 
-  suspend fun readTotalReactivePowerAttribute(): Long {
+  suspend fun subscribeTotalReactivePowerAttribute(minInterval: Int, maxInterval: Int): Int {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTotalReactivePowerAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun readTotalApparentPowerAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTotalApparentPowerAttribute(): Long {
+  suspend fun subscribeTotalApparentPowerAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTotalApparentPowerAttribute(minInterval: Int, maxInterval: Int): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readMeasured1stHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasured1stHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasured1stHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasured3rdHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasured3rdHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasured3rdHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasured5thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasured5thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasured5thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasured7thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasured7thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasured7thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasured9thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasured9thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasured9thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasured11thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasured11thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasured11thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasuredPhase1stHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasuredPhase1stHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasuredPhase1stHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasuredPhase3rdHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasuredPhase3rdHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasuredPhase3rdHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasuredPhase5thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasuredPhase5thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasuredPhase5thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasuredPhase7thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasuredPhase7thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasuredPhase7thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasuredPhase9thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasuredPhase9thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasuredPhase9thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasuredPhase11thHarmonicCurrentAttribute(): Integer {
+  suspend fun readMeasuredPhase11thHarmonicCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeMeasuredPhase11thHarmonicCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcFrequencyMultiplierAttribute(): Integer {
+  suspend fun readAcFrequencyMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcFrequencyMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcFrequencyMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcFrequencyDivisorAttribute(): Integer {
+  suspend fun readAcFrequencyDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcFrequencyDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcFrequencyDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPowerMultiplierAttribute(): Long {
+  suspend fun readPowerMultiplierAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePowerMultiplierAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePowerMultiplierAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readPowerDivisorAttribute(): Long {
+  suspend fun readPowerDivisorAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePowerDivisorAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePowerDivisorAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readHarmonicCurrentMultiplierAttribute(): Integer {
+  suspend fun readHarmonicCurrentMultiplierAttribute(): Byte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeHarmonicCurrentMultiplierAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readPhaseHarmonicCurrentMultiplierAttribute(): Integer {
+  suspend fun readPhaseHarmonicCurrentMultiplierAttribute(): Byte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribePhaseHarmonicCurrentMultiplierAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstantaneousVoltageAttribute(): Integer {
+  suspend fun readInstantaneousVoltageAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInstantaneousVoltageAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInstantaneousVoltageAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstantaneousLineCurrentAttribute(): Integer {
+  suspend fun readInstantaneousLineCurrentAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeInstantaneousLineCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstantaneousActiveCurrentAttribute(): Integer {
+  suspend fun readInstantaneousActiveCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeInstantaneousActiveCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstantaneousReactiveCurrentAttribute(): Integer {
+  suspend fun readInstantaneousReactiveCurrentAttribute(): Short {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeInstantaneousReactiveCurrentAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstantaneousPowerAttribute(): Integer {
+  suspend fun readInstantaneousPowerAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInstantaneousPowerAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInstantaneousPowerAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageAttribute(): Integer {
+  suspend fun readRmsVoltageAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageMinAttribute(): Integer {
+  suspend fun readRmsVoltageMinAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageMinAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageMaxAttribute(): Integer {
+  suspend fun readRmsVoltageMaxAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageMaxAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentAttribute(): Integer {
+  suspend fun readRmsCurrentAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentMinAttribute(): Integer {
+  suspend fun readRmsCurrentMinAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentMinAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentMaxAttribute(): Integer {
+  suspend fun readRmsCurrentMaxAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentMaxAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerAttribute(): Integer {
+  suspend fun readActivePowerAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerMinAttribute(): Integer {
+  suspend fun readActivePowerMinAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerMinAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerMinAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerMaxAttribute(): Integer {
+  suspend fun readActivePowerMaxAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerMaxAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readReactivePowerAttribute(): Integer {
+  suspend fun readReactivePowerAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeReactivePowerAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeReactivePowerAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readApparentPowerAttribute(): Integer {
+  suspend fun readApparentPowerAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeApparentPowerAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeApparentPowerAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPowerFactorAttribute(): Integer {
+  suspend fun readPowerFactorAttribute(): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePowerFactorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePowerFactorAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsVoltageMeasurementPeriodAttribute(): Integer {
+  suspend fun readAverageRmsVoltageMeasurementPeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -586,11 +582,11 @@
   suspend fun subscribeAverageRmsVoltageMeasurementPeriodAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsUnderVoltageCounterAttribute(): Integer {
+  suspend fun readAverageRmsUnderVoltageCounterAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -605,11 +601,11 @@
   suspend fun subscribeAverageRmsUnderVoltageCounterAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeOverVoltagePeriodAttribute(): Integer {
+  suspend fun readRmsExtremeOverVoltagePeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -624,11 +620,11 @@
   suspend fun subscribeRmsExtremeOverVoltagePeriodAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeUnderVoltagePeriodAttribute(): Integer {
+  suspend fun readRmsExtremeUnderVoltagePeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -643,11 +639,11 @@
   suspend fun subscribeRmsExtremeUnderVoltagePeriodAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSagPeriodAttribute(): Integer {
+  suspend fun readRmsVoltageSagPeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -659,11 +655,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageSagPeriodAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageSagPeriodAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSwellPeriodAttribute(): Integer {
+  suspend fun readRmsVoltageSwellPeriodAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -675,59 +671,59 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageSwellPeriodAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageSwellPeriodAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcVoltageMultiplierAttribute(): Integer {
+  suspend fun readAcVoltageMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcVoltageMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcVoltageMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcVoltageDivisorAttribute(): Integer {
+  suspend fun readAcVoltageDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcVoltageDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcVoltageDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcCurrentMultiplierAttribute(): Integer {
+  suspend fun readAcCurrentMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcCurrentMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcCurrentMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcCurrentDivisorAttribute(): Integer {
+  suspend fun readAcCurrentDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcCurrentDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcCurrentDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcPowerMultiplierAttribute(): Integer {
+  suspend fun readAcPowerMultiplierAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcPowerMultiplierAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcPowerMultiplierAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcPowerDivisorAttribute(): Integer {
+  suspend fun readAcPowerDivisorAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcPowerDivisorAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcPowerDivisorAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readOverloadAlarmsMaskAttribute(): Integer {
+  suspend fun readOverloadAlarmsMaskAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -739,27 +735,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOverloadAlarmsMaskAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOverloadAlarmsMaskAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readVoltageOverloadAttribute(): Integer {
+  suspend fun readVoltageOverloadAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeVoltageOverloadAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeVoltageOverloadAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentOverloadAttribute(): Integer {
+  suspend fun readCurrentOverloadAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentOverloadAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentOverloadAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcOverloadAlarmsMaskAttribute(): Integer {
+  suspend fun readAcOverloadAlarmsMaskAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -771,490 +767,481 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcOverloadAlarmsMaskAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcOverloadAlarmsMaskAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcVoltageOverloadAttribute(): Integer {
+  suspend fun readAcVoltageOverloadAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcVoltageOverloadAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcVoltageOverloadAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcCurrentOverloadAttribute(): Integer {
+  suspend fun readAcCurrentOverloadAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcCurrentOverloadAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcCurrentOverloadAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcActivePowerOverloadAttribute(): Integer {
+  suspend fun readAcActivePowerOverloadAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcActivePowerOverloadAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAcActivePowerOverloadAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAcReactivePowerOverloadAttribute(): Integer {
+  suspend fun readAcReactivePowerOverloadAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAcReactivePowerOverloadAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeAcReactivePowerOverloadAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsOverVoltageAttribute(): Integer {
+  suspend fun readAverageRmsOverVoltageAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAverageRmsOverVoltageAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAverageRmsOverVoltageAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsUnderVoltageAttribute(): Integer {
+  suspend fun readAverageRmsUnderVoltageAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAverageRmsUnderVoltageAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeAverageRmsUnderVoltageAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeOverVoltageAttribute(): Integer {
+  suspend fun readRmsExtremeOverVoltageAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsExtremeOverVoltageAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsExtremeOverVoltageAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeUnderVoltageAttribute(): Integer {
+  suspend fun readRmsExtremeUnderVoltageAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsExtremeUnderVoltageAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeRmsExtremeUnderVoltageAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSagAttribute(): Integer {
+  suspend fun readRmsVoltageSagAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageSagAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageSagAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSwellAttribute(): Integer {
+  suspend fun readRmsVoltageSwellAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageSwellAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageSwellAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readLineCurrentPhaseBAttribute(): Integer {
+  suspend fun readLineCurrentPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLineCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLineCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readActiveCurrentPhaseBAttribute(): Integer {
+  suspend fun readActiveCurrentPhaseBAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActiveCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActiveCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readReactiveCurrentPhaseBAttribute(): Integer {
+  suspend fun readReactiveCurrentPhaseBAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeReactiveCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeReactiveCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltagePhaseBAttribute(): Integer {
+  suspend fun readRmsVoltagePhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltagePhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltagePhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageMinPhaseBAttribute(): Integer {
+  suspend fun readRmsVoltageMinPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageMinPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageMinPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageMaxPhaseBAttribute(): Integer {
+  suspend fun readRmsVoltageMaxPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageMaxPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageMaxPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentPhaseBAttribute(): Integer {
+  suspend fun readRmsCurrentPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentMinPhaseBAttribute(): Integer {
+  suspend fun readRmsCurrentMinPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentMinPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentMinPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentMaxPhaseBAttribute(): Integer {
+  suspend fun readRmsCurrentMaxPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentMaxPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentMaxPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerPhaseBAttribute(): Integer {
+  suspend fun readActivePowerPhaseBAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerPhaseBAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerMinPhaseBAttribute(): Integer {
+  suspend fun readActivePowerMinPhaseBAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerMinPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerMinPhaseBAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerMaxPhaseBAttribute(): Integer {
+  suspend fun readActivePowerMaxPhaseBAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerMaxPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerMaxPhaseBAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readReactivePowerPhaseBAttribute(): Integer {
+  suspend fun readReactivePowerPhaseBAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeReactivePowerPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeReactivePowerPhaseBAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readApparentPowerPhaseBAttribute(): Integer {
+  suspend fun readApparentPowerPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeApparentPowerPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeApparentPowerPhaseBAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPowerFactorPhaseBAttribute(): Integer {
+  suspend fun readPowerFactorPhaseBAttribute(): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePowerFactorPhaseBAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePowerFactorPhaseBAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsVoltageMeasurementPeriodPhaseBAttribute(): Integer {
+  suspend fun readAverageRmsVoltageMeasurementPeriodPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageRmsVoltageMeasurementPeriodPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsOverVoltageCounterPhaseBAttribute(): Integer {
+  suspend fun readAverageRmsOverVoltageCounterPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageRmsOverVoltageCounterPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsUnderVoltageCounterPhaseBAttribute(): Integer {
+  suspend fun readAverageRmsUnderVoltageCounterPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageRmsUnderVoltageCounterPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeOverVoltagePeriodPhaseBAttribute(): Integer {
+  suspend fun readRmsExtremeOverVoltagePeriodPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsExtremeOverVoltagePeriodPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeUnderVoltagePeriodPhaseBAttribute(): Integer {
+  suspend fun readRmsExtremeUnderVoltagePeriodPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsExtremeUnderVoltagePeriodPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSagPeriodPhaseBAttribute(): Integer {
+  suspend fun readRmsVoltageSagPeriodPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsVoltageSagPeriodPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSwellPeriodPhaseBAttribute(): Integer {
+  suspend fun readRmsVoltageSwellPeriodPhaseBAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsVoltageSwellPeriodPhaseBAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readLineCurrentPhaseCAttribute(): Integer {
+  suspend fun readLineCurrentPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLineCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLineCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readActiveCurrentPhaseCAttribute(): Integer {
+  suspend fun readActiveCurrentPhaseCAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActiveCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActiveCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readReactiveCurrentPhaseCAttribute(): Integer {
+  suspend fun readReactiveCurrentPhaseCAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeReactiveCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeReactiveCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltagePhaseCAttribute(): Integer {
+  suspend fun readRmsVoltagePhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltagePhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltagePhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageMinPhaseCAttribute(): Integer {
+  suspend fun readRmsVoltageMinPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageMinPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageMinPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageMaxPhaseCAttribute(): Integer {
+  suspend fun readRmsVoltageMaxPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsVoltageMaxPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsVoltageMaxPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentPhaseCAttribute(): Integer {
+  suspend fun readRmsCurrentPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentMinPhaseCAttribute(): Integer {
+  suspend fun readRmsCurrentMinPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentMinPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentMinPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsCurrentMaxPhaseCAttribute(): Integer {
+  suspend fun readRmsCurrentMaxPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRmsCurrentMaxPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRmsCurrentMaxPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerPhaseCAttribute(): Integer {
+  suspend fun readActivePowerPhaseCAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerPhaseCAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerMinPhaseCAttribute(): Integer {
+  suspend fun readActivePowerMinPhaseCAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerMinPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerMinPhaseCAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readActivePowerMaxPhaseCAttribute(): Integer {
+  suspend fun readActivePowerMaxPhaseCAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActivePowerMaxPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActivePowerMaxPhaseCAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readReactivePowerPhaseCAttribute(): Integer {
+  suspend fun readReactivePowerPhaseCAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeReactivePowerPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeReactivePowerPhaseCAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readApparentPowerPhaseCAttribute(): Integer {
+  suspend fun readApparentPowerPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeApparentPowerPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeApparentPowerPhaseCAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPowerFactorPhaseCAttribute(): Integer {
+  suspend fun readPowerFactorPhaseCAttribute(): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePowerFactorPhaseCAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePowerFactorPhaseCAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsVoltageMeasurementPeriodPhaseCAttribute(): Integer {
+  suspend fun readAverageRmsVoltageMeasurementPeriodPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageRmsVoltageMeasurementPeriodPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsOverVoltageCounterPhaseCAttribute(): Integer {
+  suspend fun readAverageRmsOverVoltageCounterPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageRmsOverVoltageCounterPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageRmsUnderVoltageCounterPhaseCAttribute(): Integer {
+  suspend fun readAverageRmsUnderVoltageCounterPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageRmsUnderVoltageCounterPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeOverVoltagePeriodPhaseCAttribute(): Integer {
+  suspend fun readRmsExtremeOverVoltagePeriodPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsExtremeOverVoltagePeriodPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsExtremeUnderVoltagePeriodPhaseCAttribute(): Integer {
+  suspend fun readRmsExtremeUnderVoltagePeriodPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsExtremeUnderVoltagePeriodPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSagPeriodPhaseCAttribute(): Integer {
+  suspend fun readRmsVoltageSagPeriodPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsVoltageSagPeriodPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRmsVoltageSwellPeriodPhaseCAttribute(): Integer {
+  suspend fun readRmsVoltageSwellPeriodPhaseCAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRmsVoltageSwellPeriodPhaseCAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
@@ -1299,19 +1286,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/EthernetNetworkDiagnosticsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/EthernetNetworkDiagnosticsCluster.kt
index a2dcd32..7211471 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/EthernetNetworkDiagnosticsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/EthernetNetworkDiagnosticsCluster.kt
@@ -34,12 +34,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun resetCounts() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resetCounts(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun resetCounts(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readPHYRateAttribute(): PHYRateAttribute {
@@ -61,43 +61,43 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPacketRxCountAttribute(): Long {
+  suspend fun readPacketRxCountAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePacketRxCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePacketRxCountAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readPacketTxCountAttribute(): Long {
+  suspend fun readPacketTxCountAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePacketTxCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePacketTxCountAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxErrCountAttribute(): Long {
+  suspend fun readTxErrCountAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxErrCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxErrCountAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readCollisionCountAttribute(): Long {
+  suspend fun readCollisionCountAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCollisionCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeCollisionCountAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readOverrunCountAttribute(): Long {
+  suspend fun readOverrunCountAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOverrunCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeOverrunCountAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
@@ -112,11 +112,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readTimeSinceResetAttribute(): Long {
+  suspend fun readTimeSinceResetAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTimeSinceResetAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTimeSinceResetAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
@@ -161,19 +161,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FanControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FanControlCluster.kt
index f4c0799..50126d3 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FanControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FanControlCluster.kt
@@ -32,20 +32,20 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun step(direction: UInt, wrap: Boolean?, lowestOff: Boolean?) {
-    // Implementation needs to be added here
-  }
-
   suspend fun step(
     direction: UInt,
     wrap: Boolean?,
     lowestOff: Boolean?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun readFanModeAttribute(): Integer {
+  suspend fun readFanModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -57,11 +57,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFanModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeFanModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readFanModeSequenceAttribute(): Integer {
+  suspend fun readFanModeSequenceAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -73,7 +73,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFanModeSequenceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeFanModeSequenceAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -96,19 +96,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPercentCurrentAttribute(): Integer {
+  suspend fun readPercentCurrentAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePercentCurrentAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePercentCurrentAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSpeedMaxAttribute(): Integer {
+  suspend fun readSpeedMaxAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSpeedMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSpeedMaxAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -131,23 +131,23 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSpeedCurrentAttribute(): Integer {
+  suspend fun readSpeedCurrentAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSpeedCurrentAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSpeedCurrentAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readRockSupportAttribute(): Integer {
+  suspend fun readRockSupportAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRockSupportAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRockSupportAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readRockSettingAttribute(): Integer {
+  suspend fun readRockSettingAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -159,19 +159,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRockSettingAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRockSettingAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readWindSupportAttribute(): Integer {
+  suspend fun readWindSupportAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWindSupportAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWindSupportAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readWindSettingAttribute(): Integer {
+  suspend fun readWindSettingAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -183,11 +183,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWindSettingAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWindSettingAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readAirflowDirectionAttribute(): Integer {
+  suspend fun readAirflowDirectionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -199,7 +199,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAirflowDirectionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAirflowDirectionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -244,19 +244,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FaultInjectionCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FaultInjectionCluster.kt
index 6c6c71f..2caa5da 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FaultInjectionCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FaultInjectionCluster.kt
@@ -33,33 +33,27 @@
     id: UInt,
     numCallsToSkip: UInt,
     numCallsToFail: UInt,
-    takeMutex: Boolean
-  ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun failAtFault(
-    type: UInt,
-    id: UInt,
-    numCallsToSkip: UInt,
-    numCallsToFail: UInt,
     takeMutex: Boolean,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun failRandomlyAtFault(type: UInt, id: UInt, percentage: UByte) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun failRandomlyAtFault(
     type: UInt,
     id: UInt,
     percentage: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
@@ -103,19 +97,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FixedLabelCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FixedLabelCluster.kt
index cc1cb7c..f57fc13 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FixedLabelCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FixedLabelCluster.kt
@@ -79,19 +79,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FlowMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FlowMeasurementCluster.kt
index ab5c4ca..68704d8 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FlowMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FlowMeasurementCluster.kt
@@ -67,11 +67,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readToleranceAttribute(): Integer {
+  suspend fun readToleranceAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -116,19 +116,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FormaldehydeConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FormaldehydeConcentrationMeasurementCluster.kt
index 6828335..a609f54 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FormaldehydeConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/FormaldehydeConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralCommissioningCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralCommissioningCluster.kt
index 59cfa7b..3ba91b0 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralCommissioningCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralCommissioningCluster.kt
@@ -38,44 +38,42 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun armFailSafe(expiryLengthSeconds: UShort, breadcrumb: ULong): ArmFailSafeResponse {
-    // Implementation needs to be added here
-  }
-
   suspend fun armFailSafe(
     expiryLengthSeconds: UShort,
     breadcrumb: ULong,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): ArmFailSafeResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setRegulatoryConfig(
-    newRegulatoryConfig: UInt,
-    countryCode: String,
-    breadcrumb: ULong
-  ): SetRegulatoryConfigResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setRegulatoryConfig(
     newRegulatoryConfig: UInt,
     countryCode: String,
     breadcrumb: ULong,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): SetRegulatoryConfigResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun commissioningComplete(): CommissioningCompleteResponse {
-    // Implementation needs to be added here
+  suspend fun commissioningComplete(
+    timedInvokeTimeoutMs: Int? = null
+  ): CommissioningCompleteResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun commissioningComplete(timedInvokeTimeoutMs: Int): CommissioningCompleteResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readBreadcrumbAttribute(): Long {
+  suspend fun readBreadcrumbAttribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -87,7 +85,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBreadcrumbAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeBreadcrumbAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
@@ -102,19 +100,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readRegulatoryConfigAttribute(): Integer {
+  suspend fun readRegulatoryConfigAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRegulatoryConfigAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRegulatoryConfigAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLocationCapabilityAttribute(): Integer {
+  suspend fun readLocationCapabilityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLocationCapabilityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLocationCapabilityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -170,19 +168,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralDiagnosticsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralDiagnosticsCluster.kt
index dabdd0a..83b0786 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralDiagnosticsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GeneralDiagnosticsCluster.kt
@@ -38,16 +38,16 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun testEventTrigger(enableKey: ByteArray, eventTrigger: ULong) {
-    // Implementation needs to be added here
-  }
-
   suspend fun testEventTrigger(
     enableKey: ByteArray,
     eventTrigger: ULong,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readNetworkInterfacesAttribute(): NetworkInterfacesAttribute {
@@ -61,35 +61,35 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readRebootCountAttribute(): Integer {
+  suspend fun readRebootCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRebootCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRebootCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readUpTimeAttribute(): Long {
+  suspend fun readUpTimeAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeUpTimeAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeUpTimeAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readTotalOperationalHoursAttribute(): Long {
+  suspend fun readTotalOperationalHoursAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTotalOperationalHoursAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTotalOperationalHoursAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readBootReasonAttribute(): Integer {
+  suspend fun readBootReasonAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBootReasonAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBootReasonAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -137,11 +137,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageWearCountAttribute(): Long {
+  suspend fun readAverageWearCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAverageWearCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeAverageWearCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -186,19 +186,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupKeyManagementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupKeyManagementCluster.kt
index 59aaa32..11ca30c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupKeyManagementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupKeyManagementCluster.kt
@@ -40,39 +40,44 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun keySetWrite(groupKeySet: ChipStructs.GroupKeyManagementClusterGroupKeySetStruct) {
-    // Implementation needs to be added here
-  }
-
   suspend fun keySetWrite(
     groupKeySet: ChipStructs.GroupKeyManagementClusterGroupKeySetStruct,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun keySetRead(groupKeySetID: UShort): KeySetReadResponse {
-    // Implementation needs to be added here
+  suspend fun keySetRead(
+    groupKeySetID: UShort,
+    timedInvokeTimeoutMs: Int? = null
+  ): KeySetReadResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun keySetRead(groupKeySetID: UShort, timedInvokeTimeoutMs: Int): KeySetReadResponse {
-    // Implementation needs to be added here
+  suspend fun keySetRemove(groupKeySetID: UShort, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun keySetRemove(groupKeySetID: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun keySetRemove(groupKeySetID: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun keySetReadAllIndices(): KeySetReadAllIndicesResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun keySetReadAllIndices(timedInvokeTimeoutMs: Int): KeySetReadAllIndicesResponse {
-    // Implementation needs to be added here
+  suspend fun keySetReadAllIndices(
+    timedInvokeTimeoutMs: Int? = null
+  ): KeySetReadAllIndicesResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGroupKeyMapAttribute(): GroupKeyMapAttribute {
@@ -122,19 +127,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxGroupsPerFabricAttribute(): Integer {
+  suspend fun readMaxGroupsPerFabricAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxGroupsPerFabricAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxGroupsPerFabricAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxGroupKeysPerFabricAttribute(): Integer {
+  suspend fun readMaxGroupKeysPerFabricAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxGroupKeysPerFabricAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxGroupKeysPerFabricAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -179,19 +184,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupsCluster.kt
index 53b78b3..01c1dec 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/GroupsCluster.kt
@@ -36,66 +36,70 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun addGroup(groupID: UShort, groupName: String): AddGroupResponse {
-    // Implementation needs to be added here
-  }
-
   suspend fun addGroup(
     groupID: UShort,
     groupName: String,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): AddGroupResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun viewGroup(groupID: UShort): ViewGroupResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun viewGroup(groupID: UShort, timedInvokeTimeoutMs: Int): ViewGroupResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getGroupMembership(groupList: ArrayList<UShort>): GetGroupMembershipResponse {
-    // Implementation needs to be added here
+  suspend fun viewGroup(groupID: UShort, timedInvokeTimeoutMs: Int? = null): ViewGroupResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getGroupMembership(
     groupList: ArrayList<UShort>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetGroupMembershipResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun removeGroup(groupID: UShort, timedInvokeTimeoutMs: Int? = null): RemoveGroupResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun removeAllGroups(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun addGroupIfIdentifying(
+    groupID: UShort,
+    groupName: String,
+    timedInvokeTimeoutMs: Int? = null
+  ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readNameSupportAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun removeGroup(groupID: UShort): RemoveGroupResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeGroup(groupID: UShort, timedInvokeTimeoutMs: Int): RemoveGroupResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeAllGroups() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeAllGroups(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addGroupIfIdentifying(groupID: UShort, groupName: String) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addGroupIfIdentifying(groupID: UShort, groupName: String, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readNameSupportAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeNameSupportAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeNameSupportAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -140,19 +144,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/HepaFilterMonitoringCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/HepaFilterMonitoringCluster.kt
index 20fc9b8..261d7a1 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/HepaFilterMonitoringCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/HepaFilterMonitoringCluster.kt
@@ -34,35 +34,35 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun resetCondition() {
+  suspend fun resetCondition(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readConditionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun resetCondition(timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeConditionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readConditionAttribute(): Integer {
+  suspend fun readDegradationDirectionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeConditionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDegradationDirectionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readDegradationDirectionAttribute(): Integer {
+  suspend fun readChangeIndicationAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDegradationDirectionAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readChangeIndicationAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeChangeIndicationAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeChangeIndicationAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -145,19 +145,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IcdManagementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IcdManagementCluster.kt
index 9678c6c..124385d 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IcdManagementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IcdManagementCluster.kt
@@ -38,62 +38,57 @@
     checkInNodeID: ULong,
     monitoredSubject: ULong,
     key: ByteArray,
-    verificationKey: ByteArray?
-  ): RegisterClientResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun registerClient(
-    checkInNodeID: ULong,
-    monitoredSubject: ULong,
-    key: ByteArray,
     verificationKey: ByteArray?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): RegisterClientResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun unregisterClient(checkInNodeID: ULong, verificationKey: ByteArray?) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun unregisterClient(
     checkInNodeID: ULong,
     verificationKey: ByteArray?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun stayActiveRequest(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readIdleModeDurationAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun stayActiveRequest() {
+  suspend fun subscribeIdleModeDurationAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun stayActiveRequest(timedInvokeTimeoutMs: Int) {
+  suspend fun readActiveModeDurationAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readIdleModeDurationAttribute(): Long {
+  suspend fun subscribeActiveModeDurationAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeIdleModeDurationAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun readActiveModeThresholdAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readActiveModeDurationAttribute(): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeActiveModeDurationAttribute(minInterval: Int, maxInterval: Int): Long {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readActiveModeThresholdAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeActiveModeThresholdAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActiveModeThresholdAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -114,33 +109,33 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readICDCounterAttribute(): Long {
+  suspend fun readICDCounterAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeICDCounterAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeICDCounterAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClientsSupportedPerFabricAttribute(): Integer {
+  suspend fun readClientsSupportedPerFabricAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeClientsSupportedPerFabricAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readUserActiveModeTriggerHintAttribute(): Long {
+  suspend fun readUserActiveModeTriggerHintAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeUserActiveModeTriggerHintAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -196,19 +191,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IdentifyCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IdentifyCluster.kt
index 3c6264a..1726a21 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IdentifyCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IdentifyCluster.kt
@@ -28,27 +28,27 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun identify(identifyTime: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun identify(identifyTime: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun triggerEffect(effectIdentifier: UInt, effectVariant: UInt) {
-    // Implementation needs to be added here
+  suspend fun identify(identifyTime: UShort, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun triggerEffect(
     effectIdentifier: UInt,
     effectVariant: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun readIdentifyTimeAttribute(): Integer {
+  suspend fun readIdentifyTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -60,15 +60,15 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeIdentifyTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeIdentifyTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readIdentifyTypeAttribute(): Integer {
+  suspend fun readIdentifyTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeIdentifyTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeIdentifyTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -113,19 +113,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IlluminanceMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IlluminanceMeasurementCluster.kt
index c2d4f98..5c00ce5 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IlluminanceMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/IlluminanceMeasurementCluster.kt
@@ -69,11 +69,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readToleranceAttribute(): Integer {
+  suspend fun readToleranceAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -129,19 +129,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/KeypadInputCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/KeypadInputCluster.kt
index cbb6b3e..bf2b852 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/KeypadInputCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/KeypadInputCluster.kt
@@ -30,12 +30,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun sendKey(keyCode: UInt): SendKeyResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun sendKey(keyCode: UInt, timedInvokeTimeoutMs: Int): SendKeyResponse {
-    // Implementation needs to be added here
+  suspend fun sendKey(keyCode: UInt, timedInvokeTimeoutMs: Int? = null): SendKeyResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
@@ -79,19 +79,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherControlsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherControlsCluster.kt
index f2906fd..e9f6ffa 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherControlsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherControlsCluster.kt
@@ -64,7 +64,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfRinsesAttribute(): Integer {
+  suspend fun readNumberOfRinsesAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -76,7 +76,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeNumberOfRinsesAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeNumberOfRinsesAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -132,19 +132,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherModeCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherModeCluster.kt
index 6a13b78..7e41ed9 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherModeCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LaundryWasherModeCluster.kt
@@ -38,12 +38,15 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeToMode(newMode: UByte): ChangeToModeResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int): ChangeToModeResponse {
-    // Implementation needs to be added here
+  suspend fun changeToMode(
+    newMode: UByte,
+    timedInvokeTimeoutMs: Int? = null
+  ): ChangeToModeResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readSupportedModesAttribute(): SupportedModesAttribute {
@@ -57,11 +60,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentModeAttribute(): Integer {
+  suspend fun readCurrentModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -141,19 +144,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LevelControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LevelControlCluster.kt
index 10b579a..c60bb74 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LevelControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LevelControlCluster.kt
@@ -44,23 +44,14 @@
     level: UByte,
     transitionTime: UShort?,
     optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToLevel(
-    level: UByte,
-    transitionTime: UShort?,
-    optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun move(moveMode: UInt, rate: UByte?, optionsMask: UInt, optionsOverride: UInt) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun move(
@@ -68,19 +59,13 @@
     rate: UByte?,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun step(
-    stepMode: UInt,
-    stepSize: UByte,
-    transitionTime: UShort?,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun step(
@@ -89,26 +74,21 @@
     transitionTime: UShort?,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(optionsMask: UInt, optionsOverride: UInt) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stop(optionsMask: UInt, optionsOverride: UInt, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToLevelWithOnOff(
-    level: UByte,
-    transitionTime: UShort?,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+  suspend fun stop(optionsMask: UInt, optionsOverride: UInt, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveToLevelWithOnOff(
@@ -116,18 +96,13 @@
     transitionTime: UShort?,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveWithOnOff(
-    moveMode: UInt,
-    rate: UByte?,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun moveWithOnOff(
@@ -135,19 +110,13 @@
     rate: UByte?,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stepWithOnOff(
-    stepMode: UInt,
-    stepSize: UByte,
-    transitionTime: UShort?,
-    optionsMask: UInt,
-    optionsOverride: UInt
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun stepWithOnOff(
@@ -156,25 +125,33 @@
     transitionTime: UShort?,
     optionsMask: UInt,
     optionsOverride: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stopWithOnOff(optionsMask: UInt, optionsOverride: UInt) {
-    // Implementation needs to be added here
+  suspend fun stopWithOnOff(
+    optionsMask: UInt,
+    optionsOverride: UInt,
+    timedInvokeTimeoutMs: Int? = null
+  ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stopWithOnOff(optionsMask: UInt, optionsOverride: UInt, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToClosestFrequency(frequency: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun moveToClosestFrequency(frequency: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun moveToClosestFrequency(frequency: UShort, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readCurrentLevelAttribute(): CurrentLevelAttribute {
@@ -188,55 +165,55 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readRemainingTimeAttribute(): Integer {
+  suspend fun readRemainingTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRemainingTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRemainingTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinLevelAttribute(): Integer {
+  suspend fun readMinLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxLevelAttribute(): Integer {
+  suspend fun readMaxLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentFrequencyAttribute(): Integer {
+  suspend fun readCurrentFrequencyAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentFrequencyAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentFrequencyAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinFrequencyAttribute(): Integer {
+  suspend fun readMinFrequencyAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinFrequencyAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinFrequencyAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxFrequencyAttribute(): Integer {
+  suspend fun readMaxFrequencyAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxFrequencyAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxFrequencyAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readOptionsAttribute(): Integer {
+  suspend fun readOptionsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -248,11 +225,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOptionsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOptionsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOnOffTransitionTimeAttribute(): Integer {
+  suspend fun readOnOffTransitionTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -264,7 +241,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOnOffTransitionTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOnOffTransitionTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -401,19 +378,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LocalizationConfigurationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LocalizationConfigurationCluster.kt
index e09a909..60b8968 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LocalizationConfigurationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LocalizationConfigurationCluster.kt
@@ -98,19 +98,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LowPowerCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LowPowerCluster.kt
index 3e60dd2..4dca4c5 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LowPowerCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/LowPowerCluster.kt
@@ -28,12 +28,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun sleep() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun sleep(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun sleep(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
@@ -77,19 +77,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaInputCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaInputCluster.kt
index 7bc5bf6..5e01312 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaInputCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaInputCluster.kt
@@ -30,36 +30,36 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun selectInput(index: UByte) {
-    // Implementation needs to be added here
+  suspend fun selectInput(index: UByte, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun selectInput(index: UByte, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun showInputStatus(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun showInputStatus() {
-    // Implementation needs to be added here
+  suspend fun hideInputStatus(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun showInputStatus(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun hideInputStatus() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun hideInputStatus(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun renameInput(index: UByte, name: String) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun renameInput(index: UByte, name: String, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun renameInput(index: UByte, name: String, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readInputListAttribute(): InputListAttribute {
@@ -70,11 +70,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentInputAttribute(): Integer {
+  suspend fun readCurrentInputAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentInputAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentInputAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -119,19 +119,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaPlaybackCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaPlaybackCluster.kt
index 53990b4..3769725 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaPlaybackCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/MediaPlaybackCluster.kt
@@ -42,105 +42,105 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun play(): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun play(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun play(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun pause(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun pause(): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun stop(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun pause(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun startOver(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun previous(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun next(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun startOver(): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun rewind(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun startOver(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun previous(): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun previous(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun next(): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun next(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun rewind(): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun rewind(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun fastForward(): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun fastForward(timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun skipForward(deltaPositionMilliseconds: ULong): PlaybackResponse {
-    // Implementation needs to be added here
+  suspend fun fastForward(timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun skipForward(
     deltaPositionMilliseconds: ULong,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun skipBackward(deltaPositionMilliseconds: ULong): PlaybackResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun skipBackward(
     deltaPositionMilliseconds: ULong,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun seek(position: ULong, timedInvokeTimeoutMs: Int? = null): PlaybackResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readCurrentStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun seek(position: ULong): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun seek(position: ULong, timedInvokeTimeoutMs: Int): PlaybackResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readCurrentStateAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeCurrentStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -242,19 +242,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ModeSelectCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ModeSelectCluster.kt
index f6439d6..7b32db3 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ModeSelectCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ModeSelectCluster.kt
@@ -38,12 +38,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeToMode(newMode: UByte) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readDescriptionAttribute(): CharString {
@@ -76,11 +76,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentModeAttribute(): Integer {
+  suspend fun readCurrentModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -160,19 +160,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NetworkCommissioningCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NetworkCommissioningCluster.kt
index 9d8832c..c3ffa0c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NetworkCommissioningCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NetworkCommissioningCluster.kt
@@ -61,96 +61,85 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun scanNetworks(ssid: ByteArray?, breadcrumb: ULong?): ScanNetworksResponse {
-    // Implementation needs to be added here
-  }
-
   suspend fun scanNetworks(
     ssid: ByteArray?,
     breadcrumb: ULong?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): ScanNetworksResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addOrUpdateWiFiNetwork(
-    ssid: ByteArray,
-    credentials: ByteArray,
-    breadcrumb: ULong?
-  ): NetworkConfigResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun addOrUpdateWiFiNetwork(
     ssid: ByteArray,
     credentials: ByteArray,
     breadcrumb: ULong?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NetworkConfigResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addOrUpdateThreadNetwork(
-    operationalDataset: ByteArray,
-    breadcrumb: ULong?
-  ): NetworkConfigResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun addOrUpdateThreadNetwork(
     operationalDataset: ByteArray,
     breadcrumb: ULong?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NetworkConfigResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeNetwork(networkID: ByteArray, breadcrumb: ULong?): NetworkConfigResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun removeNetwork(
     networkID: ByteArray,
     breadcrumb: ULong?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NetworkConfigResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun connectNetwork(networkID: ByteArray, breadcrumb: ULong?): ConnectNetworkResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun connectNetwork(
     networkID: ByteArray,
     breadcrumb: ULong?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): ConnectNetworkResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun reorderNetwork(
-    networkID: ByteArray,
-    networkIndex: UByte,
-    breadcrumb: ULong?
-  ): NetworkConfigResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun reorderNetwork(
     networkID: ByteArray,
     networkIndex: UByte,
     breadcrumb: ULong?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NetworkConfigResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readMaxNetworksAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxNetworksAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeMaxNetworksAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxNetworksAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -162,19 +151,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readScanMaxTimeSecondsAttribute(): Integer {
+  suspend fun readScanMaxTimeSecondsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeScanMaxTimeSecondsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeScanMaxTimeSecondsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readConnectMaxTimeSecondsAttribute(): Integer {
+  suspend fun readConnectMaxTimeSecondsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeConnectMaxTimeSecondsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeConnectMaxTimeSecondsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -238,22 +227,22 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSupportedThreadFeaturesAttribute(): Integer {
+  suspend fun readSupportedThreadFeaturesAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeSupportedThreadFeaturesAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readThreadVersionAttribute(): Integer {
+  suspend fun readThreadVersionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeThreadVersionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeThreadVersionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -298,19 +287,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NitrogenDioxideConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NitrogenDioxideConcentrationMeasurementCluster.kt
index 7db0364..a7b9f91 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NitrogenDioxideConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/NitrogenDioxideConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OccupancySensingCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OccupancySensingCluster.kt
index 33784c0..b1e422f 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OccupancySensingCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OccupancySensingCluster.kt
@@ -28,34 +28,34 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readOccupancyAttribute(): Integer {
+  suspend fun readOccupancyAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOccupancyAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOccupancyAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOccupancySensorTypeAttribute(): Integer {
+  suspend fun readOccupancySensorTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOccupancySensorTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOccupancySensorTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOccupancySensorTypeBitmapAttribute(): Integer {
+  suspend fun readOccupancySensorTypeBitmapAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeOccupancySensorTypeBitmapAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readPIROccupiedToUnoccupiedDelayAttribute(): Integer {
+  suspend fun readPIROccupiedToUnoccupiedDelayAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -70,11 +70,11 @@
   suspend fun subscribePIROccupiedToUnoccupiedDelayAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPIRUnoccupiedToOccupiedDelayAttribute(): Integer {
+  suspend fun readPIRUnoccupiedToOccupiedDelayAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -89,11 +89,11 @@
   suspend fun subscribePIRUnoccupiedToOccupiedDelayAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPIRUnoccupiedToOccupiedThresholdAttribute(): Integer {
+  suspend fun readPIRUnoccupiedToOccupiedThresholdAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -111,11 +111,11 @@
   suspend fun subscribePIRUnoccupiedToOccupiedThresholdAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readUltrasonicOccupiedToUnoccupiedDelayAttribute(): Integer {
+  suspend fun readUltrasonicOccupiedToUnoccupiedDelayAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -133,11 +133,11 @@
   suspend fun subscribeUltrasonicOccupiedToUnoccupiedDelayAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readUltrasonicUnoccupiedToOccupiedDelayAttribute(): Integer {
+  suspend fun readUltrasonicUnoccupiedToOccupiedDelayAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -155,11 +155,11 @@
   suspend fun subscribeUltrasonicUnoccupiedToOccupiedDelayAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readUltrasonicUnoccupiedToOccupiedThresholdAttribute(): Integer {
+  suspend fun readUltrasonicUnoccupiedToOccupiedThresholdAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -177,11 +177,11 @@
   suspend fun subscribeUltrasonicUnoccupiedToOccupiedThresholdAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readPhysicalContactOccupiedToUnoccupiedDelayAttribute(): Integer {
+  suspend fun readPhysicalContactOccupiedToUnoccupiedDelayAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -199,11 +199,11 @@
   suspend fun subscribePhysicalContactOccupiedToUnoccupiedDelayAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPhysicalContactUnoccupiedToOccupiedDelayAttribute(): Integer {
+  suspend fun readPhysicalContactUnoccupiedToOccupiedDelayAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -221,11 +221,11 @@
   suspend fun subscribePhysicalContactUnoccupiedToOccupiedDelayAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPhysicalContactUnoccupiedToOccupiedThresholdAttribute(): Integer {
+  suspend fun readPhysicalContactUnoccupiedToOccupiedThresholdAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -243,7 +243,7 @@
   suspend fun subscribePhysicalContactUnoccupiedToOccupiedThresholdAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
@@ -288,19 +288,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffCluster.kt
index a38157c..1a664fc 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffCluster.kt
@@ -30,61 +30,61 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun off() {
-    // Implementation needs to be added here
+  suspend fun off(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun off(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun on(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun on() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun on(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun toggle() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun toggle(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun offWithEffect(effectIdentifier: UInt, effectVariant: UByte) {
-    // Implementation needs to be added here
+  suspend fun toggle(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun offWithEffect(
     effectIdentifier: UInt,
     effectVariant: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun onWithRecallGlobalScene() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun onWithRecallGlobalScene(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun onWithTimedOff(onOffControl: UInt, onTime: UShort, offWaitTime: UShort) {
-    // Implementation needs to be added here
+  suspend fun onWithRecallGlobalScene(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun onWithTimedOff(
     onOffControl: UInt,
     onTime: UShort,
     offWaitTime: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readOnOffAttribute(): Boolean {
@@ -103,7 +103,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOnTimeAttribute(): Integer {
+  suspend fun readOnTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -115,11 +115,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOnTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOnTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readOffWaitTimeAttribute(): Integer {
+  suspend fun readOffWaitTimeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -131,7 +131,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOffWaitTimeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOffWaitTimeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -195,19 +195,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffSwitchConfigurationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffSwitchConfigurationCluster.kt
index 5547c47..6db5a92 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffSwitchConfigurationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OnOffSwitchConfigurationCluster.kt
@@ -28,15 +28,15 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readSwitchTypeAttribute(): Integer {
+  suspend fun readSwitchTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSwitchTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSwitchTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSwitchActionsAttribute(): Integer {
+  suspend fun readSwitchActionsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -48,7 +48,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSwitchActionsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSwitchActionsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -93,19 +93,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalCredentialsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalCredentialsCluster.kt
index f02704b..f63ff91 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalCredentialsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalCredentialsCluster.kt
@@ -47,48 +47,38 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun attestationRequest(attestationNonce: ByteArray): AttestationResponse {
-    // Implementation needs to be added here
-  }
-
   suspend fun attestationRequest(
     attestationNonce: ByteArray,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): AttestationResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun certificateChainRequest(certificateType: UInt): CertificateChainResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun certificateChainRequest(
     certificateType: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): CertificateChainResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun CSRRequest(CSRNonce: ByteArray, isForUpdateNOC: Boolean?): CSRResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun CSRRequest(
     CSRNonce: ByteArray,
     isForUpdateNOC: Boolean?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): CSRResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addNOC(
-    NOCValue: ByteArray,
-    ICACValue: ByteArray?,
-    IPKValue: ByteArray,
-    caseAdminSubject: ULong,
-    adminVendorId: UShort
-  ): NOCResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun addNOC(
@@ -97,45 +87,52 @@
     IPKValue: ByteArray,
     caseAdminSubject: ULong,
     adminVendorId: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NOCResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun updateNOC(NOCValue: ByteArray, ICACValue: ByteArray?): NOCResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun updateNOC(
     NOCValue: ByteArray,
     ICACValue: ByteArray?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NOCResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun updateFabricLabel(label: String): NOCResponse {
-    // Implementation needs to be added here
+  suspend fun updateFabricLabel(label: String, timedInvokeTimeoutMs: Int? = null): NOCResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun updateFabricLabel(label: String, timedInvokeTimeoutMs: Int): NOCResponse {
-    // Implementation needs to be added here
+  suspend fun removeFabric(fabricIndex: UByte, timedInvokeTimeoutMs: Int? = null): NOCResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun removeFabric(fabricIndex: UByte): NOCResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeFabric(fabricIndex: UByte, timedInvokeTimeoutMs: Int): NOCResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addTrustedRootCertificate(rootCACertificate: ByteArray) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addTrustedRootCertificate(rootCACertificate: ByteArray, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun addTrustedRootCertificate(
+    rootCACertificate: ByteArray,
+    timedInvokeTimeoutMs: Int? = null
+  ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readNOCsAttribute(): NOCsAttribute {
@@ -162,19 +159,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSupportedFabricsAttribute(): Integer {
+  suspend fun readSupportedFabricsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSupportedFabricsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSupportedFabricsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCommissionedFabricsAttribute(): Integer {
+  suspend fun readCommissionedFabricsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCommissionedFabricsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCommissionedFabricsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -189,11 +186,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentFabricIndexAttribute(): Integer {
+  suspend fun readCurrentFabricIndexAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentFabricIndexAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentFabricIndexAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -238,19 +235,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalStateCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalStateCluster.kt
index 64542a3..67a4387 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalStateCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OperationalStateCluster.kt
@@ -44,36 +44,36 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun pause(): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun pause(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun pause(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun stop(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun start(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun start(): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun start(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resume(): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resume(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun resume(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readPhaseListAttribute(): PhaseListAttribute {
@@ -117,11 +117,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOperationalStateAttribute(): Integer {
+  suspend fun readOperationalStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOperationalStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOperationalStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -177,19 +177,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateProviderCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateProviderCluster.kt
index f2d8ec6..7b252ac 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateProviderCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateProviderCluster.kt
@@ -49,47 +49,38 @@
     hardwareVersion: UShort?,
     location: String?,
     requestorCanConsent: Boolean?,
-    metadataForProvider: ByteArray?
-  ): QueryImageResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun queryImage(
-    vendorID: UShort,
-    productID: UShort,
-    softwareVersion: UInt,
-    protocolsSupported: ArrayList<UInt>,
-    hardwareVersion: UShort?,
-    location: String?,
-    requestorCanConsent: Boolean?,
     metadataForProvider: ByteArray?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): QueryImageResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun applyUpdateRequest(updateToken: ByteArray, newVersion: UInt): ApplyUpdateResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun applyUpdateRequest(
     updateToken: ByteArray,
     newVersion: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): ApplyUpdateResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun notifyUpdateApplied(updateToken: ByteArray, softwareVersion: UInt) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun notifyUpdateApplied(
     updateToken: ByteArray,
     softwareVersion: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
@@ -133,19 +124,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateRequestorCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateRequestorCluster.kt
index 3860fd3..0073fd7 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateRequestorCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OtaSoftwareUpdateRequestorCluster.kt
@@ -39,20 +39,14 @@
     vendorID: UShort,
     announcementReason: UInt,
     metadataForNode: ByteArray?,
-    endpoint: UShort
-  ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun announceOTAProvider(
-    providerNodeID: ULong,
-    vendorID: UShort,
-    announcementReason: UInt,
-    metadataForNode: ByteArray?,
     endpoint: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readDefaultOTAProvidersAttribute(): DefaultOTAProvidersAttribute {
@@ -93,11 +87,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readUpdateStateAttribute(): Integer {
+  suspend fun readUpdateStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeUpdateStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeUpdateStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -153,19 +147,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OzoneConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OzoneConcentrationMeasurementCluster.kt
index ad1f4f1..8a9f00b 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OzoneConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/OzoneConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm10ConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm10ConcentrationMeasurementCluster.kt
index 3218382..5c62e41 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm10ConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm10ConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm1ConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm1ConcentrationMeasurementCluster.kt
index eca3c3c..8cfae81 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm1ConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm1ConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm25ConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm25ConcentrationMeasurementCluster.kt
index 251190e..bcc05a2 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm25ConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/Pm25ConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceCluster.kt
index f4a7540..a1a4ca2 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceCluster.kt
@@ -52,19 +52,19 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readStatusAttribute(): Integer {
+  suspend fun readStatusAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeStatusAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOrderAttribute(): Integer {
+  suspend fun readOrderAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOrderAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOrderAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -98,11 +98,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readWiredCurrentTypeAttribute(): Integer {
+  suspend fun readWiredCurrentTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWiredCurrentTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWiredCurrentTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -117,19 +117,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readWiredNominalVoltageAttribute(): Long {
+  suspend fun readWiredNominalVoltageAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWiredNominalVoltageAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeWiredNominalVoltageAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readWiredMaximumCurrentAttribute(): Long {
+  suspend fun readWiredMaximumCurrentAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWiredMaximumCurrentAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeWiredMaximumCurrentAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -185,11 +185,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readBatChargeLevelAttribute(): Integer {
+  suspend fun readBatChargeLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatChargeLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatChargeLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -201,11 +201,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readBatReplaceabilityAttribute(): Integer {
+  suspend fun readBatReplaceabilityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatReplaceabilityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatReplaceabilityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -239,11 +239,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readBatCommonDesignationAttribute(): Integer {
+  suspend fun readBatCommonDesignationAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatCommonDesignationAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatCommonDesignationAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -263,35 +263,35 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readBatApprovedChemistryAttribute(): Integer {
+  suspend fun readBatApprovedChemistryAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatApprovedChemistryAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatApprovedChemistryAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBatCapacityAttribute(): Long {
+  suspend fun readBatCapacityAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatCapacityAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeBatCapacityAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readBatQuantityAttribute(): Integer {
+  suspend fun readBatQuantityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatQuantityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatQuantityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readBatChargeStateAttribute(): Integer {
+  suspend fun readBatChargeStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatChargeStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatChargeStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -391,19 +391,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceConfigurationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceConfigurationCluster.kt
index 34e8ca1..465df21 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceConfigurationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PowerSourceConfigurationCluster.kt
@@ -20,7 +20,7 @@
 import java.util.ArrayList
 
 class PowerSourceConfigurationCluster(private val endpointId: UShort) {
-  class SourcesAttribute(val value: ArrayList<UByte>)
+  class SourcesAttribute(val value: ArrayList<UShort>)
 
   class GeneratedCommandListAttribute(val value: ArrayList<UInt>)
 
@@ -79,19 +79,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PressureMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PressureMeasurementCluster.kt
index 52e73b9..4bbc2eb 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PressureMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PressureMeasurementCluster.kt
@@ -73,11 +73,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readToleranceAttribute(): Integer {
+  suspend fun readToleranceAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -114,19 +114,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readScaledToleranceAttribute(): Integer {
+  suspend fun readScaledToleranceAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeScaledToleranceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeScaledToleranceAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readScaleAttribute(): Integer {
+  suspend fun readScaleAttribute(): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeScaleAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeScaleAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
@@ -171,19 +171,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyConfigurationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyConfigurationCluster.kt
index 9d75f43..a4ccebc 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyConfigurationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyConfigurationCluster.kt
@@ -69,19 +69,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyDiscoveryCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyDiscoveryCluster.kt
index 2933f46..bb36d71 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyDiscoveryCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyDiscoveryCluster.kt
@@ -69,19 +69,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyValidCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyValidCluster.kt
index b7c2f43..9e0e7d8 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyValidCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ProxyValidCluster.kt
@@ -69,19 +69,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PulseWidthModulationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PulseWidthModulationCluster.kt
index f0ebebc..0183a08 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PulseWidthModulationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PulseWidthModulationCluster.kt
@@ -69,19 +69,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PumpConfigurationAndControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PumpConfigurationAndControlCluster.kt
index 3b92a86..08f4c5c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PumpConfigurationAndControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/PumpConfigurationAndControlCluster.kt
@@ -201,30 +201,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPumpStatusAttribute(): Integer {
+  suspend fun readPumpStatusAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePumpStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePumpStatusAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readEffectiveOperationModeAttribute(): Integer {
+  suspend fun readEffectiveOperationModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEffectiveOperationModeAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeEffectiveOperationModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readEffectiveControlModeAttribute(): Integer {
+  suspend fun readEffectiveControlModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEffectiveControlModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEffectiveControlModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -290,7 +287,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOperationModeAttribute(): Integer {
+  suspend fun readOperationModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -302,11 +299,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOperationModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOperationModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readControlModeAttribute(): Integer {
+  suspend fun readControlModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -318,7 +315,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeControlModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeControlModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -363,19 +360,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RadonConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RadonConcentrationMeasurementCluster.kt
index 8e3a86a..945e652 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RadonConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RadonConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAlarmCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAlarmCluster.kt
index 12d8df7..817abe4 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAlarmCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAlarmCluster.kt
@@ -28,27 +28,27 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readMaskAttribute(): Long {
+  suspend fun readMaskAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaskAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeMaskAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readStateAttribute(): Long {
+  suspend fun readStateAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeStateAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeStateAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readSupportedAttribute(): Long {
+  suspend fun readSupportedAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSupportedAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeSupportedAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -93,19 +93,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAndTemperatureControlledCabinetModeCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAndTemperatureControlledCabinetModeCluster.kt
index be0d2f7..f36b82c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAndTemperatureControlledCabinetModeCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RefrigeratorAndTemperatureControlledCabinetModeCluster.kt
@@ -39,12 +39,15 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeToMode(newMode: UByte): ChangeToModeResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int): ChangeToModeResponse {
-    // Implementation needs to be added here
+  suspend fun changeToMode(
+    newMode: UByte,
+    timedInvokeTimeoutMs: Int? = null
+  ): ChangeToModeResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readSupportedModesAttribute(): SupportedModesAttribute {
@@ -58,11 +61,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentModeAttribute(): Integer {
+  suspend fun readCurrentModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -142,19 +145,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RelativeHumidityMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RelativeHumidityMeasurementCluster.kt
index 7ad7249..d33ab1e 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RelativeHumidityMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RelativeHumidityMeasurementCluster.kt
@@ -67,11 +67,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readToleranceAttribute(): Integer {
+  suspend fun readToleranceAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -116,19 +116,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcCleanModeCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcCleanModeCluster.kt
index 183c9b4..3265616 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcCleanModeCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcCleanModeCluster.kt
@@ -36,12 +36,15 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeToMode(newMode: UByte): ChangeToModeResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int): ChangeToModeResponse {
-    // Implementation needs to be added here
+  suspend fun changeToMode(
+    newMode: UByte,
+    timedInvokeTimeoutMs: Int? = null
+  ): ChangeToModeResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readSupportedModesAttribute(): SupportedModesAttribute {
@@ -55,11 +58,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentModeAttribute(): Integer {
+  suspend fun readCurrentModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -120,19 +123,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcOperationalStateCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcOperationalStateCluster.kt
index c05135a..913d76d 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcOperationalStateCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcOperationalStateCluster.kt
@@ -46,36 +46,36 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun pause(): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun pause(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun pause(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun stop(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun start(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun stop(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun start(): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun start(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resume(): OperationalCommandResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resume(timedInvokeTimeoutMs: Int): OperationalCommandResponse {
-    // Implementation needs to be added here
+  suspend fun resume(timedInvokeTimeoutMs: Int? = null): OperationalCommandResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readPhaseListAttribute(): PhaseListAttribute {
@@ -119,11 +119,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOperationalStateAttribute(): Integer {
+  suspend fun readOperationalStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOperationalStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOperationalStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -179,19 +179,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcRunModeCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcRunModeCluster.kt
index 7e157ab..045aab8 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcRunModeCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/RvcRunModeCluster.kt
@@ -36,12 +36,15 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun changeToMode(newMode: UByte): ChangeToModeResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun changeToMode(newMode: UByte, timedInvokeTimeoutMs: Int): ChangeToModeResponse {
-    // Implementation needs to be added here
+  suspend fun changeToMode(
+    newMode: UByte,
+    timedInvokeTimeoutMs: Int? = null
+  ): ChangeToModeResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readSupportedModesAttribute(): SupportedModesAttribute {
@@ -55,11 +58,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentModeAttribute(): Integer {
+  suspend fun readCurrentModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -120,19 +123,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SampleMeiCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SampleMeiCluster.kt
index bddd578..3453b23 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SampleMeiCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SampleMeiCluster.kt
@@ -30,24 +30,24 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun ping() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun ping(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addArguments(arg1: UByte, arg2: UByte): AddArgumentsResponse {
-    // Implementation needs to be added here
+  suspend fun ping(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun addArguments(
     arg1: UByte,
     arg2: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): AddArgumentsResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readFlipFlopAttribute(): Boolean {
@@ -107,19 +107,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ScenesCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ScenesCluster.kt
index fdff3ad..11d3113 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ScenesCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ScenesCluster.kt
@@ -76,98 +76,85 @@
     sceneID: UByte,
     transitionTime: UShort,
     sceneName: String,
-    extensionFieldSets: ArrayList<ChipStructs.ScenesClusterExtensionFieldSet>
-  ): AddSceneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun addScene(
-    groupID: UShort,
-    sceneID: UByte,
-    transitionTime: UShort,
-    sceneName: String,
     extensionFieldSets: ArrayList<ChipStructs.ScenesClusterExtensionFieldSet>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): AddSceneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun viewScene(groupID: UShort, sceneID: UByte): ViewSceneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun viewScene(
     groupID: UShort,
     sceneID: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): ViewSceneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeScene(groupID: UShort, sceneID: UByte): RemoveSceneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun removeScene(
     groupID: UShort,
     sceneID: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): RemoveSceneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun removeAllScenes(groupID: UShort): RemoveAllScenesResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun removeAllScenes(groupID: UShort, timedInvokeTimeoutMs: Int): RemoveAllScenesResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun storeScene(groupID: UShort, sceneID: UByte): StoreSceneResponse {
-    // Implementation needs to be added here
+  suspend fun removeAllScenes(
+    groupID: UShort,
+    timedInvokeTimeoutMs: Int? = null
+  ): RemoveAllScenesResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun storeScene(
     groupID: UShort,
     sceneID: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): StoreSceneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun recallScene(groupID: UShort, sceneID: UByte, transitionTime: UShort?) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun recallScene(
     groupID: UShort,
     sceneID: UByte,
     transitionTime: UShort?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getSceneMembership(groupID: UShort): GetSceneMembershipResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getSceneMembership(
     groupID: UShort,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetSceneMembershipResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enhancedAddScene(
-    groupID: UShort,
-    sceneID: UByte,
-    transitionTime: UShort,
-    sceneName: String,
-    extensionFieldSets: ArrayList<ChipStructs.ScenesClusterExtensionFieldSet>
-  ): EnhancedAddSceneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enhancedAddScene(
@@ -176,31 +163,25 @@
     transitionTime: UShort,
     sceneName: String,
     extensionFieldSets: ArrayList<ChipStructs.ScenesClusterExtensionFieldSet>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): EnhancedAddSceneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun enhancedViewScene(groupID: UShort, sceneID: UByte): EnhancedViewSceneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun enhancedViewScene(
     groupID: UShort,
     sceneID: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): EnhancedViewSceneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun copyScene(
-    mode: UInt,
-    groupIdentifierFrom: UShort,
-    sceneIdentifierFrom: UByte,
-    groupIdentifierTo: UShort,
-    sceneIdentifierTo: UByte
-  ): CopySceneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun copyScene(
@@ -209,32 +190,36 @@
     sceneIdentifierFrom: UByte,
     groupIdentifierTo: UShort,
     sceneIdentifierTo: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): CopySceneResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readSceneCountAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSceneCountAttribute(): Integer {
+  suspend fun subscribeSceneCountAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSceneCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readCurrentSceneAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentSceneAttribute(): Integer {
+  suspend fun subscribeCurrentSceneAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentSceneAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readCurrentGroupAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentGroupAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeCurrentGroupAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentGroupAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -246,11 +231,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readNameSupportAttribute(): Integer {
+  suspend fun readNameSupportAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeNameSupportAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeNameSupportAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -265,19 +250,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSceneTableSizeAttribute(): Integer {
+  suspend fun readSceneTableSizeAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSceneTableSizeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSceneTableSizeAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRemainingCapacityAttribute(): Integer {
+  suspend fun readRemainingCapacityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRemainingCapacityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRemainingCapacityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -322,19 +307,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SmokeCoAlarmCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SmokeCoAlarmCluster.kt
index e9a153e..3b0e50e 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SmokeCoAlarmCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SmokeCoAlarmCluster.kt
@@ -28,51 +28,51 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun selfTestRequest() {
+  suspend fun selfTestRequest(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readExpressedStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun selfTestRequest(timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeExpressedStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readExpressedStateAttribute(): Integer {
+  suspend fun readSmokeStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeExpressedStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSmokeStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSmokeStateAttribute(): Integer {
+  suspend fun readCOStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSmokeStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCOStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCOStateAttribute(): Integer {
+  suspend fun readBatteryAlertAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCOStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBatteryAlertAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readBatteryAlertAttribute(): Integer {
+  suspend fun readDeviceMutedAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBatteryAlertAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readDeviceMutedAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeDeviceMutedAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDeviceMutedAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -92,42 +92,39 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEndOfServiceAlertAttribute(): Integer {
+  suspend fun readEndOfServiceAlertAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEndOfServiceAlertAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEndOfServiceAlertAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readInterconnectSmokeAlarmAttribute(): Integer {
+  suspend fun readInterconnectSmokeAlarmAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInterconnectSmokeAlarmAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeInterconnectSmokeAlarmAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readInterconnectCOAlarmAttribute(): Integer {
+  suspend fun readInterconnectCOAlarmAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInterconnectCOAlarmAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInterconnectCOAlarmAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readContaminationStateAttribute(): Integer {
+  suspend fun readContaminationStateAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeContaminationStateAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeContaminationStateAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSmokeSensitivityLevelAttribute(): Integer {
+  suspend fun readSmokeSensitivityLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -139,15 +136,15 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSmokeSensitivityLevelAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSmokeSensitivityLevelAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readExpiryDateAttribute(): Long {
+  suspend fun readExpiryDateAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeExpiryDateAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeExpiryDateAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -192,19 +189,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SoftwareDiagnosticsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SoftwareDiagnosticsCluster.kt
index 4b541c6..7188448 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SoftwareDiagnosticsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SoftwareDiagnosticsCluster.kt
@@ -32,12 +32,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun resetWatermarks() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resetWatermarks(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun resetWatermarks(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readThreadMetricsAttribute(): ThreadMetricsAttribute {
@@ -51,27 +51,30 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentHeapFreeAttribute(): Long {
+  suspend fun readCurrentHeapFreeAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentHeapFreeAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeCurrentHeapFreeAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentHeapUsedAttribute(): Long {
+  suspend fun readCurrentHeapUsedAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentHeapUsedAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeCurrentHeapUsedAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentHeapHighWatermarkAttribute(): Long {
+  suspend fun readCurrentHeapHighWatermarkAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentHeapHighWatermarkAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeCurrentHeapHighWatermarkAttribute(
+    minInterval: Int,
+    maxInterval: Int
+  ): ULong {
     // Implementation needs to be added here
   }
 
@@ -116,19 +119,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SwitchCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SwitchCluster.kt
index b9d3597..a7d2a5e 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SwitchCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/SwitchCluster.kt
@@ -28,27 +28,27 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readNumberOfPositionsAttribute(): Integer {
+  suspend fun readNumberOfPositionsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeNumberOfPositionsAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeNumberOfPositionsAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentPositionAttribute(): Integer {
+  suspend fun readCurrentPositionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentPositionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentPositionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMultiPressMaxAttribute(): Integer {
+  suspend fun readMultiPressMaxAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMultiPressMaxAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMultiPressMaxAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -93,19 +93,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TargetNavigatorCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TargetNavigatorCluster.kt
index e1d3dfe..1f74204 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TargetNavigatorCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TargetNavigatorCluster.kt
@@ -34,16 +34,16 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun navigateTarget(target: UByte, data: String?): NavigateTargetResponse {
-    // Implementation needs to be added here
-  }
-
   suspend fun navigateTarget(
     target: UByte,
     data: String?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): NavigateTargetResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readTargetListAttribute(): TargetListAttribute {
@@ -57,11 +57,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readCurrentTargetAttribute(): Integer {
+  suspend fun readCurrentTargetAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeCurrentTargetAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeCurrentTargetAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -106,19 +106,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureControlCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureControlCluster.kt
index ab185aa..eeb0afb 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureControlCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureControlCluster.kt
@@ -30,58 +30,58 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun setTemperature(targetTemperature: Short?, targetTemperatureLevel: UByte?) {
-    // Implementation needs to be added here
-  }
-
   suspend fun setTemperature(
     targetTemperature: Short?,
     targetTemperatureLevel: UByte?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readTemperatureSetpointAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readTemperatureSetpointAttribute(): Integer {
+  suspend fun subscribeTemperatureSetpointAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTemperatureSetpointAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readMinTemperatureAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinTemperatureAttribute(): Integer {
+  suspend fun subscribeMinTemperatureAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinTemperatureAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readMaxTemperatureAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxTemperatureAttribute(): Integer {
+  suspend fun subscribeMaxTemperatureAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxTemperatureAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun readStepAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readStepAttribute(): Integer {
+  suspend fun subscribeStepAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeStepAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readSelectedTemperatureLevelAttribute(): Integer {
+  suspend fun readSelectedTemperatureLevelAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeSelectedTemperatureLevelAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
@@ -137,19 +137,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureMeasurementCluster.kt
index 363a575..e7e758d 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TemperatureMeasurementCluster.kt
@@ -67,11 +67,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readToleranceAttribute(): Integer {
+  suspend fun readToleranceAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeToleranceAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -116,19 +116,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatCluster.kt
index 2136037..857a84b 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatCluster.kt
@@ -57,21 +57,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun setpointRaiseLower(mode: UInt, amount: Byte) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setpointRaiseLower(mode: UInt, amount: Byte, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setWeeklySchedule(
-    numberOfTransitionsForSequence: UByte,
-    dayOfWeekForSequence: UInt,
-    modeForSequence: UInt,
-    transitions: ArrayList<ChipStructs.ThermostatClusterThermostatScheduleTransition>
-  ) {
-    // Implementation needs to be added here
+  suspend fun setpointRaiseLower(mode: UInt, amount: Byte, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setWeeklySchedule(
@@ -79,29 +70,33 @@
     dayOfWeekForSequence: UInt,
     modeForSequence: UInt,
     transitions: ArrayList<ChipStructs.ThermostatClusterThermostatScheduleTransition>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun getWeeklySchedule(daysToReturn: UInt, modeToReturn: UInt): GetWeeklyScheduleResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun getWeeklySchedule(
     daysToReturn: UInt,
     modeToReturn: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): GetWeeklyScheduleResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun clearWeeklySchedule() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun clearWeeklySchedule(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun clearWeeklySchedule(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readLocalTemperatureAttribute(): LocalTemperatureAttribute {
@@ -126,75 +121,63 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOccupancyAttribute(): Integer {
+  suspend fun readOccupancyAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOccupancyAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOccupancyAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readAbsMinHeatSetpointLimitAttribute(): Integer {
+  suspend fun readAbsMinHeatSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAbsMinHeatSetpointLimitAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeAbsMinHeatSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAbsMaxHeatSetpointLimitAttribute(): Integer {
+  suspend fun readAbsMaxHeatSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAbsMaxHeatSetpointLimitAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeAbsMaxHeatSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAbsMinCoolSetpointLimitAttribute(): Integer {
+  suspend fun readAbsMinCoolSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAbsMinCoolSetpointLimitAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeAbsMinCoolSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readAbsMaxCoolSetpointLimitAttribute(): Integer {
+  suspend fun readAbsMaxCoolSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAbsMaxCoolSetpointLimitAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeAbsMaxCoolSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readPICoolingDemandAttribute(): Integer {
+  suspend fun readPICoolingDemandAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePICoolingDemandAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePICoolingDemandAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readPIHeatingDemandAttribute(): Integer {
+  suspend fun readPIHeatingDemandAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePIHeatingDemandAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribePIHeatingDemandAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readHVACSystemTypeConfigurationAttribute(): Integer {
+  suspend fun readHVACSystemTypeConfigurationAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -209,11 +192,11 @@
   suspend fun subscribeHVACSystemTypeConfigurationAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLocalTemperatureCalibrationAttribute(): Integer {
+  suspend fun readLocalTemperatureCalibrationAttribute(): Byte {
     // Implementation needs to be added here
   }
 
@@ -228,11 +211,11 @@
   suspend fun subscribeLocalTemperatureCalibrationAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readOccupiedCoolingSetpointAttribute(): Integer {
+  suspend fun readOccupiedCoolingSetpointAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -244,14 +227,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOccupiedCoolingSetpointAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeOccupiedCoolingSetpointAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readOccupiedHeatingSetpointAttribute(): Integer {
+  suspend fun readOccupiedHeatingSetpointAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -263,14 +243,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOccupiedHeatingSetpointAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeOccupiedHeatingSetpointAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readUnoccupiedCoolingSetpointAttribute(): Integer {
+  suspend fun readUnoccupiedCoolingSetpointAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -285,11 +262,11 @@
   suspend fun subscribeUnoccupiedCoolingSetpointAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readUnoccupiedHeatingSetpointAttribute(): Integer {
+  suspend fun readUnoccupiedHeatingSetpointAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -304,11 +281,11 @@
   suspend fun subscribeUnoccupiedHeatingSetpointAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinHeatSetpointLimitAttribute(): Integer {
+  suspend fun readMinHeatSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -320,11 +297,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinHeatSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinHeatSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxHeatSetpointLimitAttribute(): Integer {
+  suspend fun readMaxHeatSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -336,11 +313,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxHeatSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxHeatSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinCoolSetpointLimitAttribute(): Integer {
+  suspend fun readMinCoolSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -352,11 +329,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinCoolSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinCoolSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMaxCoolSetpointLimitAttribute(): Integer {
+  suspend fun readMaxCoolSetpointLimitAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -368,11 +345,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMaxCoolSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMaxCoolSetpointLimitAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readMinSetpointDeadBandAttribute(): Integer {
+  suspend fun readMinSetpointDeadBandAttribute(): Byte {
     // Implementation needs to be added here
   }
 
@@ -384,11 +361,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMinSetpointDeadBandAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMinSetpointDeadBandAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readRemoteSensingAttribute(): Integer {
+  suspend fun readRemoteSensingAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -400,11 +377,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRemoteSensingAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRemoteSensingAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readControlSequenceOfOperationAttribute(): Integer {
+  suspend fun readControlSequenceOfOperationAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -419,11 +396,11 @@
   suspend fun subscribeControlSequenceOfOperationAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSystemModeAttribute(): Integer {
+  suspend fun readSystemModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -435,49 +412,49 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSystemModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSystemModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readThermostatRunningModeAttribute(): Integer {
+  suspend fun readThermostatRunningModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeThermostatRunningModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeThermostatRunningModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readStartOfWeekAttribute(): Integer {
+  suspend fun readStartOfWeekAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeStartOfWeekAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeStartOfWeekAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfWeeklyTransitionsAttribute(): Integer {
+  suspend fun readNumberOfWeeklyTransitionsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfWeeklyTransitionsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfDailyTransitionsAttribute(): Integer {
+  suspend fun readNumberOfDailyTransitionsAttribute(): UByte {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeNumberOfDailyTransitionsAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readTemperatureSetpointHoldAttribute(): Integer {
+  suspend fun readTemperatureSetpointHoldAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -489,10 +466,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTemperatureSetpointHoldAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeTemperatureSetpointHoldAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -519,7 +493,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readThermostatProgrammingOperationModeAttribute(): Integer {
+  suspend fun readThermostatProgrammingOperationModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -537,26 +511,23 @@
   suspend fun subscribeThermostatProgrammingOperationModeAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readThermostatRunningStateAttribute(): Integer {
+  suspend fun readThermostatRunningStateAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeThermostatRunningStateAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeThermostatRunningStateAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readSetpointChangeSourceAttribute(): Integer {
+  suspend fun readSetpointChangeSourceAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSetpointChangeSourceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSetpointChangeSourceAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -571,14 +542,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readSetpointChangeSourceTimestampAttribute(): Long {
+  suspend fun readSetpointChangeSourceTimestampAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeSetpointChangeSourceTimestampAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -664,7 +635,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEmergencyHeatDeltaAttribute(): Integer {
+  suspend fun readEmergencyHeatDeltaAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -676,11 +647,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEmergencyHeatDeltaAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEmergencyHeatDeltaAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readACTypeAttribute(): Integer {
+  suspend fun readACTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -692,11 +663,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeACTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readACCapacityAttribute(): Integer {
+  suspend fun readACCapacityAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -708,11 +679,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACCapacityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeACCapacityAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readACRefrigerantTypeAttribute(): Integer {
+  suspend fun readACRefrigerantTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -724,11 +695,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACRefrigerantTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeACRefrigerantTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readACCompressorTypeAttribute(): Integer {
+  suspend fun readACCompressorTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -740,11 +711,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACCompressorTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeACCompressorTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readACErrorCodeAttribute(): Long {
+  suspend fun readACErrorCodeAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -756,11 +727,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACErrorCodeAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeACErrorCodeAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readACLouverPositionAttribute(): Integer {
+  suspend fun readACLouverPositionAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -772,7 +743,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACLouverPositionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeACLouverPositionAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -787,7 +758,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readACCapacityformatAttribute(): Integer {
+  suspend fun readACCapacityformatAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -799,7 +770,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeACCapacityformatAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeACCapacityformatAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -844,19 +815,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatUserInterfaceConfigurationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatUserInterfaceConfigurationCluster.kt
index 1a07633..78192bd 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatUserInterfaceConfigurationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThermostatUserInterfaceConfigurationCluster.kt
@@ -28,7 +28,7 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readTemperatureDisplayModeAttribute(): Integer {
+  suspend fun readTemperatureDisplayModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -40,14 +40,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTemperatureDisplayModeAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeTemperatureDisplayModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readKeypadLockoutAttribute(): Integer {
+  suspend fun readKeypadLockoutAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -59,11 +56,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeKeypadLockoutAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeKeypadLockoutAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readScheduleProgrammingVisibilityAttribute(): Integer {
+  suspend fun readScheduleProgrammingVisibilityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -78,7 +75,7 @@
   suspend fun subscribeScheduleProgrammingVisibilityAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UByte {
     // Implementation needs to be added here
   }
 
@@ -123,19 +120,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThreadNetworkDiagnosticsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThreadNetworkDiagnosticsCluster.kt
index a9fa281..bf26e9c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThreadNetworkDiagnosticsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/ThreadNetworkDiagnosticsCluster.kt
@@ -76,12 +76,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun resetCounts() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resetCounts(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun resetCounts(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readChannelAttribute(): ChannelAttribute {
@@ -144,11 +144,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOverrunCountAttribute(): Long {
+  suspend fun readOverrunCountAttribute(): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOverrunCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeOverrunCountAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
@@ -226,354 +226,351 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readDetachedRoleCountAttribute(): Integer {
+  suspend fun readDetachedRoleCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDetachedRoleCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDetachedRoleCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readChildRoleCountAttribute(): Integer {
+  suspend fun readChildRoleCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeChildRoleCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeChildRoleCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRouterRoleCountAttribute(): Integer {
+  suspend fun readRouterRoleCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRouterRoleCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRouterRoleCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readLeaderRoleCountAttribute(): Integer {
+  suspend fun readLeaderRoleCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLeaderRoleCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLeaderRoleCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readAttachAttemptCountAttribute(): Integer {
+  suspend fun readAttachAttemptCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeAttachAttemptCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeAttachAttemptCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPartitionIdChangeCountAttribute(): Integer {
+  suspend fun readPartitionIdChangeCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePartitionIdChangeCountAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribePartitionIdChangeCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBetterPartitionAttachAttemptCountAttribute(): Integer {
+  suspend fun readBetterPartitionAttachAttemptCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeBetterPartitionAttachAttemptCountAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readParentChangeCountAttribute(): Integer {
+  suspend fun readParentChangeCountAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeParentChangeCountAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeParentChangeCountAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxTotalCountAttribute(): Long {
+  suspend fun readTxTotalCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxTotalCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxTotalCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxUnicastCountAttribute(): Long {
+  suspend fun readTxUnicastCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxUnicastCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxUnicastCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxBroadcastCountAttribute(): Long {
+  suspend fun readTxBroadcastCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxBroadcastCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxBroadcastCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxAckRequestedCountAttribute(): Long {
+  suspend fun readTxAckRequestedCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxAckRequestedCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxAckRequestedCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxAckedCountAttribute(): Long {
+  suspend fun readTxAckedCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxAckedCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxAckedCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxNoAckRequestedCountAttribute(): Long {
+  suspend fun readTxNoAckRequestedCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxNoAckRequestedCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxNoAckRequestedCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxDataCountAttribute(): Long {
+  suspend fun readTxDataCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxDataCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxDataCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxDataPollCountAttribute(): Long {
+  suspend fun readTxDataPollCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxDataPollCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxDataPollCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxBeaconCountAttribute(): Long {
+  suspend fun readTxBeaconCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxBeaconCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxBeaconCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxBeaconRequestCountAttribute(): Long {
+  suspend fun readTxBeaconRequestCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxBeaconRequestCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxBeaconRequestCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxOtherCountAttribute(): Long {
+  suspend fun readTxOtherCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxOtherCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxOtherCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxRetryCountAttribute(): Long {
+  suspend fun readTxRetryCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxRetryCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxRetryCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxDirectMaxRetryExpiryCountAttribute(): Long {
+  suspend fun readTxDirectMaxRetryExpiryCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeTxDirectMaxRetryExpiryCountAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxIndirectMaxRetryExpiryCountAttribute(): Long {
+  suspend fun readTxIndirectMaxRetryExpiryCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeTxIndirectMaxRetryExpiryCountAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxErrCcaCountAttribute(): Long {
+  suspend fun readTxErrCcaCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxErrCcaCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxErrCcaCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxErrAbortCountAttribute(): Long {
+  suspend fun readTxErrAbortCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxErrAbortCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxErrAbortCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readTxErrBusyChannelCountAttribute(): Long {
+  suspend fun readTxErrBusyChannelCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTxErrBusyChannelCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeTxErrBusyChannelCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxTotalCountAttribute(): Long {
+  suspend fun readRxTotalCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxTotalCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxTotalCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxUnicastCountAttribute(): Long {
+  suspend fun readRxUnicastCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxUnicastCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxUnicastCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxBroadcastCountAttribute(): Long {
+  suspend fun readRxBroadcastCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxBroadcastCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxBroadcastCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxDataCountAttribute(): Long {
+  suspend fun readRxDataCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxDataCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxDataCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxDataPollCountAttribute(): Long {
+  suspend fun readRxDataPollCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxDataPollCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxDataPollCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxBeaconCountAttribute(): Long {
+  suspend fun readRxBeaconCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxBeaconCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxBeaconCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxBeaconRequestCountAttribute(): Long {
+  suspend fun readRxBeaconRequestCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxBeaconRequestCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxBeaconRequestCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxOtherCountAttribute(): Long {
+  suspend fun readRxOtherCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxOtherCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxOtherCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxAddressFilteredCountAttribute(): Long {
+  suspend fun readRxAddressFilteredCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxAddressFilteredCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxAddressFilteredCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxDestAddrFilteredCountAttribute(): Long {
+  suspend fun readRxDestAddrFilteredCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxDestAddrFilteredCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxDestAddrFilteredCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxDuplicatedCountAttribute(): Long {
+  suspend fun readRxDuplicatedCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxDuplicatedCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxDuplicatedCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxErrNoFrameCountAttribute(): Long {
+  suspend fun readRxErrNoFrameCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxErrNoFrameCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxErrNoFrameCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxErrUnknownNeighborCountAttribute(): Long {
+  suspend fun readRxErrUnknownNeighborCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeRxErrUnknownNeighborCountAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxErrInvalidSrcAddrCountAttribute(): Long {
+  suspend fun readRxErrInvalidSrcAddrCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxErrInvalidSrcAddrCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxErrInvalidSrcAddrCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxErrSecCountAttribute(): Long {
+  suspend fun readRxErrSecCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxErrSecCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxErrSecCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxErrFcsCountAttribute(): Long {
+  suspend fun readRxErrFcsCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxErrFcsCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxErrFcsCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readRxErrOtherCountAttribute(): Long {
+  suspend fun readRxErrOtherCountAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRxErrOtherCountAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeRxErrOtherCountAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -692,19 +689,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeFormatLocalizationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeFormatLocalizationCluster.kt
index 176b4a4..593223c 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeFormatLocalizationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeFormatLocalizationCluster.kt
@@ -30,7 +30,7 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readHourFormatAttribute(): Integer {
+  suspend fun readHourFormatAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -42,11 +42,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeHourFormatAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeHourFormatAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readActiveCalendarTypeAttribute(): Integer {
+  suspend fun readActiveCalendarTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -58,7 +58,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeActiveCalendarTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeActiveCalendarTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -114,19 +114,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeSynchronizationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeSynchronizationCluster.kt
index 7f49fa4..478d898 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeSynchronizationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TimeSynchronizationCluster.kt
@@ -48,64 +48,58 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun setUTCTime(UTCTime: ULong, granularity: UInt, timeSource: UInt?) {
-    // Implementation needs to be added here
-  }
-
   suspend fun setUTCTime(
     UTCTime: ULong,
     granularity: UInt,
     timeSource: UInt?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setTrustedTimeSource(
-    trustedTimeSource: ChipStructs.TimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct?
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setTrustedTimeSource(
     trustedTimeSource: ChipStructs.TimeSynchronizationClusterFabricScopedTrustedTimeSourceStruct?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setTimeZone(
-    timeZone: ArrayList<ChipStructs.TimeSynchronizationClusterTimeZoneStruct>
-  ): SetTimeZoneResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setTimeZone(
     timeZone: ArrayList<ChipStructs.TimeSynchronizationClusterTimeZoneStruct>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): SetTimeZoneResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setDSTOffset(
-    DSTOffset: ArrayList<ChipStructs.TimeSynchronizationClusterDSTOffsetStruct>
-  ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun setDSTOffset(
     DSTOffset: ArrayList<ChipStructs.TimeSynchronizationClusterDSTOffsetStruct>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ) {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun setDefaultNTP(defaultNTP: String?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun setDefaultNTP(defaultNTP: String?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun setDefaultNTP(defaultNTP: String?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readUTCTimeAttribute(): UTCTimeAttribute {
@@ -116,19 +110,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readGranularityAttribute(): Integer {
+  suspend fun readGranularityAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeGranularityAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeGranularityAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readTimeSourceAttribute(): Integer {
+  suspend fun readTimeSourceAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTimeSourceAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeTimeSourceAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -178,11 +172,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readTimeZoneDatabaseAttribute(): Integer {
+  suspend fun readTimeZoneDatabaseAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTimeZoneDatabaseAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeTimeZoneDatabaseAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -194,19 +188,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readTimeZoneListMaxSizeAttribute(): Integer {
+  suspend fun readTimeZoneListMaxSizeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTimeZoneListMaxSizeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeTimeZoneListMaxSizeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readDSTOffsetListMaxSizeAttribute(): Integer {
+  suspend fun readDSTOffsetListMaxSizeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeDSTOffsetListMaxSizeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeDSTOffsetListMaxSizeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -259,19 +253,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TotalVolatileOrganicCompoundsConcentrationMeasurementCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TotalVolatileOrganicCompoundsConcentrationMeasurementCluster.kt
index 33fecf7..948d6a5 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TotalVolatileOrganicCompoundsConcentrationMeasurementCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/TotalVolatileOrganicCompoundsConcentrationMeasurementCluster.kt
@@ -82,11 +82,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readPeakMeasuredValueWindowAttribute(): Long {
+  suspend fun readPeakMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribePeakMeasuredValueWindowAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
@@ -101,14 +101,14 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readAverageMeasuredValueWindowAttribute(): Long {
+  suspend fun readAverageMeasuredValueWindowAttribute(): UInt {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeAverageMeasuredValueWindowAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Long {
+  ): UInt {
     // Implementation needs to be added here
   }
 
@@ -120,27 +120,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementUnitAttribute(): Integer {
+  suspend fun readMeasurementUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readMeasurementMediumAttribute(): Integer {
+  suspend fun readMeasurementMediumAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeMeasurementMediumAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readLevelValueAttribute(): Integer {
+  suspend fun readLevelValueAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeLevelValueAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -185,19 +185,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitLocalizationCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitLocalizationCluster.kt
index 5a621ab..515723d 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitLocalizationCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitLocalizationCluster.kt
@@ -28,7 +28,7 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun readTemperatureUnitAttribute(): Integer {
+  suspend fun readTemperatureUnitAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -40,7 +40,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeTemperatureUnitAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeTemperatureUnitAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -85,19 +85,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitTestingCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitTestingCluster.kt
index 918c3aa8..c662147 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitTestingCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UnitTestingCluster.kt
@@ -179,70 +179,59 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun test() {
-    // Implementation needs to be added here
+  suspend fun test(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun test(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun testNotHandled(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun testNotHandled() {
-    // Implementation needs to be added here
+  suspend fun testSpecific(timedInvokeTimeoutMs: Int? = null): TestSpecificResponse {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun testNotHandled(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testSpecific(): TestSpecificResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testSpecific(timedInvokeTimeoutMs: Int): TestSpecificResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testUnknownCommand() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testUnknownCommand(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testAddArguments(arg1: UByte, arg2: UByte): TestAddArgumentsResponse {
-    // Implementation needs to be added here
+  suspend fun testUnknownCommand(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testAddArguments(
     arg1: UByte,
     arg2: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestAddArgumentsResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testSimpleArgumentRequest(arg1: Boolean): TestSimpleArgumentResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testSimpleArgumentRequest(
     arg1: Boolean,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestSimpleArgumentResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testStructArrayArgumentRequest(
-    arg1: ArrayList<ChipStructs.UnitTestingClusterNestedStructList>,
-    arg2: ArrayList<ChipStructs.UnitTestingClusterSimpleStruct>,
-    arg3: ArrayList<UInt>,
-    arg4: ArrayList<Boolean>,
-    arg5: UInt,
-    arg6: Boolean
-  ): TestStructArrayArgumentResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testStructArrayArgumentRequest(
@@ -252,136 +241,113 @@
     arg4: ArrayList<Boolean>,
     arg5: UInt,
     arg6: Boolean,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestStructArrayArgumentResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testStructArgumentRequest(
-    arg1: ChipStructs.UnitTestingClusterSimpleStruct
-  ): BooleanResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testStructArgumentRequest(
     arg1: ChipStructs.UnitTestingClusterSimpleStruct,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): BooleanResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testNestedStructArgumentRequest(
-    arg1: ChipStructs.UnitTestingClusterNestedStruct
-  ): BooleanResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testNestedStructArgumentRequest(
     arg1: ChipStructs.UnitTestingClusterNestedStruct,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): BooleanResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testListStructArgumentRequest(
-    arg1: ArrayList<ChipStructs.UnitTestingClusterSimpleStruct>
-  ): BooleanResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testListStructArgumentRequest(
     arg1: ArrayList<ChipStructs.UnitTestingClusterSimpleStruct>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): BooleanResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testListInt8UArgumentRequest(arg1: ArrayList<UByte>): BooleanResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testListInt8UArgumentRequest(
     arg1: ArrayList<UByte>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): BooleanResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testNestedStructListArgumentRequest(
-    arg1: ChipStructs.UnitTestingClusterNestedStructList
-  ): BooleanResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testNestedStructListArgumentRequest(
     arg1: ChipStructs.UnitTestingClusterNestedStructList,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): BooleanResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testListNestedStructListArgumentRequest(
-    arg1: ArrayList<ChipStructs.UnitTestingClusterNestedStructList>
-  ): BooleanResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testListNestedStructListArgumentRequest(
     arg1: ArrayList<ChipStructs.UnitTestingClusterNestedStructList>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): BooleanResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testListInt8UReverseRequest(arg1: ArrayList<UByte>): TestListInt8UReverseResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testListInt8UReverseRequest(
     arg1: ArrayList<UByte>,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestListInt8UReverseResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testEnumsRequest(arg1: UShort, arg2: UInt): TestEnumsResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testEnumsRequest(
     arg1: UShort,
     arg2: UInt,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestEnumsResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testNullableOptionalRequest(arg1: UByte?): TestNullableOptionalResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testNullableOptionalRequest(
     arg1: UByte?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestNullableOptionalResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testComplexNullableOptionalRequest(
-    nullableInt: UShort?,
-    optionalInt: UShort?,
-    nullableOptionalInt: UShort?,
-    nullableString: String?,
-    optionalString: String?,
-    nullableOptionalString: String?,
-    nullableStruct: ChipStructs.UnitTestingClusterSimpleStruct?,
-    optionalStruct: ChipStructs.UnitTestingClusterSimpleStruct?,
-    nullableOptionalStruct: ChipStructs.UnitTestingClusterSimpleStruct?,
-    nullableList: ArrayList<UInt>?,
-    optionalList: ArrayList<UInt>?,
-    nullableOptionalList: ArrayList<UInt>?
-  ): TestComplexNullableOptionalResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testComplexNullableOptionalRequest(
@@ -397,64 +363,64 @@
     nullableList: ArrayList<UInt>?,
     optionalList: ArrayList<UInt>?,
     nullableOptionalList: ArrayList<UInt>?,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestComplexNullableOptionalResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun simpleStructEchoRequest(
-    arg1: ChipStructs.UnitTestingClusterSimpleStruct
-  ): SimpleStructResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun simpleStructEchoRequest(
     arg1: ChipStructs.UnitTestingClusterSimpleStruct,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): SimpleStructResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun timedInvokeRequest(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun timedInvokeRequest(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
-  suspend fun testSimpleOptionalArgumentRequest(arg1: Boolean?) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testSimpleOptionalArgumentRequest(arg1: Boolean?, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testEmitTestEventRequest(
-    arg1: UByte,
-    arg2: UInt,
-    arg3: Boolean
-  ): TestEmitTestEventResponse {
-    // Implementation needs to be added here
+  suspend fun testSimpleOptionalArgumentRequest(arg1: Boolean?, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testEmitTestEventRequest(
     arg1: UByte,
     arg2: UInt,
     arg3: Boolean,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestEmitTestEventResponse {
-    // Implementation needs to be added here
-  }
-
-  suspend fun testEmitTestFabricScopedEventRequest(
-    arg1: UByte
-  ): TestEmitTestFabricScopedEventResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun testEmitTestFabricScopedEventRequest(
     arg1: UByte,
-    timedInvokeTimeoutMs: Int
+    timedInvokeTimeoutMs: Int? = null
   ): TestEmitTestFabricScopedEventResponse {
-    // Implementation needs to be added here
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readBooleanAttribute(): Boolean {
@@ -473,7 +439,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readBitmap8Attribute(): Integer {
+  suspend fun readBitmap8Attribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -485,11 +451,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBitmap8Attribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBitmap8Attribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readBitmap16Attribute(): Integer {
+  suspend fun readBitmap16Attribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -501,11 +467,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBitmap16Attribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeBitmap16Attribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readBitmap32Attribute(): Long {
+  suspend fun readBitmap32Attribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -517,11 +483,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBitmap32Attribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeBitmap32Attribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readBitmap64Attribute(): Long {
+  suspend fun readBitmap64Attribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -533,11 +499,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeBitmap64Attribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeBitmap64Attribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt8uAttribute(): Integer {
+  suspend fun readInt8uAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -549,11 +515,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt8uAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInt8uAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt16uAttribute(): Integer {
+  suspend fun readInt16uAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -565,11 +531,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt16uAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInt16uAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt24uAttribute(): Long {
+  suspend fun readInt24uAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -581,11 +547,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt24uAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt24uAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt32uAttribute(): Long {
+  suspend fun readInt32uAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -597,11 +563,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt32uAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt32uAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt40uAttribute(): Long {
+  suspend fun readInt40uAttribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -613,11 +579,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt40uAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt40uAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt48uAttribute(): Long {
+  suspend fun readInt48uAttribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -629,11 +595,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt48uAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt48uAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt56uAttribute(): Long {
+  suspend fun readInt56uAttribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -645,11 +611,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt56uAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt56uAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt64uAttribute(): Long {
+  suspend fun readInt64uAttribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -661,11 +627,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt64uAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt64uAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt8sAttribute(): Integer {
+  suspend fun readInt8sAttribute(): Byte {
     // Implementation needs to be added here
   }
 
@@ -677,11 +643,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt8sAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInt8sAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt16sAttribute(): Integer {
+  suspend fun readInt16sAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -693,11 +659,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt16sAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeInt16sAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt24sAttribute(): Long {
+  suspend fun readInt24sAttribute(): Int {
     // Implementation needs to be added here
   }
 
@@ -709,11 +675,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt24sAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt24sAttribute(minInterval: Int, maxInterval: Int): Int {
     // Implementation needs to be added here
   }
 
-  suspend fun readInt32sAttribute(): Long {
+  suspend fun readInt32sAttribute(): Int {
     // Implementation needs to be added here
   }
 
@@ -725,7 +691,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInt32sAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeInt32sAttribute(minInterval: Int, maxInterval: Int): Int {
     // Implementation needs to be added here
   }
 
@@ -793,7 +759,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEnum8Attribute(): Integer {
+  suspend fun readEnum8Attribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -805,11 +771,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEnum8Attribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEnum8Attribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readEnum16Attribute(): Integer {
+  suspend fun readEnum16Attribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -821,7 +787,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEnum16Attribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEnum16Attribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -980,7 +946,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEpochUsAttribute(): Long {
+  suspend fun readEpochUsAttribute(): ULong {
     // Implementation needs to be added here
   }
 
@@ -992,11 +958,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEpochUsAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeEpochUsAttribute(minInterval: Int, maxInterval: Int): ULong {
     // Implementation needs to be added here
   }
 
-  suspend fun readEpochSAttribute(): Long {
+  suspend fun readEpochSAttribute(): UInt {
     // Implementation needs to be added here
   }
 
@@ -1008,11 +974,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEpochSAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeEpochSAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readVendorIdAttribute(): Integer {
+  suspend fun readVendorIdAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -1024,7 +990,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeVendorIdAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeVendorIdAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -1053,7 +1019,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEnumAttrAttribute(): Integer {
+  suspend fun readEnumAttrAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -1065,7 +1031,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEnumAttrAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEnumAttrAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -1091,7 +1057,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readRangeRestrictedInt8uAttribute(): Integer {
+  suspend fun readRangeRestrictedInt8uAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -1103,11 +1069,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRangeRestrictedInt8uAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRangeRestrictedInt8uAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readRangeRestrictedInt8sAttribute(): Integer {
+  suspend fun readRangeRestrictedInt8sAttribute(): Byte {
     // Implementation needs to be added here
   }
 
@@ -1119,11 +1085,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRangeRestrictedInt8sAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRangeRestrictedInt8sAttribute(minInterval: Int, maxInterval: Int): Byte {
     // Implementation needs to be added here
   }
 
-  suspend fun readRangeRestrictedInt16uAttribute(): Integer {
+  suspend fun readRangeRestrictedInt16uAttribute(): UShort {
     // Implementation needs to be added here
   }
 
@@ -1135,11 +1101,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRangeRestrictedInt16uAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRangeRestrictedInt16uAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readRangeRestrictedInt16sAttribute(): Integer {
+  suspend fun readRangeRestrictedInt16sAttribute(): Short {
     // Implementation needs to be added here
   }
 
@@ -1151,7 +1117,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeRangeRestrictedInt16sAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeRangeRestrictedInt16sAttribute(minInterval: Int, maxInterval: Int): Short {
     // Implementation needs to be added here
   }
 
@@ -1897,7 +1863,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readWriteOnlyInt8uAttribute(): Integer {
+  suspend fun readWriteOnlyInt8uAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -1909,7 +1875,7 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeWriteOnlyInt8uAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeWriteOnlyInt8uAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -1954,19 +1920,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UserLabelCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UserLabelCluster.kt
index 37f2401..e15bdfe 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UserLabelCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/UserLabelCluster.kt
@@ -90,19 +90,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WakeOnLanCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WakeOnLanCluster.kt
index 94a34ee..7cd24e2 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WakeOnLanCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WakeOnLanCluster.kt
@@ -77,19 +77,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WiFiNetworkDiagnosticsCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WiFiNetworkDiagnosticsCluster.kt
index d7a7f8b..fa61490 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WiFiNetworkDiagnosticsCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WiFiNetworkDiagnosticsCluster.kt
@@ -54,12 +54,12 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun resetCounts() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun resetCounts(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
+  suspend fun resetCounts(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
   }
 
   suspend fun readBssidAttribute(): BssidAttribute {
@@ -240,19 +240,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
diff --git a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WindowCoveringCluster.kt b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WindowCoveringCluster.kt
index e90983f..d8a5453 100644
--- a/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WindowCoveringCluster.kt
+++ b/src/controller/java/generated/java/matter/devicecontroller/cluster/clusters/WindowCoveringCluster.kt
@@ -44,89 +44,95 @@
 
   class AttributeListAttribute(val value: ArrayList<UInt>)
 
-  suspend fun upOrOpen() {
+  suspend fun upOrOpen(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun downOrClose(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun stopMotion(timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun goToLiftValue(liftValue: UShort, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun goToLiftPercentage(
+    liftPercent100thsValue: UShort,
+    timedInvokeTimeoutMs: Int? = null
+  ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun goToTiltValue(tiltValue: UShort, timedInvokeTimeoutMs: Int? = null) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun goToTiltPercentage(
+    tiltPercent100thsValue: UShort,
+    timedInvokeTimeoutMs: Int? = null
+  ) {
+    if (timedInvokeTimeoutMs != null) {
+      // Do the action with timedInvokeTimeoutMs
+    } else {
+      // Do the action without timedInvokeTimeoutMs
+    }
+  }
+
+  suspend fun readTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun upOrOpen(timedInvokeTimeoutMs: Int) {
+  suspend fun subscribeTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun downOrClose() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun downOrClose(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stopMotion() {
-    // Implementation needs to be added here
-  }
-
-  suspend fun stopMotion(timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToLiftValue(liftValue: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToLiftValue(liftValue: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToLiftPercentage(liftPercent100thsValue: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToLiftPercentage(liftPercent100thsValue: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToTiltValue(tiltValue: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToTiltValue(tiltValue: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToTiltPercentage(tiltPercent100thsValue: UShort) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun goToTiltPercentage(tiltPercent100thsValue: UShort, timedInvokeTimeoutMs: Int) {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readTypeAttribute(): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun subscribeTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
-    // Implementation needs to be added here
-  }
-
-  suspend fun readPhysicalClosedLimitLiftAttribute(): Integer {
+  suspend fun readPhysicalClosedLimitLiftAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribePhysicalClosedLimitLiftAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readPhysicalClosedLimitTiltAttribute(): Integer {
+  suspend fun readPhysicalClosedLimitTiltAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribePhysicalClosedLimitTiltAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
@@ -152,33 +158,27 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfActuationsLiftAttribute(): Integer {
+  suspend fun readNumberOfActuationsLiftAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeNumberOfActuationsLiftAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeNumberOfActuationsLiftAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readNumberOfActuationsTiltAttribute(): Integer {
+  suspend fun readNumberOfActuationsTiltAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeNumberOfActuationsTiltAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeNumberOfActuationsTiltAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readConfigStatusAttribute(): Integer {
+  suspend fun readConfigStatusAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeConfigStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeConfigStatusAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -204,11 +204,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readOperationalStatusAttribute(): Integer {
+  suspend fun readOperationalStatusAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeOperationalStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeOperationalStatusAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -236,11 +236,11 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readEndProductTypeAttribute(): Integer {
+  suspend fun readEndProductTypeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeEndProductTypeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeEndProductTypeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
@@ -268,51 +268,45 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readInstalledOpenLimitLiftAttribute(): Integer {
+  suspend fun readInstalledOpenLimitLiftAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInstalledOpenLimitLiftAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeInstalledOpenLimitLiftAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstalledClosedLimitLiftAttribute(): Integer {
+  suspend fun readInstalledClosedLimitLiftAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeInstalledClosedLimitLiftAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstalledOpenLimitTiltAttribute(): Integer {
+  suspend fun readInstalledOpenLimitTiltAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeInstalledOpenLimitTiltAttribute(
-    minInterval: Int,
-    maxInterval: Int
-  ): Integer {
+  suspend fun subscribeInstalledOpenLimitTiltAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readInstalledClosedLimitTiltAttribute(): Integer {
+  suspend fun readInstalledClosedLimitTiltAttribute(): UShort {
     // Implementation needs to be added here
   }
 
   suspend fun subscribeInstalledClosedLimitTiltAttribute(
     minInterval: Int,
     maxInterval: Int
-  ): Integer {
+  ): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun readModeAttribute(): Integer {
+  suspend fun readModeAttribute(): UByte {
     // Implementation needs to be added here
   }
 
@@ -324,15 +318,15 @@
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeModeAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeModeAttribute(minInterval: Int, maxInterval: Int): UByte {
     // Implementation needs to be added here
   }
 
-  suspend fun readSafetyStatusAttribute(): Integer {
+  suspend fun readSafetyStatusAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeSafetyStatusAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeSafetyStatusAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
@@ -377,19 +371,19 @@
     // Implementation needs to be added here
   }
 
-  suspend fun readFeatureMapAttribute(): Long {
+  suspend fun readFeatureMapAttribute(): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): Long {
+  suspend fun subscribeFeatureMapAttribute(minInterval: Int, maxInterval: Int): UInt {
     // Implementation needs to be added here
   }
 
-  suspend fun readClusterRevisionAttribute(): Integer {
+  suspend fun readClusterRevisionAttribute(): UShort {
     // Implementation needs to be added here
   }
 
-  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): Integer {
+  suspend fun subscribeClusterRevisionAttribute(minInterval: Int, maxInterval: Int): UShort {
     // Implementation needs to be added here
   }
 
