You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/10/01 19:27:47 UTC

[isis] 01/02: ISIS-2158: performance regression?

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 9640770ae8195d39b5b598eda7048d23aff0696e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 1 19:52:34 2019 +0200

    ISIS-2158: performance regression?
---
 .../isis/metamodel/facetapi/MethodRemover.java     |  2 --
 .../apache/isis/metamodel/facets/FacetFactory.java | 10 --------
 .../metamodel/facets/MethodRemoverConstants.java   |  3 ---
 .../callbacks/CreatedCallbackFacetFactory.java     | 25 ++++++++-----------
 .../object/callbacks/LoadCallbackFacetFactory.java | 17 ++++++-------
 .../callbacks/PersistCallbackFacetFactory.java     | 23 ++++++++----------
 .../PersistCallbackViaSaveMethodFacetFactory.java  | 25 +++++++++----------
 .../callbacks/RemoveCallbackFacetFactory.java      | 21 +++++++---------
 .../RemoveCallbackViaDeleteMethodFacetFactory.java | 28 ++++++++++------------
 .../callbacks/UpdateCallbackFacetFactory.java      | 19 +++++++--------
 .../specloader/specimpl/FacetedMethodsBuilder.java | 14 -----------
 .../metamodel/facets/MethodRemoverForTesting.java  | 10 --------
 .../domainmodel/SpecloaderPerformanceTest.java     |  2 +-
 13 files changed, 68 insertions(+), 131 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MethodRemover.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MethodRemover.java
index 72da31b..25e224f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MethodRemover.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MethodRemover.java
@@ -54,6 +54,4 @@ public interface MethodRemover {
 
     void removeMethod(Method method);
 
-    void removeMethods(List<Method> methods);
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
index e8ea7a3..7df5cd3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactory.java
@@ -102,11 +102,6 @@ public interface FacetFactory {
             methodRemover.removeMethod(method);
         }
 
-        @Override
-        public void removeMethods(final List<Method> methods) {
-            methodRemover.removeMethods(methods);
-        }
-
     }
 
     public interface ProcessContextWithMetadataProperties<T extends FacetHolder> {
@@ -156,11 +151,6 @@ public interface FacetFactory {
             methodRemover.removeMethod(methodScope, methodName, returnType, parameterTypes);
         }
 
-        @Override
-        public void removeMethods(final List<Method> methods) {
-            methodRemover.removeMethods(methods);
-        }
-
     }
 
     /**
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodRemoverConstants.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodRemoverConstants.java
index e0d13bf..918c6c4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodRemoverConstants.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MethodRemoverConstants.java
@@ -42,8 +42,5 @@ public class MethodRemoverConstants {
         public void removeMethod(final Method method) {
         }
 
-        @Override
-        public void removeMethods(final List<Method> methods) {
-        }
     };
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
index 66cc6ff..4906041 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
@@ -19,19 +19,18 @@
 
 package org.apache.isis.metamodel.facets.object.callbacks;
 
-import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import lombok.val;
+
 public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodLiteralConstants.CREATED_PREFIX, };
@@ -42,20 +41,16 @@ public class CreatedCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
-
-        Method method = null;
-        method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
+        val method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.CREATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            facets.add(new CreatedCallbackFacetViaMethod(method, holder));
+            facets.add(new CreatedCallbackFacetViaMethod(method, facetHolder));
+            processClassContext.removeMethod(method);
         }
-
-        processClassContext.removeMethods(methods);
+        
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
index d5f503f..16c317a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/LoadCallbackFacetFactory.java
@@ -21,10 +21,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
@@ -34,6 +32,8 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
 import static org.apache.isis.metamodel.facets.MethodLiteralConstants.LOADED_PREFIX;
 import static org.apache.isis.metamodel.facets.MethodLiteralConstants.LOADING_PREFIX;
 
+import lombok.val;
+
 public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { LOADED_PREFIX, LOADING_PREFIX, };
@@ -44,26 +44,23 @@ public class LoadCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstr
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
         Method method = null;
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, LOADING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
+            processClassContext.removeMethod(method);
             facets.add(new LoadingCallbackFacetViaMethod(method, facetHolder));
         }
 
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, LOADED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
+            processClassContext.removeMethod(method);
             facets.add(new LoadedCallbackFacetViaMethod(method, facetHolder));
         }
 
-        processClassContext.removeMethods(methods);
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
index 93bc192..7bac20c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackFacetFactory.java
@@ -21,17 +21,17 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import lombok.val;
+
 public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodLiteralConstants.PERSISTED_PREFIX, MethodLiteralConstants.PERSISTING_PREFIX, };
@@ -42,17 +42,15 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
         Method method = null;
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.PERSISTING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final PersistingCallbackFacet facet = facetHolder.getFacet(PersistingCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(PersistingCallbackFacet.class);
             if (facet == null) {
                 facets.add(new PersistingCallbackFacetViaMethod(method, facetHolder));
             } else {
@@ -62,8 +60,8 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
 
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.PERSISTED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final PersistedCallbackFacet facet = facetHolder.getFacet(PersistedCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(PersistedCallbackFacet.class);
             if (facet == null) {
                 facets.add(new PersistedCallbackFacetViaMethod(method, facetHolder));
             } else {
@@ -71,7 +69,6 @@ public class PersistCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAb
             }
         }
 
-        processClassContext.removeMethods(methods);
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
index 8acda42..60a15a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/PersistCallbackViaSaveMethodFacetFactory.java
@@ -21,17 +21,17 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import lombok.val;
+
 public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodLiteralConstants.SAVED_PREFIX, MethodLiteralConstants.SAVING_PREFIX, };
@@ -42,17 +42,15 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
         Method method = null;
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.SAVING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final PersistingCallbackFacet facet = facetHolder.getFacet(PersistingCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(PersistingCallbackFacet.class);
             if (facet == null) {
                 facets.add(new PersistingCallbackFacetViaMethod(method, facetHolder));
             } else {
@@ -62,16 +60,15 @@ public class PersistCallbackViaSaveMethodFacetFactory extends MethodPrefixBasedF
 
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.SAVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final PersistedCallbackFacet facet = facetHolder.getFacet(PersistedCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(PersistedCallbackFacet.class);
             if (facet == null) {
                 facets.add(new PersistedCallbackFacetViaMethod(method, facetHolder));
             } else {
                 facet.addMethod(method);
             }
         }
-
-        processClassContext.removeMethods(methods);
+        
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
index 5a1a52f..96ccaa1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackFacetFactory.java
@@ -21,10 +21,8 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
@@ -34,6 +32,8 @@ import org.apache.isis.metamodel.methodutils.MethodScope;
 import static org.apache.isis.metamodel.facets.MethodLiteralConstants.REMOVED_PREFIX;
 import static org.apache.isis.metamodel.facets.MethodLiteralConstants.REMOVING_PREFIX;
 
+import lombok.val;
+
 public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { REMOVED_PREFIX, REMOVING_PREFIX, };
@@ -44,18 +44,16 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
         Method method = MethodFinderUtils
                 .findMethod(cls, MethodScope.OBJECT, REMOVING_PREFIX, void.class,
                         NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final RemovingCallbackFacet facet = facetHolder.getFacet(RemovingCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(RemovingCallbackFacet.class);
             if (facet == null) {
                 facets.add(new RemovingCallbackFacetViaMethod(method, facetHolder));
             } else {
@@ -65,8 +63,8 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
 
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, REMOVED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final RemovedCallbackFacet facet = facetHolder.getFacet(RemovedCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(RemovedCallbackFacet.class);
             if (facet == null) {
                 facets.add(new RemovedCallbackFacetViaMethod(method, facetHolder));
             } else {
@@ -74,7 +72,6 @@ public class RemoveCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
             }
         }
 
-        processClassContext.removeMethods(methods);
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
index b1a8dcf..52482be 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/RemoveCallbackViaDeleteMethodFacetFactory.java
@@ -21,20 +21,19 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
 import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
-import org.apache.isis.metamodel.facets.MethodLiteralConstants;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
 import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DELETED_PREFIX;
 import static org.apache.isis.metamodel.facets.MethodLiteralConstants.DELETING_PREFIX;
 
+import lombok.val;
+
 public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { DELETED_PREFIX, DELETING_PREFIX, };
@@ -45,19 +44,17 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder holder = processClassContext.getFacetHolder();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
         Method method = null;
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, DELETING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final RemovingCallbackFacet facet = holder.getFacet(RemovingCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            final RemovingCallbackFacet facet = facetHolder.getFacet(RemovingCallbackFacet.class);
             if (facet == null) {
-                facets.add(new RemovingCallbackFacetViaMethod(method, holder));
+                facets.add(new RemovingCallbackFacetViaMethod(method, facetHolder));
             } else {
                 facet.addMethod(method);
             }
@@ -65,16 +62,15 @@ public class RemoveCallbackViaDeleteMethodFacetFactory extends MethodPrefixBased
 
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, DELETED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
-            final RemovedCallbackFacet facet = holder.getFacet(RemovedCallbackFacet.class);
+            processClassContext.removeMethod(method);
+            val facet = facetHolder.getFacet(RemovedCallbackFacet.class);
             if (facet == null) {
-                facets.add(new RemovedCallbackFacetViaMethod(method, holder));
+                facets.add(new RemovedCallbackFacetViaMethod(method, facetHolder));
             } else {
                 facet.addMethod(method);
             }
         }
-
-        processClassContext.removeMethods(methods);
+        
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
index 4222fc3..eef6c3d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/callbacks/UpdateCallbackFacetFactory.java
@@ -21,17 +21,17 @@ package org.apache.isis.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facetapi.FacetUtil;
 import org.apache.isis.metamodel.facetapi.FeatureType;
 import org.apache.isis.metamodel.facets.MethodFinderUtils;
-import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.facets.MethodLiteralConstants;
+import org.apache.isis.metamodel.facets.MethodPrefixBasedFacetFactoryAbstract;
 import org.apache.isis.metamodel.methodutils.MethodScope;
 
+import lombok.val;
+
 public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbstract {
 
     private static final String[] PREFIXES = { MethodLiteralConstants.UPDATED_PREFIX, MethodLiteralConstants.UPDATING_PREFIX, };
@@ -42,26 +42,23 @@ public class UpdateCallbackFacetFactory extends MethodPrefixBasedFacetFactoryAbs
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        final List<Facet> facets = new ArrayList<Facet>();
-        final List<Method> methods = new ArrayList<Method>();
+        val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
+        val facets = new ArrayList<Facet>();
 
         Method method = null;
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.UPDATING_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
+            processClassContext.removeMethod(method);
             facets.add(new UpdatingCallbackFacetViaMethod(method, facetHolder));
         }
 
         method = MethodFinderUtils.findMethod(cls, MethodScope.OBJECT, MethodLiteralConstants.UPDATED_PREFIX, void.class, NO_PARAMETERS_TYPES);
         if (method != null) {
-            methods.add(method);
+            processClassContext.removeMethod(method);
             facets.add(new UpdatedCallbackFacetViaMethod(method, facetHolder));
         }
 
-        processClassContext.removeMethods(methods);
         FacetUtil.addFacets(facets);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/FacetedMethodsBuilder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
index 1f493cc..0164bea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/FacetedMethodsBuilder.java
@@ -101,20 +101,6 @@ public class FacetedMethodsBuilder {
             }
         }
 
-        @Override
-        public void removeMethods(final List<Method> methodsToRemove) {
-            for (int i = 0; i < methods.size(); i++) {
-                if (methods.get(i) == null) {
-                    continue;
-                }
-                for (final Method method : methodsToRemove) {
-                    if (methods.get(i).equals(method)) {
-                        methods.set(i, null);
-                        break;
-                    }
-                }
-            }
-        }
     }
 
     private final ObjectSpecificationAbstract spec;
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/MethodRemoverForTesting.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/MethodRemoverForTesting.java
index 2e2edc1..3eae982 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/MethodRemoverForTesting.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/MethodRemoverForTesting.java
@@ -88,15 +88,5 @@ public class MethodRemoverForTesting implements MethodRemover {
         return removeMethodsReturn;
     }
 
-    // ////////////////////////////////////////////////////////////
-    // removeMethods(List):void
-    // ////////////////////////////////////////////////////////////
-
-    @Override
-    public void removeMethods(final List<Method> methods) {
-        for (final Method method : methods) {
-            removeMethod(method);
-        }
-    }
 
 }
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/SpecloaderPerformanceTest.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/SpecloaderPerformanceTest.java
index 94a0202..4b12c84 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/SpecloaderPerformanceTest.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/SpecloaderPerformanceTest.java
@@ -63,7 +63,7 @@ class SpecloaderPerformanceTest {
     @Test //under constr.
     void repeatedSpecloading() {
         
-        config.getReflector().getIntrospector().setParallelize(true);
+        config.getReflector().getIntrospector().setParallelize(false);
         
         for(int i=0; i<100; ++i) {
             specificationLoader.shutdown();