diff --git a/.github/workflows/stale-issues-and-prs.yml b/.github/workflows/stale-issues-and-prs.yml
deleted file mode 100644
index db295a49b6..0000000000
--- a/.github/workflows/stale-issues-and-prs.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: 'Close stale issues and PRs'
-on:
-  workflow_dispatch:
-  schedule:
-    - cron: '30 1 * * *'
-
-jobs:
-  stale:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/stale@v9
-        with:
-          days-before-issue-stale: 60
-          days-before-pr-stale: 60
-          days-before-issue-close: 14
-          days-before-pr-close: 14
-          stale-issue-message: >
-            This issue is stale because it has been open 60 days with no activity.
-            Remove stale label or comment or this will be closed in 14 days.
-          close-issue-message: >
-            This issue was closed because it has been stalled for 14 days with no activity.
-          stale-pr-message: >
-            This PR is stale because it has been open 60 days with no activity.
-            Remove stale label or comment or this will be closed in 14 days.
-          close-pr-message: >
-            This PR was closed because it has been stalled for 10 days with no activity.
-          stale-issue-label: 'stale'
-          exempt-issue-labels: 'needs-discussion,help wanted,never stale,feature'
-          stale-pr-label: 'stale'
-          exempt-pr-labels: 'never stale'
-          operations-per-run: 500
-          ascending: true
\ No newline at end of file
diff --git a/bootstrapper-maven-plugin/pom.xml b/bootstrapper-maven-plugin/pom.xml
index 54eff9484f..203232a79f 100644
--- a/bootstrapper-maven-plugin/pom.xml
+++ b/bootstrapper-maven-plugin/pom.xml
@@ -5,7 +5,7 @@
   
     java-operator-sdk
     io.javaoperatorsdk
-    4.8.1-SNAPSHOT
+    4.8.2-SNAPSHOT
   
 
   bootstrapper
diff --git a/caffeine-bounded-cache-support/pom.xml b/caffeine-bounded-cache-support/pom.xml
index dcb293e86d..b3b15ef3c0 100644
--- a/caffeine-bounded-cache-support/pom.xml
+++ b/caffeine-bounded-cache-support/pom.xml
@@ -5,7 +5,7 @@
   
     java-operator-sdk
     io.javaoperatorsdk
-    4.8.1-SNAPSHOT
+    4.8.2-SNAPSHOT
   
   4.0.0
 
diff --git a/micrometer-support/pom.xml b/micrometer-support/pom.xml
index 0ecfd38d9c..9448f4fb34 100644
--- a/micrometer-support/pom.xml
+++ b/micrometer-support/pom.xml
@@ -5,7 +5,7 @@
   
     java-operator-sdk
     io.javaoperatorsdk
-    4.8.1-SNAPSHOT
+    4.8.2-SNAPSHOT
   
   4.0.0
 
diff --git a/operator-framework-bom/pom.xml b/operator-framework-bom/pom.xml
index 4367d104d2..64d4e47183 100644
--- a/operator-framework-bom/pom.xml
+++ b/operator-framework-bom/pom.xml
@@ -5,7 +5,7 @@
 
     io.javaoperatorsdk
     operator-framework-bom
-    4.8.1-SNAPSHOT
+    4.8.2-SNAPSHOT
     Operator SDK - Bill of Materials
     pom
     Java SDK for implementing Kubernetes operators
@@ -61,7 +61,7 @@
 
     
         1.6.13
-        3.1.0
+        3.2.1
         3.3.0
         3.6.3
     
diff --git a/operator-framework-core/pom.xml b/operator-framework-core/pom.xml
index 9f29d69e28..2f57cdfc88 100644
--- a/operator-framework-core/pom.xml
+++ b/operator-framework-core/pom.xml
@@ -6,7 +6,7 @@
   
     io.javaoperatorsdk
     java-operator-sdk
-    4.8.1-SNAPSHOT
+    4.8.2-SNAPSHOT
     ../pom.xml
   
 
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java
index 53bfc75df9..92859421eb 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java
@@ -4,6 +4,7 @@
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.function.Consumer;
 
 import org.slf4j.Logger;
@@ -24,8 +25,6 @@
 import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependent;
 import io.javaoperatorsdk.operator.processing.dependent.workflow.ManagedWorkflowFactory;
 
-import static io.javaoperatorsdk.operator.api.config.ExecutorServiceManager.newThreadPoolExecutor;
-
 /** An interface from which to retrieve configuration information. */
 public interface ConfigurationService {
 
@@ -127,14 +126,18 @@ default boolean checkCRDAndValidateLocalModel() {
     return false;
   }
 
-  int DEFAULT_RECONCILIATION_THREADS_NUMBER = 200;
+  int DEFAULT_RECONCILIATION_THREADS_NUMBER = 50;
+  /**
+   * @deprecated Not used anymore in the default implementation
+   */
+  @Deprecated(forRemoval = true)
   int MIN_DEFAULT_RECONCILIATION_THREADS_NUMBER = 10;
 
   /**
-   * The maximum number of threads the operator can spin out to dispatch reconciliation requests to
-   * reconcilers
+   * The number of threads the operator can spin out to dispatch reconciliation requests to
+   * reconcilers with the default executors
    *
-   * @return the maximum number of concurrent reconciliation threads
+   * @return the number of concurrent reconciliation threads
    */
   default int concurrentReconciliationThreads() {
     return DEFAULT_RECONCILIATION_THREADS_NUMBER;
@@ -143,17 +146,24 @@ default int concurrentReconciliationThreads() {
   /**
    * The minimum number of threads the operator starts in the thread pool for reconciliations.
    *
+   * @deprecated not used anymore by default executor implementation
    * @return the minimum number of concurrent reconciliation threads
    */
+  @Deprecated(forRemoval = true)
   default int minConcurrentReconciliationThreads() {
     return MIN_DEFAULT_RECONCILIATION_THREADS_NUMBER;
   }
 
   int DEFAULT_WORKFLOW_EXECUTOR_THREAD_NUMBER = DEFAULT_RECONCILIATION_THREADS_NUMBER;
+  /**
+   * @deprecated Not used anymore in the default implementation
+   */
+  @Deprecated(forRemoval = true)
   int MIN_DEFAULT_WORKFLOW_EXECUTOR_THREAD_NUMBER = MIN_DEFAULT_RECONCILIATION_THREADS_NUMBER;
 
   /**
-   * Retrieves the maximum number of threads the operator can spin out to be used in the workflows.
+   * Number of threads the operator can spin out to be used in the workflows with the default
+   * executor.
    *
    * @return the maximum number of concurrent workflow threads
    */
@@ -164,8 +174,10 @@ default int concurrentWorkflowExecutorThreads() {
   /**
    * The minimum number of threads the operator starts in the thread pool for workflows.
    *
+   * @deprecated not used anymore by default executor implementation
    * @return the minimum number of concurrent workflow threads
    */
+  @Deprecated(forRemoval = true)
   default int minConcurrentWorkflowExecutorThreads() {
     return MIN_DEFAULT_WORKFLOW_EXECUTOR_THREAD_NUMBER;
   }
@@ -191,13 +203,11 @@ default Metrics getMetrics() {
   }
 
   default ExecutorService getExecutorService() {
-    return newThreadPoolExecutor(minConcurrentReconciliationThreads(),
-        concurrentReconciliationThreads());
+    return Executors.newFixedThreadPool(concurrentReconciliationThreads());
   }
 
   default ExecutorService getWorkflowExecutorService() {
-    return newThreadPoolExecutor(minConcurrentWorkflowExecutorThreads(),
-        concurrentWorkflowExecutorThreads());
+    return Executors.newFixedThreadPool(concurrentWorkflowExecutorThreads());
   }
 
   default boolean closeClientOnStop() {
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java
index 5879383464..12a8a5c699 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationServiceOverrider.java
@@ -218,13 +218,21 @@ public int concurrentWorkflowExecutorThreads() {
             original.concurrentWorkflowExecutorThreads());
       }
 
+      /**
+       * @deprecated Not used anymore in the default implementation
+       */
+      @Deprecated(forRemoval = true)
       @Override
       public int minConcurrentReconciliationThreads() {
         return minConcurrentReconciliationThreads != null ? minConcurrentReconciliationThreads
             : original.minConcurrentReconciliationThreads();
       }
 
+      /**
+       * @deprecated Not used anymore in the default implementation
+       */
       @Override
+      @Deprecated(forRemoval = true)
       public int minConcurrentWorkflowExecutorThreads() {
         return minConcurrentWorkflowExecutorThreads != null ? minConcurrentWorkflowExecutorThreads
             : original.minConcurrentWorkflowExecutorThreads();
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ExecutorServiceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ExecutorServiceManager.java
index 3ea05e7e0d..112ab7188a 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ExecutorServiceManager.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ExecutorServiceManager.java
@@ -8,8 +8,6 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingDeque;
-import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.function.Function;
@@ -35,14 +33,6 @@ public class ExecutorServiceManager {
     start(configurationService);
   }
 
-  public static ExecutorService newThreadPoolExecutor(int minThreads, int maxThreads) {
-    minThreads = Utils.ensureValid(minThreads, "minimum number of threads", MIN_THREAD_NUMBER);
-    maxThreads = Utils.ensureValid(maxThreads, "maximum number of threads", minThreads + 1);
-
-    return new ThreadPoolExecutor(minThreads, maxThreads, 1, TimeUnit.MINUTES,
-        new LinkedBlockingDeque<>());
-  }
-
   /**
    * Uses cachingExecutorService from this manager. Use this only for tasks, that don't have dynamic
    * nature, in sense that won't grow with the number of inputs (thus kubernetes resources)
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/Utils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/Utils.java
index 19d8a73689..84f76d9883 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/Utils.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/Utils.java
@@ -6,7 +6,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
-import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.util.Arrays;
 import java.util.Date;
@@ -57,9 +56,7 @@ public static Version loadFromProperties() {
     try {
       String time = properties.getProperty("git.build.time");
       if (time != null) {
-        builtTime =
-            // RFC 822 date is the default format used by git-commit-id-plugin
-            new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(time);
+        builtTime = Date.from(Instant.parse(time));
       } else {
         builtTime = Date.from(Instant.EPOCH);
       }
@@ -122,9 +119,13 @@ static boolean getBooleanFromSystemPropsOrDefault(String propertyName, boolean d
   }
 
   public static Class> getFirstTypeArgumentFromExtendedClass(Class> clazz) {
+    return getTypeArgumentFromExtendedClassByIndex(clazz, 0);
+  }
+
+  public static Class> getTypeArgumentFromExtendedClassByIndex(Class> clazz, int index) {
     try {
       Type type = clazz.getGenericSuperclass();
-      return (Class>) ((ParameterizedType) type).getActualTypeArguments()[0];
+      return (Class>) ((ParameterizedType) type).getActualTypeArguments()[index];
     } catch (Exception e) {
       throw new RuntimeException(GENERIC_PARAMETER_TYPE_ERROR_PREFIX
           + clazz.getSimpleName()
@@ -193,27 +194,31 @@ private static Optional extends Class>> extractType(Class> clazz,
 
   public static Class> getFirstTypeArgumentFromSuperClassOrInterface(Class> clazz,
       Class> expectedImplementedInterface) {
+    return getTypeArgumentFromSuperClassOrInterfaceByIndex(clazz, expectedImplementedInterface, 0);
+  }
+
+  public static Class> getTypeArgumentFromSuperClassOrInterfaceByIndex(Class> clazz,
+      Class> expectedImplementedInterface, int index) {
     // first check super class if it exists
     try {
       final Class> superclass = clazz.getSuperclass();
       if (!superclass.equals(Object.class)) {
         try {
-          return getFirstTypeArgumentFromExtendedClass(clazz);
+          return getTypeArgumentFromExtendedClassByIndex(clazz, index);
         } catch (Exception e) {
           // try interfaces
           try {
-            return getFirstTypeArgumentFromInterface(clazz, expectedImplementedInterface);
+            return getTypeArgumentFromInterfaceByIndex(clazz, expectedImplementedInterface, index);
           } catch (Exception ex) {
             // try on the parent
-            return getFirstTypeArgumentFromSuperClassOrInterface(superclass,
-                expectedImplementedInterface);
+            return getTypeArgumentFromSuperClassOrInterfaceByIndex(superclass,
+                expectedImplementedInterface, index);
           }
         }
       }
-      return getFirstTypeArgumentFromInterface(clazz, expectedImplementedInterface);
+      return getTypeArgumentFromInterfaceByIndex(clazz, expectedImplementedInterface, index);
     } catch (Exception e) {
-      throw new OperatorException(
-          GENERIC_PARAMETER_TYPE_ERROR_PREFIX + clazz.getSimpleName(), e);
+      throw new OperatorException(GENERIC_PARAMETER_TYPE_ERROR_PREFIX + clazz.getSimpleName(), e);
     }
   }
 
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java
index 98f2346577..9897ee71e2 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesDependentResource.java
@@ -2,13 +2,14 @@
 
 import io.fabric8.kubernetes.api.model.GenericKubernetesResource;
 import io.fabric8.kubernetes.api.model.HasMetadata;
+import io.javaoperatorsdk.operator.api.config.Utils;
 import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
 import io.javaoperatorsdk.operator.processing.GroupVersionKind;
 
 public class GenericKubernetesDependentResource
     extends KubernetesDependentResource {
 
-  private GroupVersionKind groupVersionKind;
+  private final GroupVersionKind groupVersionKind;
 
   public GenericKubernetesDependentResource(GroupVersionKind groupVersionKind) {
     super(GenericKubernetesResource.class);
@@ -19,6 +20,13 @@ protected InformerConfiguration.InformerConfigurationBuilder getPrimaryResourceType() {
+    return (Class) Utils.getFirstTypeArgumentFromExtendedClass(getClass());
+  }
+
+  @SuppressWarnings("unused")
   public GroupVersionKind getGroupVersionKind() {
     return groupVersionKind;
   }
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java
index b804b88a30..80ed55a5ed 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java
@@ -8,15 +8,18 @@
 import org.slf4j.LoggerFactory;
 
 import io.fabric8.kubernetes.api.model.HasMetadata;
+import io.fabric8.kubernetes.api.model.Namespaced;
 import io.fabric8.kubernetes.client.dsl.Resource;
 import io.javaoperatorsdk.operator.OperatorException;
 import io.javaoperatorsdk.operator.ReconcilerUtils;
+import io.javaoperatorsdk.operator.api.config.Utils;
 import io.javaoperatorsdk.operator.api.config.dependent.Configured;
 import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
 import io.javaoperatorsdk.operator.api.reconciler.Constants;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
 import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
 import io.javaoperatorsdk.operator.api.reconciler.Ignore;
+import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
 import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected;
 import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.DependentResourceConfigurator;
 import io.javaoperatorsdk.operator.processing.dependent.AbstractEventSourceHolderDependentResource;
@@ -32,23 +35,32 @@
     converter = KubernetesDependentConverter.class)
 public abstract class KubernetesDependentResource
     extends AbstractEventSourceHolderDependentResource>
-    implements DependentResourceConfigurator> {
-
+    implements DependentResourceConfigurator>,
+    DependentResource {
   private static final Logger log = LoggerFactory.getLogger(KubernetesDependentResource.class);
-  private final ResourceUpdaterMatcher updaterMatcher;
   private final boolean garbageCollected = this instanceof GarbageCollected;
+  private final boolean usingCustomResourceUpdateMatcher = this instanceof ResourceUpdaterMatcher;
+  @SuppressWarnings("unchecked")
+  private final ResourceUpdaterMatcher updaterMatcher = usingCustomResourceUpdateMatcher
+      ? (ResourceUpdaterMatcher) this
+      : GenericResourceUpdaterMatcher.updaterMatcherFor(resourceType());
+  private final boolean clustered;
   private KubernetesDependentResourceConfig kubernetesDependentResourceConfig;
 
-  private final boolean usingCustomResourceUpdateMatcher;
-
-  @SuppressWarnings("unchecked")
   public KubernetesDependentResource(Class resourceType) {
     super(resourceType);
+    final var primaryResourceType = getPrimaryResourceType();
+    clustered = !Namespaced.class.isAssignableFrom(primaryResourceType);
+  }
 
-    usingCustomResourceUpdateMatcher = this instanceof ResourceUpdaterMatcher;
-    updaterMatcher = usingCustomResourceUpdateMatcher
-        ? (ResourceUpdaterMatcher) this
-        : GenericResourceUpdaterMatcher.updaterMatcherFor(resourceType);
+  protected KubernetesDependentResource(Class resourceType, boolean primaryIsClustered) {
+    super(resourceType);
+    clustered = primaryIsClustered;
+  }
+
+  @SuppressWarnings("unchecked")
+  protected Class getPrimaryResourceType() {
+    return (Class
) Utils.getTypeArgumentFromExtendedClassByIndex(getClass(), 1);
   }
 
   @SuppressWarnings("unchecked")
@@ -87,7 +99,7 @@ private SecondaryToPrimaryMapper getSecondaryToPrimaryMapper() {
     if (this instanceof SecondaryToPrimaryMapper) {
       return (SecondaryToPrimaryMapper) this;
     } else if (garbageCollected) {
-      return Mappers.fromOwnerReferences(false);
+      return Mappers.fromOwnerReferences(clustered);
     } else if (useNonOwnerRefBasedSecondaryToPrimaryMapping()) {
       return Mappers.fromDefaultAnnotations();
     } else {
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java
index d699ff2822..bcfaa52d1a 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java
@@ -41,6 +41,10 @@ public class SSABasedGenericKubernetesResourceMatcher {
   public static final String APPLY_OPERATION = "Apply";
   public static final String DOT_KEY = ".";
 
+  private static final List IGNORED_METADATA =
+      Arrays.asList("creationTimestamp", "deletionTimestamp",
+          "generation", "selfLink", "uid");
+
   @SuppressWarnings("unchecked")
   public static  SSABasedGenericKubernetesResourceMatcher getInstance() {
     return INSTANCE;
@@ -58,11 +62,10 @@ public static  SSABasedGenericKubernetesResourceMatcher context) {
-    var optionalManagedFieldsEntry =
-        checkIfFieldManagerExists(actual, context.getControllerConfiguration().fieldManager());
+    var optionalManagedFieldsEntry = checkIfFieldManagerExists(actual,
+        context.getControllerConfiguration().fieldManager());
     // If no field is managed by our controller, that means the controller hasn't touched the
     // resource yet and the resource probably doesn't match the desired state. Not matching here
     // means that the resource will need to be updated and since this will be done using SSA, the
@@ -86,7 +89,8 @@ public boolean matches(R actual, R desired, Context> context) {
 
     var prunedActual = new HashMap(actualMap.size());
     keepOnlyManagedFields(prunedActual, actualMap,
-        managedFieldsEntry.getFieldsV1().getAdditionalProperties(), objectMapper);
+        managedFieldsEntry.getFieldsV1().getAdditionalProperties(),
+        objectMapper);
 
     removeIrrelevantValues(desiredMap);
 
@@ -110,9 +114,8 @@ private void sanitizeState(R actual, R desired, Map actualMap) {
         for (int i = 0; i < claims; i++) {
           if (desiredStatefulSet.getSpec().getVolumeClaimTemplates().get(i).getSpec()
               .getVolumeMode() == null) {
-            Optional
-                .ofNullable(GenericKubernetesResource.get(actualMap, "spec", "volumeClaimTemplates",
-                    i, "spec"))
+            Optional.ofNullable(
+                GenericKubernetesResource.get(actualMap, "spec", "volumeClaimTemplates", i, "spec"))
                 .map(Map.class::cast).ifPresent(m -> m.remove("volumeMode"));
           }
           if (desiredStatefulSet.getSpec().getVolumeClaimTemplates().get(i).getStatus() == null) {
@@ -131,6 +134,7 @@ private static void removeIrrelevantValues(Map desiredMap) {
     var metadata = (Map) desiredMap.get(METADATA_KEY);
     metadata.remove(NAME_KEY);
     metadata.remove(NAMESPACE_KEY);
+    IGNORED_METADATA.forEach(metadata::remove);
     if (metadata.isEmpty()) {
       desiredMap.remove(METADATA_KEY);
     }
@@ -163,7 +167,8 @@ private static void keepOnlyManagedFields(Map result,
           } else {
             // basically if we should traverse further
             fillResultsAndTraverseFurther(result, actualMap, managedFields, objectMapper, key,
-                keyInActual, managedFieldValue);
+                keyInActual,
+                managedFieldValue);
           }
         } else {
           // this should handle the case when the value is complex in the actual map (not just a
@@ -181,8 +186,9 @@ private static void keepOnlyManagedFields(Map result,
 
   @SuppressWarnings("unchecked")
   private static void fillResultsAndTraverseFurther(Map result,
-      Map actualMap, Map managedFields,
-      KubernetesSerialization objectMapper, String key, String keyInActual,
+      Map actualMap,
+      Map managedFields, KubernetesSerialization objectMapper, String key,
+      String keyInActual,
       Object managedFieldValue) {
     var emptyMapValue = new HashMap();
     result.put(keyInActual, emptyMapValue);
@@ -223,8 +229,9 @@ private static void handleListKeyEntrySet(Map result,
       if (DOT_KEY.equals(listEntry.getKey())) {
         continue;
       }
-      var actualListEntry = selectListEntryBasedOnKey(keyWithoutPrefix(listEntry.getKey()),
-          actualValueList, objectMapper);
+      var actualListEntry =
+          selectListEntryBasedOnKey(keyWithoutPrefix(listEntry.getKey()), actualValueList,
+              objectMapper);
       targetValuesByIndex.put(actualListEntry.getKey(), actualListEntry.getValue());
       managedEntryByIndex.put(actualListEntry.getKey(), (Map) listEntry.getValue());
     }
@@ -301,8 +308,7 @@ private static boolean isKeyPrefixedSkippingDotKey(Set
   @SuppressWarnings("unchecked")
   private static java.util.Map.Entry> selectListEntryBasedOnKey(
       String key,
-      List