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 2018/09/04 20:25:55 UTC

[isis] 13/24: ISIS-1976: decouple metamodel's facets from AdapterManager

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

ahuber pushed a commit to branch ISIS-1976-rethink-object-adapters
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 3812bc1732481622be6fb8b9fc51fa8142f7ce7a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Sep 3 12:15:36 2018 +0200

    ISIS-1976: decouple metamodel's facets from AdapterManager
    
    introduces ObjectAdapterProvider
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-1976
---
 .../annotcfg/EncodableFacetAnnotation.java         |   6 +-
 .../annotcfg/ParseableFacetAnnotation.java         |   8 +-
 ...bleFacetAnnotationElseConfigurationFactory.java |  10 +-
 .../isis/core/metamodel/adapter/ObjectAdapter.java |  23 ++--
 .../metamodel/adapter/ObjectAdapterProvider.java   |  83 +++++++++++++
 .../core/metamodel/adapter/mgr/AdapterManager.java |  19 +--
 .../core/metamodel/facets/CollectionUtils.java     |  12 +-
 .../CollectionAccessorFacetViaAccessor.java        |   6 +-
 .../clear/CollectionClearFacetFactory.java         |  10 +-
 .../clear/CollectionClearFacetViaAccessor.java     |  13 ++-
 .../javautilcollection/CollectionFacetFactory.java |   8 +-
 .../javautilcollection/JavaArrayFacet.java         |  49 ++++----
 .../javautilcollection/JavaCollectionFacet.java    |  51 ++++----
 .../autocomplete/AutoCompleteFacetAbstract.java    |   8 +-
 ...atableObjectFacetForDomainObjectAnnotation.java |   9 +-
 .../object/encodeable/EncodableFacetAbstract.java  |  14 +--
 .../encoder/EncodableFacetUsingEncoderDecoder.java |  14 +--
 .../facets/object/mixin/MixinFacetAbstract.java    |   6 +-
 .../annotcfg/ParseableFacetFromConfiguration.java  |   4 +-
 .../parser/ParseableFacetUsingParser.java          |  16 +--
 .../RecreatableObjectFacetAbstract.java            |  37 +++---
 ...ObjectFacetDeclarativeInitializingAbstract.java | 130 ++++++---------------
 .../recreatable/RecreatableObjectFacetFactory.java |   6 +-
 ...creatableObjectFacetForViewModelAnnotation.java |   6 +-
 .../annotation/TitleAnnotationFacetFactory.java    |   6 +-
 .../annotation/TitleFacetViaTitleAnnotation.java   |  10 +-
 .../facets/object/value/ValueFacetAbstract.java    |  14 ++-
 .../ValueSemanticsProviderAndFacetAbstract.java    |   6 +-
 .../ActionParameterAutoCompleteFacetAbstract.java  |  12 +-
 .../ActionParameterAutoCompleteFacetViaMethod.java |   8 +-
 ...ParameterAutoCompleteFacetViaMethodFactory.java |   1 +
 .../ActionParameterChoicesFacetAbstract.java       |  12 +-
 ...rameterChoicesFacetDerivedFromChoicesFacet.java |   8 +-
 ...ChoicesFacetDerivedFromChoicesFacetFactory.java |   6 +-
 .../method/ActionChoicesFacetViaMethod.java        |  16 +--
 .../ActionParameterChoicesFacetViaMethod.java      |  12 +-
 .../ActionParameterDefaultsFacetViaMethod.java     |  15 +--
 ...tionParameterDefaultsFacetViaMethodFactory.java |   6 +-
 .../PropertyOrCollectionAccessorFacetAbstract.java |  12 +-
 .../accessor/PropertyAccessorFacetViaAccessor.java |   8 +-
 .../PropertyAccessorFacetViaAccessorFactory.java   |   6 +-
 .../method/PropertyAutoCompleteFacetMethod.java    |  19 ++-
 .../PropertyAutoCompleteFacetMethodFactory.java    |   6 +-
 .../method/PropertyChoicesFacetViaMethod.java      |  24 ++--
 .../PropertyChoicesFacetViaMethodFactory.java      |   6 +-
 ...pertyDefaultFacetDerivedFromDefaultedFacet.java |  18 +--
 ...PropertyDefaultFacetDerivedFromTypeFactory.java |   6 +-
 .../method/PropertyDefaultFacetViaMethod.java      |  16 +--
 .../PropertyDefaultFacetViaMethodFactory.java      |   6 +-
 .../ValueSemanticsProviderAbstractTemporal.java    |   2 +-
 .../bytes/ByteValueSemanticsProviderAbstract.java  |   2 +-
 .../chars/CharValueSemanticsProviderAbstract.java  |   2 +-
 .../value/color/ColorValueSemanticsProvider.java   |   2 +-
 .../Jdk8LocalDateValueSemanticsProvider.java       |   2 +-
 .../JodaLocalDateValueSemanticsProvider.java       |   2 +-
 .../Jdk8LocalDateTimeValueSemanticsProvider.java   |   2 +-
 .../JodaLocalDateTimeValueSemanticsProvider.java   |   2 +-
 .../DoubleValueSemanticsProviderAbstract.java      |   2 +-
 .../FloatValueSemanticsProviderAbstract.java       |   2 +-
 .../value/image/ImageValueSemanticsProvider.java   |   2 +-
 .../JavaAwtImageValueSemanticsProvider.java        |   2 +-
 .../integer/IntValueSemanticsProviderAbstract.java |   2 +-
 .../LocalResourcePathValueSemanticsProvider.java   |   2 +-
 .../longs/LongValueSemanticsProviderAbstract.java  |   2 +-
 .../value/markup/MarkupValueSemanticsProvider.java |   2 +-
 .../value/money/MoneyValueSemanticsProvider.java   |   2 +-
 .../password/PasswordValueSemanticsProvider.java   |   2 +-
 .../PercentageValueSemanticsProvider.java          |   2 +-
 .../ShortValueSemanticsProviderAbstract.java       |   2 +-
 .../value/string/StringValueSemanticsProvider.java |   2 +-
 .../value/url/URLValueSemanticsProvider.java       |   2 +-
 .../value/uuid/UUIDValueSemanticsProvider.java     |   2 +-
 ...onParameterDefaultsAndChoicesPostProcessor.java |   6 +-
 ...arameterChoicesFacetFromParentedCollection.java |   6 +-
 .../PersistenceSessionServiceInternal.java         |   7 +-
 .../PersistenceSessionServiceInternalNoop.java     |  31 ++---
 .../metamodel/specloader/SpecificationLoader.java  |   2 +-
 .../specimpl/ObjectActionParameterAbstract.java    |  16 +--
 .../system/persistence/PersistenceSession4.java    |   5 +
 .../system/persistence/PersistenceSession5.java    |   5 +
 .../PersistenceSessionServiceInternalDefault.java  |  38 ++----
 81 files changed, 489 insertions(+), 480 deletions(-)

diff --git a/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java b/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
index 2d4bcf4..7e6c280 100644
--- a/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
+++ b/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotation.java
@@ -23,7 +23,7 @@ import com.google.common.base.Strings;
 
 import org.apache.isis.applib.annotation.Encodable;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncoderDecoderUtil;
@@ -49,8 +49,8 @@ public class EncodableFacetAnnotation extends EncodableFacetAbstract {
         this(encoderDecoderName(annotatedClass, servicesInjector.getConfigurationServiceInternal()), encoderDecoderClass(annotatedClass), holder, servicesInjector.getPersistenceSessionServiceInternal(), servicesInjector);
     }
 
-    private EncodableFacetAnnotation(final String candidateEncoderDecoderName, final Class<?> candidateEncoderDecoderClass, final FacetHolder holder, final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
-        super(candidateEncoderDecoderName, candidateEncoderDecoderClass, holder, adapterManager, dependencyInjector);
+    private EncodableFacetAnnotation(final String candidateEncoderDecoderName, final Class<?> candidateEncoderDecoderClass, final FacetHolder holder, final ObjectAdapterProvider adapterProvider, final ServicesInjector dependencyInjector) {
+        super(candidateEncoderDecoderName, candidateEncoderDecoderClass, holder, adapterProvider, dependencyInjector);
     }
 
 }
diff --git a/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java b/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
index e74de68..f667f46 100644
--- a/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
+++ b/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotation.java
@@ -23,7 +23,7 @@ import com.google.common.base.Strings;
 
 import org.apache.isis.applib.annotation.Parseable;
 import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacetAbstract;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParserUtil;
@@ -49,17 +49,17 @@ public class ParseableFacetAnnotation extends ParseableFacetAbstract {
             final Class<?> annotatedClass,
             final IsisConfiguration configuration,
             final FacetHolder holder,
-            final AdapterManager adapterManager,
+            final ObjectAdapterProvider adapterProvider,
             final ServicesInjector dependencyInjector) {
         this(parserName(annotatedClass, configuration), parserClass(annotatedClass), holder,
-                adapterManager, dependencyInjector);
+                adapterProvider, dependencyInjector);
     }
 
     private ParseableFacetAnnotation(
             final String candidateParserName,
             final Class<?> candidateParserClass,
             final FacetHolder holder,
-            final AdapterManager adapterManager,
+            final ObjectAdapterProvider adapterProvider,
             final ServicesInjector dependencyInjector) {
         super(candidateParserName, candidateParserClass, holder, dependencyInjector);
     }
diff --git a/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java b/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
index 77d29e3..624d046 100644
--- a/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
+++ b/core/legacy/metamodel-legacy/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
@@ -38,8 +38,6 @@ import com.google.common.base.Strings;
 @Deprecated
 public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFactoryAbstract {
 
-
-
     public ParseableFacetAnnotationElseConfigurationFactory() {
         super(FeatureType.OBJECTS_ONLY);
     }
@@ -55,7 +53,7 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
         // create from annotation, if present
         if (annotation != null) {
             final ParseableFacetAnnotation facet = new ParseableFacetAnnotation(cls, getConfiguration(), holder,
-                    adapterManager, servicesInjector);
+                    adapterProvider, servicesInjector);
             if (facet.isValid()) {
                 return facet;
             }
@@ -65,7 +63,7 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
         final String parserName = ParserUtil.parserNameFromConfiguration(cls, getConfiguration());
         if (!Strings.isNullOrEmpty(parserName)) {
             final ParseableFacetFromConfiguration facet = new ParseableFacetFromConfiguration(parserName, holder,
-                    servicesInjector, adapterManager);
+                    servicesInjector, adapterProvider);
             if (facet.isValid()) {
                 return facet;
             }
@@ -78,9 +76,9 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index a435c24..ddc4dfb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -410,19 +410,26 @@ public interface ObjectAdapter extends Instance {
          * <li>if the method does not declare all parameters for arguments, then truncates arguments.
          * </ul>
          */
-        public static Object invokeAutofit(final Method method, final ObjectAdapter target, List<ObjectAdapter> argumentsIfAvailable, final AdapterManager adapterManager) {
+        public static Object invokeAutofit(
+                final Method method, 
+                final ObjectAdapter target, 
+                List<ObjectAdapter> argumentsIfAvailable, 
+                final ObjectAdapterProvider adapterProvider) {
+            
             final List<ObjectAdapter> args = _Lists.newArrayList();
             if(argumentsIfAvailable != null) {
                 args.addAll(argumentsIfAvailable);
             }
 
-            adjust(method, args, adapterManager);
+            adjust(method, args, adapterProvider);
 
             final ObjectAdapter[] argArray = args.toArray(new ObjectAdapter[]{});
             return invoke(method, target, argArray);
         }
 
-        private static void adjust(final Method method, final List<ObjectAdapter> args, final AdapterManager adapterManager) {
+        private static void adjust(
+                final Method method, final List<ObjectAdapter> args, final ObjectAdapterProvider adapterProvider) {
+            
             final Class<?>[] parameterTypes = method.getParameterTypes();
             ListExtensions.adjust(args, parameterTypes.length);
 
@@ -430,7 +437,7 @@ public interface ObjectAdapter extends Instance {
                 final Class<?> cls = parameterTypes[i];
                 if(args.get(i) == null && cls.isPrimitive()) {
                     final Object object = ClassExtensions.toDefault(cls);
-                    final ObjectAdapter adapter = adapterManager.adapterFor(object);
+                    final ObjectAdapter adapter = adapterProvider.adapterFor(object);
                     args.set(i, adapter);
                 }
             }
@@ -476,16 +483,16 @@ public interface ObjectAdapter extends Instance {
             return Util::unwrap;
         }
 
-        public static Function<Object, ObjectAdapter> adapterForUsing(final AdapterManager adapterManager) {
-            return adapterManager::adapterFor;
+        public static Function<Object, ObjectAdapter> adapterForUsing(final ObjectAdapterProvider adapterProvider) {
+            return adapterProvider::adapterFor;
         }
 
         @Deprecated
-        public static com.google.common.base.Function<Object, ObjectAdapter> adapter_ForUsing(final AdapterManager adapterManager) {
+        public static com.google.common.base.Function<Object, ObjectAdapter> adapter_ForUsing(final ObjectAdapterProvider adapterProvider) {
             return new com.google.common.base.Function<Object, ObjectAdapter>() {
                 @Override
                 public ObjectAdapter apply(final Object pojo) {
-                    return adapterManager.adapterFor(pojo);
+                    return adapterProvider.adapterFor(pojo);
                 }
             };
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
new file mode 100644
index 0000000..bba25d7
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapterProvider.java
@@ -0,0 +1,83 @@
+package org.apache.isis.core.metamodel.adapter;
+
+import java.util.UUID;
+import java.util.function.Function;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+
+/**
+ * 
+ * @since 2.0.0-M2
+ *
+ */
+public interface ObjectAdapterProvider {
+
+    /**
+     * @return standalone (value) or root adapter
+     */
+    @Programmatic
+    ObjectAdapter adapterFor(Object domainObject);
+
+    /**
+     * @return collection adapter.
+     */
+    @Programmatic
+    ObjectAdapter adapterFor(
+            final Object pojo,
+            final ObjectAdapter parentAdapter,
+            OneToManyAssociation collection);
+
+    @Programmatic
+    default ObjectSpecification specificationForViewModel(
+            final SpecificationLoader specificationLoader, 
+            final Object viewModelPojo) {
+        
+        //FIXME[ISIS-1976]
+        // this is horrible, but there's a catch-22 here...
+        // we need an adapter in order to query the state of the object via the metamodel, on the other hand
+        // we can't create an adapter without the identifier, which is what we're trying to derive
+        // so... we create a temporary transient adapter, use it to wrap this adapter and interrogate this pojo,
+        // then throw away that adapter (remove from the adapter map)
+        final boolean[] createdTemporaryAdapter = {false};
+        final ObjectAdapter viewModelAdapter = adapterForViewModel(
+                specificationLoader,
+                viewModelPojo, 
+                (ObjectSpecId objectSpecId)->{
+                    createdTemporaryAdapter[0] = true;
+                    return RootOid.create(objectSpecId, UUID.randomUUID().toString()); });
+
+        final ObjectSpecification spec = viewModelAdapter.getSpecification();
+        
+        if(createdTemporaryAdapter[0]) {
+            adapterManager().removeAdapterFromCache(viewModelAdapter);
+        }
+        return spec;
+    }
+
+    default ObjectAdapter adapterForViewModel(
+            final SpecificationLoader specificationLoader,
+            final Object viewModelPojo, 
+            final Function<ObjectSpecId, RootOid> rootOidFactory) {
+
+        ObjectAdapter viewModelAdapter = adapterManager().lookupAdapterFor(viewModelPojo);
+        if(viewModelAdapter == null) {
+            final ObjectSpecification objectSpecification = 
+                    specificationLoader.loadSpecification(viewModelPojo.getClass());
+            final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
+            final RootOid newRootOid = rootOidFactory.apply(objectSpecId);
+
+            viewModelAdapter = adapterManager().addRecreatedPojoToCache(newRootOid, viewModelPojo);
+        }
+        return viewModelAdapter;
+    }
+    
+    @Deprecated // don't expose caching
+    AdapterManager adapterManager();
+
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
index f9eaa32..0284fbe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManager.java
@@ -24,26 +24,11 @@ import java.util.concurrent.Callable;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 
-public interface AdapterManager {
+public interface AdapterManager extends ObjectAdapterProvider {
 
-    /**
-     * @return standalone (value) or root adapter
-     */
-    @Programmatic
-    ObjectAdapter adapterFor(Object domainObject);
-
-    /**
-     * @return collection adapter.
-     */
-    @Programmatic
-    ObjectAdapter adapterFor(
-            final Object pojo,
-            final ObjectAdapter parentAdapter,
-            OneToManyAssociation collection);
-    
 
     enum ConcurrencyChecking {
         NO_CHECK,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/CollectionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/CollectionUtils.java
index 68134fc..fceda63 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/CollectionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/CollectionUtils.java
@@ -35,26 +35,26 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.function.Function;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._With;
 import org.apache.isis.commons.internal.collections._Arrays;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-
 public final class CollectionUtils {
 
     private CollectionUtils() {
     }
 
-    public static Object[] getCollectionAsObjectArray(final Object option, final ObjectSpecification spec, final AdapterManager adapterMap) {
-        final ObjectAdapter collection = adapterMap.adapterFor(option);
+    public static Object[] getCollectionAsObjectArray(final Object option, final ObjectSpecification spec, final ObjectAdapterProvider adapterProvider) {
+        final ObjectAdapter collection = adapterProvider.adapterFor(option);
         final CollectionFacet facet = CollectionFacet.Utils.getCollectionFacetFromSpec(collection);
         final Object[] optionArray = new Object[facet.size(collection)];
         int j = 0;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 78ef1b5..957c44b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -27,7 +27,7 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -51,7 +51,7 @@ implements ImperativeFacet {
             final IsisConfiguration isisConfiguration,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterManager) {
         super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
         this.method = method;
     }
@@ -76,7 +76,7 @@ implements ImperativeFacet {
             final InteractionInitiatedBy interactionInitiatedBy) {
         final Object collectionOrArray = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
 
-        final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
 
         boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
         if(filterForVisibility) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
index 7e1c3e0..3ab2f6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetFactory.java
@@ -61,11 +61,13 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
         FacetUtil.addFacet(createCollectionClearFacet(method, getMethod, collection));
     }
 
-    private CollectionClearFacet createCollectionClearFacet(final Method clearMethodIfAny, final Method accessorMethod, final FacetHolder collection) {
+    private CollectionClearFacet createCollectionClearFacet(
+            final Method clearMethodIfAny, final Method accessorMethod, final FacetHolder collection) {
+        
         if (clearMethodIfAny != null) {
             return new CollectionClearFacetViaClearMethod(clearMethodIfAny, collection);
         } else {
-            return new CollectionClearFacetViaAccessor(accessorMethod, collection, adapterManager);
+            return new CollectionClearFacetViaAccessor(accessorMethod, collection, adapterProvider);
         }
     }
 
@@ -77,10 +79,10 @@ public class CollectionClearFacetFactory extends MethodPrefixBasedFacetFactoryAb
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
index 451b51d..a83fb7a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/clear/CollectionClearFacetViaAccessor.java
@@ -25,7 +25,7 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacetAbstract;
@@ -33,15 +33,16 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearF
 public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstract implements ImperativeFacet {
 
     private final Method method;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public CollectionClearFacetViaAccessor(
             final Method method,
             final FacetHolder holder,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
+        
         super(holder);
         this.method = method;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     /**
@@ -73,8 +74,8 @@ public class CollectionClearFacetViaAccessor extends CollectionClearFacetAbstrac
     // Dependencies (from constructor)
     // /////////////////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
index d924fac..55b8e26 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
@@ -63,7 +63,7 @@ public class CollectionFacetFactory extends FacetFactoryAbstract {
                     facetHolder.addFacet(typeOfFacet);
         }
 
-        final CollectionFacet collectionFacet = new JavaCollectionFacet(facetHolder, adapterManager);
+        final CollectionFacet collectionFacet = new JavaCollectionFacet(facetHolder, adapterProvider);
 
         facetHolder.addFacet(collectionFacet);
     }
@@ -72,7 +72,7 @@ public class CollectionFacetFactory extends FacetFactoryAbstract {
         final Class<?> cls = processClassContext.getCls();
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
-        final CollectionFacet collectionFacet = new JavaArrayFacet(facetHolder, adapterManager);
+        final CollectionFacet collectionFacet = new JavaArrayFacet(facetHolder, adapterProvider);
         facetHolder.addFacet(collectionFacet);
 
         final TypeOfFacet typeOfFacet =
@@ -93,9 +93,9 @@ public class CollectionFacetFactory extends FacetFactoryAbstract {
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
index 0e82f13..be02897 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
@@ -19,46 +19,52 @@
 
 package org.apache.isis.core.metamodel.facets.collections.javautilcollection;
 
+import static org.apache.isis.commons.internal.base._NullSafe.isEmpty;
+
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
 
 public class JavaArrayFacet extends CollectionFacetAbstract {
 
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
-    public JavaArrayFacet(final FacetHolder holder, final AdapterManager adapterManager) {
+    public JavaArrayFacet(final FacetHolder holder, final ObjectAdapterProvider adapterProvider) {
         super(holder);
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     /**
      * Expected to be called with a {@link ObjectAdapter} wrapping an array.
      */
     @Override
-    public void init(final ObjectAdapter collectionAdapter, final ObjectAdapter[] initData) {
+    public void init(final ObjectAdapter arrayAdapter, final ObjectAdapter[] initData) {
         final int length = initData.length;
         final Object[] array = new Object[length];
         for (int i = 0; i < length; i++) {
             array[i] = initData[i].getObject();
         }
-        collectionAdapter.replacePojo(array);
+        arrayAdapter.replacePojo(array);
     }
 
     /**
      * Expected to be called with a {@link ObjectAdapter} wrapping an array.
      */
     @Override
-    public Collection<ObjectAdapter> collection(final ObjectAdapter collectionAdapter) {
-        final Object[] array = array(collectionAdapter);
+    public Collection<ObjectAdapter> collection(final ObjectAdapter arrayAdapter) {
+        final Object[] array = pojoArray(arrayAdapter);
+        if(isEmpty(array)) {
+            return Collections.emptyList();
+        }
         final ArrayList<ObjectAdapter> objectCollection = new ArrayList<ObjectAdapter>(array.length);
-        for (final Object element2 : array) {
-            final ObjectAdapter element = getAdapterManager().lookupAdapterFor(element2);
-            objectCollection.add(element);
+        for (final Object element : array) {
+            final ObjectAdapter elementAdapter = getObjectAdapterProvider().adapterFor(element);
+            objectCollection.add(elementAdapter);
         }
         return objectCollection;
     }
@@ -67,29 +73,32 @@ public class JavaArrayFacet extends CollectionFacetAbstract {
      * Expected to be called with a {@link ObjectAdapter} wrapping an array.
      */
     @Override
-    public ObjectAdapter firstElement(final ObjectAdapter collectionAdapter) {
-        final Object[] array = array(collectionAdapter);
-        return array.length > 0 ? getAdapterManager().lookupAdapterFor(array[0]) : null;
+    public ObjectAdapter firstElement(final ObjectAdapter arrayAdapter) {
+        final Object[] array = pojoArray(arrayAdapter);
+        if(isEmpty(array)) {
+            return null;
+        }
+        return array.length > 0 ? getObjectAdapterProvider().adapterFor(array[0]) : null;
     }
 
     /**
      * Expected to be called with a {@link ObjectAdapter} wrapping an array.
      */
     @Override
-    public int size(final ObjectAdapter collectionAdapter) {
-        return array(collectionAdapter).length;
+    public int size(final ObjectAdapter arrayAdapter) {
+        return pojoArray(arrayAdapter).length;
     }
 
-    private Object[] array(final ObjectAdapter collectionAdapter) {
-        return (Object[]) collectionAdapter.getObject();
+    private Object[] pojoArray(final ObjectAdapter arrayAdapter) {
+        return (Object[]) arrayAdapter.getObject();
     }
 
     // /////////////////////////////////////////////////////
     // Dependencies (from constructor)
     // /////////////////////////////////////////////////////
 
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
+    private ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
index e696609..84360f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
@@ -24,28 +24,39 @@ import java.util.Iterator;
 
 import com.google.common.collect.Collections2;
 
+import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
 
 public class JavaCollectionFacet extends CollectionFacetAbstract {
 
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
-    public JavaCollectionFacet(final FacetHolder holder, final AdapterManager adapterManager) {
+    public JavaCollectionFacet(final FacetHolder holder, final ObjectAdapterProvider adapterProvider) {
         super(holder);
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
-
+    
     @Override
-    public Collection<ObjectAdapter> collection(final ObjectAdapter wrappedCollection) {
-        final Collection<?> collectionOfUnderlying = collectionOfUnderlying(wrappedCollection);
-
+    public void init(final ObjectAdapter collection, final ObjectAdapter[] initData) {
+        final Collection<? super Object> pojoCollection = pojoCollection(collection);
+        pojoCollection.clear();
+        for (final ObjectAdapter element : initData) {
+            final Object pojo = element.getObject();
+            pojoCollection.add(pojo);
+        }
+    }
+    
+    @Override
+    public Collection<ObjectAdapter> collection(final ObjectAdapter collectionAdapter) {
+        final Collection<?> pojoCollection = pojoCollection(collectionAdapter);
+        
         //TODO [ahuber] java doc states, this is a live view, don't know if this is needed, 
         // or if a copy is sufficient
-        return Collections2.transform(collectionOfUnderlying,
-                ObjectAdapter.Functions.adapter_ForUsing(getAdapterManager()));
+        return Collections2.transform(pojoCollection,
+                ObjectAdapter.Functions.adapter_ForUsing(getObjectAdapterProvider()));
     }
 
     @Override
@@ -56,33 +67,23 @@ public class JavaCollectionFacet extends CollectionFacetAbstract {
 
     @Override
     public int size(final ObjectAdapter collection) {
-        return collectionOfUnderlying(collection).size();
-    }
-
-    @Override
-    public void init(final ObjectAdapter collection, final ObjectAdapter[] initData) {
-        final Collection<? super Object> javaCollection = collectionOfUnderlying(collection);
-        javaCollection.clear();
-        for (final ObjectAdapter element : initData) {
-            final Object pojo = element.getObject();
-            javaCollection.add(pojo);
-        }
+        return pojoCollection(collection).size();
     }
 
     /**
      * The underlying collection of objects (not {@link ObjectAdapter}s).
      */
     @SuppressWarnings("unchecked")
-    private Collection<? super Object> collectionOfUnderlying(final ObjectAdapter wrappedCollection) {
-        return (Collection<? super Object>) wrappedCollection.getObject();
+    private Collection<? super Object> pojoCollection(final ObjectAdapter collectionAdapter) {
+        return (Collection<? super Object>) collectionAdapter.getObject();
     }
 
     // //////////////////////////////////////////////////////////////////////
     // Dependencies (from constructor)
     // //////////////////////////////////////////////////////////////////////
 
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
+    private ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
index 204f2da..13aaca0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/autocomplete/AutoCompleteFacetAbstract.java
@@ -27,7 +27,7 @@ import java.util.List;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -46,7 +46,7 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
 
     private final DeploymentCategory deploymentCategory;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
     private final ServicesInjector servicesInjector;
     private final Class<?> repositoryClass;
     private final Method repositoryMethod;
@@ -67,7 +67,7 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
         this.repositoryMethod = repositoryMethod;
 
         this.deploymentCategory = servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
-        this.adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        this.adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
         this.servicesInjector = servicesInjector;
         this.authenticationSessionProvider = servicesInjector.getAuthenticationSessionProvider();
     }
@@ -82,7 +82,7 @@ public abstract class AutoCompleteFacetAbstract extends FacetAbstract implements
                     @Override
                     public ObjectAdapter exec() {
                         final Object list = invoke();
-                        return adapterManager.adapterFor(list);
+                        return adapterProvider.adapterFor(list);
                     }
 
                     private Object invoke()  {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
index 3201ae7..ca9c234 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Objects;
 
 import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
@@ -37,7 +38,7 @@ RecreatableObjectFacetDeclarativeInitializingAbstract {
     public static ViewModelFacet create(
             final List<DomainObject> domainObjects,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager,
+            final ObjectAdapterProvider adapterProvider,
             final ServicesInjector servicesInjector,
             final FacetHolder holder,
             final PostConstructMethodCache postConstructMethodCache) {
@@ -61,7 +62,7 @@ RecreatableObjectFacetDeclarativeInitializingAbstract {
                         }
                         return new RecreatableObjectFacetForDomainObjectAnnotation(
                                 holder,
-                                specificationLoader, adapterManager, servicesInjector, postConstructMethodCache);
+                                specificationLoader, adapterProvider, servicesInjector, postConstructMethodCache);
                     }
                     // shouldn't happen, the above switch should match all cases.
                     throw new IllegalArgumentException("nature of '" + nature + "' not recognized");
@@ -74,10 +75,10 @@ RecreatableObjectFacetDeclarativeInitializingAbstract {
     private RecreatableObjectFacetForDomainObjectAnnotation(
             final FacetHolder holder,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager,
+            final ObjectAdapterProvider adapterProvider,
             final ServicesInjector servicesInjector,
             final PostConstructMethodCache postConstructMethodCache) {
-        super(holder, RecreationMechanism.INITIALIZES, specificationLoader, adapterManager, servicesInjector,
+        super(holder, RecreationMechanism.INITIALIZES, specificationLoader, adapterProvider, servicesInjector,
                 postConstructMethodCache);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
index 14bd182..e9c6d39 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/EncodableFacetAbstract.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.encodeable;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.core.commons.lang.ClassExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder;
@@ -35,18 +35,18 @@ public abstract class EncodableFacetAbstract extends FacetAbstract implements En
     // to delegate to
     private final EncodableFacetUsingEncoderDecoder encodeableFacetUsingEncoderDecoder;
 
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
     private final ServicesInjector dependencyInjector;
 
-    public EncodableFacetAbstract(final String candidateEncoderDecoderName, final Class<?> candidateEncoderDecoderClass, final FacetHolder holder, final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
+    public EncodableFacetAbstract(final String candidateEncoderDecoderName, final Class<?> candidateEncoderDecoderClass, final FacetHolder holder, final ObjectAdapterProvider adapterProvider, final ServicesInjector dependencyInjector) {
         super(EncodableFacet.class, holder, Derivation.NOT_DERIVED);
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
         this.dependencyInjector = dependencyInjector;
 
         this.encoderDecoderClass = EncoderDecoderUtil.encoderDecoderOrNull(candidateEncoderDecoderClass, candidateEncoderDecoderName);
         if (isValid()) {
             final EncoderDecoder<?> encoderDecoder = (EncoderDecoder<?>) ClassExtensions.newInstance(encoderDecoderClass, FacetHolder.class, holder);
-            this.encodeableFacetUsingEncoderDecoder = new EncodableFacetUsingEncoderDecoder(encoderDecoder, holder, getAdapterManager(), getDependencyInjector());
+            this.encodeableFacetUsingEncoderDecoder = new EncodableFacetUsingEncoderDecoder(encoderDecoder, holder, getObjectAdapterProvider(), getDependencyInjector());
         } else {
             this.encodeableFacetUsingEncoderDecoder = null;
         }
@@ -83,8 +83,8 @@ public abstract class EncodableFacetAbstract extends FacetAbstract implements En
         return encodeableFacetUsingEncoderDecoder.toEncodedString(object);
     }
 
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
+    public ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
     public ServicesInjector getDependencyInjector() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
index e873618..e399e82 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/encoder/EncodableFacetUsingEncoderDecoder.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.encodeable.encoder;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
@@ -32,13 +32,13 @@ public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements
 
     private final EncoderDecoder<?> encoderDecoder;
     private final ServicesInjector dependencyInjector;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
-    public EncodableFacetUsingEncoderDecoder(final EncoderDecoder<?> encoderDecoder, final FacetHolder holder, final AdapterManager adapterManager, final ServicesInjector dependencyInjector) {
+    public EncodableFacetUsingEncoderDecoder(final EncoderDecoder<?> encoderDecoder, final FacetHolder holder, final ObjectAdapterProvider adapterProvider, final ServicesInjector dependencyInjector) {
         super(EncodableFacet.class, holder, Derivation.NOT_DERIVED);
         this.encoderDecoder = encoderDecoder;
         this.dependencyInjector = dependencyInjector;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     // TODO: is this safe? really?
@@ -58,7 +58,7 @@ public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements
         } else {
             getDependencyInjector().injectServicesInto(encoderDecoder);
             final Object decodedObject = encoderDecoder.fromEncodedString(encodedData);
-            return getAdapterManager().adapterFor(decodedObject);
+            return getObjectAdapterProvider().adapterFor(decodedObject);
         }
 
     }
@@ -83,8 +83,8 @@ public class EncodableFacetUsingEncoderDecoder extends FacetAbstract implements
         return dependencyInjector;
     }
 
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
+    public ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
index aaf1026..b4d541e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetAbstract.java
@@ -25,7 +25,7 @@ import java.lang.reflect.InvocationTargetException;
 
 import org.apache.isis.applib.services.title.TitleService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
@@ -100,7 +100,7 @@ public abstract class MixinFacetAbstract extends SingleValueFacetAbstract<String
                 declaredField.setAccessible(true);
                 try {
                     Object o = declaredField.get(mixin);
-                    return getAdapterManager().adapterFor(o);
+                    return getObjectAdapterProvider().adapterFor(o);
                 } catch (IllegalAccessException e) {
                     if(policy == Policy.FAIL_FAST) {
                         throw new RuntimeException(
@@ -119,7 +119,7 @@ public abstract class MixinFacetAbstract extends SingleValueFacetAbstract<String
         return null;
     }
 
-    private AdapterManager getAdapterManager() {
+    private ObjectAdapterProvider getObjectAdapterProvider() {
         return servicesInjector.getPersistenceSessionServiceInternal();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
index f52aa83..0127bc8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetFromConfiguration.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.object.parseable.annotcfg;
 
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacetAbstract;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
@@ -30,7 +30,7 @@ public class ParseableFacetFromConfiguration extends ParseableFacetAbstract {
             final String candidateParserName,
             final FacetHolder holder,
             final ServicesInjector servicesInjector,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(candidateParserName, null, holder, servicesInjector);
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
index 4f19c04..ef7030c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/parser/ParseableFacetUsingParser.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ParsingException;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResultSet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -46,7 +46,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
     private final Parser<?> parser;
     private final AuthenticationSessionProvider authenticationSessionProvider;
     private final ServicesInjector dependencyInjector;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public ParseableFacetUsingParser(
             final Parser<?> parser,
@@ -56,7 +56,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
         this.parser = parser;
         this.authenticationSessionProvider = servicesInjector.getAuthenticationSessionProvider();
         this.dependencyInjector = servicesInjector;
-        this.adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        this.adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
     @Override
@@ -77,7 +77,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
         // check string is valid
         // (eg pick up any @RegEx on value type)
         if (getFacetHolder().containsFacet(ValueFacet.class)) {
-            final ObjectAdapter entryAdapter = getAdapterManager().adapterFor(entry);
+            final ObjectAdapter entryAdapter = getObjectAdapterProvider().adapterFor(entry);
             final Identifier identifier = getIdentified().getIdentifier();
             final ParseValueContext parseValueContext =
                     new ParseValueContext(
@@ -98,7 +98,7 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
 
             // check resultant object is also valid
             // (eg pick up any validate() methods on it)
-            final ObjectAdapter adapter = getAdapterManager().adapterFor(parsed);
+            final ObjectAdapter adapter = getObjectAdapterProvider().adapterFor(parsed);
             final ObjectSpecification specification = adapter.getSpecification();
             final ObjectValidityContext validateContext =
                     specification.createValidityInteractionContext(
@@ -152,9 +152,9 @@ public class ParseableFacetUsingParser extends FacetAbstract implements Parseabl
     }
 
     /**
-     * @return the adapterManager
+     * @return the adapterProvider
      */
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
+    public ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
index 5fbbc20..859aa6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
@@ -41,11 +41,8 @@ public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract
         return ViewModelFacet.class;
     }
 
-    public RecreatableObjectFacetAbstract(
-            final FacetHolder holder,
-            final RecreationMechanism recreationMechanism,
-            final PostConstructMethodCache postConstructMethodCache,
-            final ServicesInjector servicesInjector) {
+    public RecreatableObjectFacetAbstract(final FacetHolder holder, final RecreationMechanism recreationMechanism,
+            final PostConstructMethodCache postConstructMethodCache, final ServicesInjector servicesInjector) {
         super(type(), holder);
         this.postConstructMethodCache = postConstructMethodCache;
         this.recreationMechanism = recreationMechanism;
@@ -60,10 +57,10 @@ public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract
     @Override
     public boolean isImplicitlyImmutable() {
         final FacetHolder facetHolder = getFacetHolder();
-        if(facetHolder instanceof ObjectSpecificationDefault) {
+        if (facetHolder instanceof ObjectSpecificationDefault) {
             final ObjectSpecificationDefault objectSpec = (ObjectSpecificationDefault) facetHolder;
             final Class<?> correspondingClass = objectSpec.getCorrespondingClass();
-            if(ViewModel.Cloneable.class.isAssignableFrom(correspondingClass)) {
+            if (ViewModel.Cloneable.class.isAssignableFrom(correspondingClass)) {
                 return false;
             }
         }
@@ -82,10 +79,8 @@ public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract
     }
 
     @Override
-    public final Object instantiate(
-            final Class<?> viewModelClass,
-            final String mementoStr) {
-        if(getRecreationMechanism() == RecreationMechanism.INITIALIZES) {
+    public final Object instantiate(final Class<?> viewModelClass, final String mementoStr) {
+        if (getRecreationMechanism() == RecreationMechanism.INITIALIZES) {
             throw new IllegalStateException("This view model instantiates rather than initializes");
         }
         final Object viewModelPojo = doInstantiate(viewModelClass, mementoStr);
@@ -95,17 +90,16 @@ public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract
     }
 
     /**
-     * Hook for subclass; must be overridden if {@link #getRecreationMechanism()} is {@link RecreationMechanism#INSTANTIATES} (ignored otherwise).
+     * Hook for subclass; must be overridden if {@link #getRecreationMechanism()} is
+     * {@link RecreationMechanism#INSTANTIATES} (ignored otherwise).
      */
     protected Object doInstantiate(final Class<?> viewModelClass, final String mementoStr) {
         throw new IllegalStateException("doInstantiate() must be overridden if RecreationMechanism is INSTANTIATES");
     }
 
     @Override
-    public final void initialize(
-            final Object viewModelPojo,
-            final String mementoStr) {
-        if(getRecreationMechanism() == RecreationMechanism.INSTANTIATES) {
+    public final void initialize(final Object viewModelPojo, final String mementoStr) {
+        if (getRecreationMechanism() == RecreationMechanism.INSTANTIATES) {
             throw new IllegalStateException("This view model instantiates rather than initializes");
         }
         doInitialize(viewModelPojo, mementoStr);
@@ -113,21 +107,18 @@ public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract
     }
 
     /**
-     * Hook for subclass; must be overridden if {@link #getRecreationMechanism()} is {@link RecreationMechanism#INITIALIZES} (ignored otherwise).
+     * Hook for subclass; must be overridden if {@link #getRecreationMechanism()} is
+     * {@link RecreationMechanism#INITIALIZES} (ignored otherwise).
      */
-    protected void doInitialize(
-            final Object viewModelPojo,
-            final String mementoStr) {
+    protected void doInitialize(final Object viewModelPojo, final String mementoStr) {
         throw new IllegalStateException("doInitialize() must be overridden if RecreationMechanism is INITIALIZE");
     }
 
     private void invokePostConstructMethod(final Object viewModel) {
         final Method postConstructMethod = postConstructMethodCache.postConstructMethodFor(viewModel);
-        if(postConstructMethod != null) {
+        if (postConstructMethod != null) {
             MethodExtensions.invoke(postConstructMethod, viewModel);
         }
     }
 
-
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 359f8cc..9393db0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -21,13 +21,12 @@ package org.apache.isis.core.metamodel.facets.object.recreatable;
 
 import java.util.List;
 import java.util.Set;
-import java.util.UUID;
 
 import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
 import org.apache.isis.commons.internal.memento._Mementos;
 import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -41,21 +40,22 @@ import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
-public abstract class RecreatableObjectFacetDeclarativeInitializingAbstract extends RecreatableObjectFacetAbstract {
+public abstract class RecreatableObjectFacetDeclarativeInitializingAbstract 
+extends RecreatableObjectFacetAbstract {
 
     private final SpecificationLoader specificationLoader;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public RecreatableObjectFacetDeclarativeInitializingAbstract(
             final FacetHolder holder,
             final RecreationMechanism recreationMechanism,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager,
+            final ObjectAdapterProvider adapterProvider,
             final ServicesInjector servicesInjector,
             final PostConstructMethodCache postConstructMethodCache) {
         super(holder, recreationMechanism, postConstructMethodCache, servicesInjector);
         this.specificationLoader = specificationLoader;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     @Override
@@ -68,21 +68,13 @@ public abstract class RecreatableObjectFacetDeclarativeInitializingAbstract exte
 
         final _Mementos.Memento memento = _Mementos.parse(codec, serializer, mementoStr);
 
-        //TODO Legacy of ...
-        //        final MementoService mementoService = servicesInjector.lookupService(MementoService.class);
-        //        final BookmarkService bookmarkService = servicesInjector.lookupService(BookmarkService.class);
-        //
-        //        final MementoService.Memento memento = mementoService.parse(mementoStr);
-
         final Set<String> mementoKeys = memento.keySet();
 
-        // manually recreate the adapter in order to be able to query state via the metamodel
-        ObjectAdapter viewModelAdapter = adapterManager.lookupAdapterFor(viewModelPojo);
-        if(viewModelAdapter == null) {
-            final ObjectSpecification objectSpecification = specificationLoader.loadSpecification(viewModelPojo.getClass());
-            final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
-            viewModelAdapter = adapterManager.addRecreatedPojoToCache(new RootOid(objectSpecId, mementoStr, Oid.State.VIEWMODEL), viewModelPojo);
-        }
+        final ObjectAdapter viewModelAdapter = adapterProvider.adapterForViewModel(
+                specificationLoader,
+                viewModelPojo, 
+                (ObjectSpecId objectSpecId)->
+                    new RootOid(objectSpecId, mementoStr, Oid.State.VIEWMODEL)  );
 
         final ObjectSpecification spec = viewModelAdapter.getSpecification();
         final List<OneToOneAssociation> properties = spec.getProperties(Contributed.EXCLUDED);
@@ -96,17 +88,8 @@ public abstract class RecreatableObjectFacetDeclarativeInitializingAbstract exte
                 propertyValue = memento.get(propertyId, propertyType);
             }
 
-            //TODO Legacy of ...
-            //            if(mementoKeys.contains(propertyId)) {
-            //                final Class<?> propertyType = property.getSpecification().getCorrespondingClass();
-            //                propertyValue = memento.get(propertyId, propertyType);
-            //            } else if(mementoKeys.contains(propertyId + ".bookmark")) {
-            //                final Bookmark propertyValueBookmark = memento.get(propertyId + ".bookmark", Bookmark.class);
-            //                propertyValue = bookmarkService.lookup(propertyValueBookmark);
-            //            }
-
             if(propertyValue != null) {
-                property.set(viewModelAdapter, adapterManager.adapterFor(propertyValue), InteractionInitiatedBy.FRAMEWORK);
+                property.set(viewModelAdapter, adapterProvider.adapterFor(propertyValue), InteractionInitiatedBy.FRAMEWORK);
             }
         }
     }
@@ -119,74 +102,33 @@ public abstract class RecreatableObjectFacetDeclarativeInitializingAbstract exte
 
         final _Mementos.Memento memento = _Mementos.create(codec, serializer);
 
-        //TODO Legacy of ...
-        //        final MementoService mementoService = servicesInjector.lookupService(MementoService.class);
-        //        final BookmarkService bookmarkService = servicesInjector.lookupService(BookmarkService.class);
-        //
-        //        final MementoService.Memento memento = mementoService.create();
-
-        // this is horrible, but there's a catch-22 here...
-        // we need an adapter in order to query the state of the object via the metamodel, on the other hand
-        // we can't create an adapter without the identifier, which is what we're trying to derive
-        // so... we create a temporary transient adapter, use it to wrap this adapter and interrogate this pojo,
-        // then throw away that adapter (remove from the adapter map)
-        boolean createdTemporaryAdapter = false;
-        ObjectAdapter viewModelAdapter = adapterManager.lookupAdapterFor(viewModelPojo);
-        if(viewModelAdapter == null) {
-
-            final ObjectSpecification objectSpecification =
-                    specificationLoader.loadSpecification(viewModelPojo.getClass());
-
-            final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
-            viewModelAdapter =
-                    adapterManager.addRecreatedPojoToCache(
-                            RootOid.create(objectSpecId, UUID.randomUUID().toString()),
-                            viewModelPojo);
-
-            createdTemporaryAdapter = true;
-        }
-
-        try {
-            final ObjectSpecification spec = viewModelAdapter.getSpecification();
-            final List<OneToOneAssociation> properties = spec.getProperties(Contributed.EXCLUDED);
-            for (OneToOneAssociation property : properties) {
-                // ignore read-only
-                if(!property.containsDoOpFacet(PropertySetterFacet.class)) {
-                    continue;
-                }
-                // ignore those explicitly annotated as @NotPersisted
-                if(property.isNotPersisted()) {
-                    continue;
-                }
-
-                // otherwise, include
-
-                // REVIEW: this look to be the same as viewModelAdapter, above?
-                final ObjectAdapter ownerAdapter = adapterManager.adapterFor(viewModelPojo);
-
-                final ObjectAdapter propertyValueAdapter = property.get(ownerAdapter,
-                        InteractionInitiatedBy.FRAMEWORK);
-                if(propertyValueAdapter != null) {
-                    final Object propertyValue = propertyValueAdapter.getObject();
-
-                    memento.put(property.getId(), propertyValue);
-
-                    //TODO Legacy of ...
-                    //                    if(mementoService.canSet(propertyValue)) {
-                    //                        memento.set(property.getId(), propertyValue);
-                    //                    } else {
-                    //                        final Bookmark propertyValueBookmark = bookmarkService.bookmarkFor(propertyValue);
-                    //                        memento.set(property.getId() + ".bookmark", propertyValueBookmark);
-                    //                    }
-                }
+        final ObjectSpecification spec = adapterProvider.specificationForViewModel(specificationLoader, viewModelPojo);
+        
+        final List<OneToOneAssociation> properties = spec.getProperties(Contributed.EXCLUDED);
+        for (OneToOneAssociation property : properties) {
+            // ignore read-only
+            if(!property.containsDoOpFacet(PropertySetterFacet.class)) {
+                continue;
             }
-            return memento.asString();
-        } finally {
-            if(createdTemporaryAdapter) {
-                adapterManager.removeAdapterFromCache(viewModelAdapter);
+            // ignore those explicitly annotated as @NotPersisted
+            if(property.isNotPersisted()) {
+                continue;
+            }
+
+            // otherwise, include
+
+            final ObjectAdapter ownerAdapter = adapterProvider.adapterFor(viewModelPojo);
+
+            final ObjectAdapter propertyValueAdapter = property.get(ownerAdapter,
+                    InteractionInitiatedBy.FRAMEWORK);
+            if(propertyValueAdapter != null) {
+                final Object propertyValue = propertyValueAdapter.getObject();
+
+                memento.put(property.getId(), propertyValue);
             }
         }
+        return memento.asString();
     }
-
+    
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
index 277e202..facd04d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetFactory.java
@@ -89,7 +89,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache {
 
     private ViewModelFacet create(final org.apache.isis.applib.annotation.ViewModel annotation, final FacetHolder holder) {
         final PostConstructMethodCache postConstructMethodCache = this;
-        return annotation != null ? new RecreatableObjectFacetForViewModelAnnotation(holder, getSpecificationLoader(), adapterManager, servicesInjector, postConstructMethodCache) : null;
+        return annotation != null ? new RecreatableObjectFacetForViewModelAnnotation(holder, getSpecificationLoader(), adapterProvider, servicesInjector, postConstructMethodCache) : null;
     }
 
     private ViewModelFacet create(final XmlRootElement annotation, final FacetHolder holder) {
@@ -136,9 +136,9 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache {
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
index 5815be8..d76770c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForViewModelAnnotation.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.object.recreatable;
 
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
@@ -31,11 +31,11 @@ RecreatableObjectFacetDeclarativeInitializingAbstract {
     public RecreatableObjectFacetForViewModelAnnotation(
             final FacetHolder holder,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager,
+            final ObjectAdapterProvider adapterProvider,
             final ServicesInjector servicesInjector,
             final PostConstructMethodCache postConstructMethodCache) {
         super(holder, RecreationMechanism.INITIALIZES,
-                specificationLoader, adapterManager, servicesInjector, postConstructMethodCache);
+                specificationLoader, adapterProvider, servicesInjector, postConstructMethodCache);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
index 53994c3..3f38112 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleAnnotationFacetFactory.java
@@ -70,7 +70,7 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
 
         sort(evaluators);
         final List<TitleFacetViaTitleAnnotation.TitleComponent> titleComponents = Lists.transform(evaluators, TitleFacetViaTitleAnnotation.TitleComponent.FROM_EVALUATORS);
-        FacetUtil.addFacet(new TitleFacetViaTitleAnnotation(titleComponents, facetHolder, adapterManager));
+        FacetUtil.addFacet(new TitleFacetViaTitleAnnotation(titleComponents, facetHolder, adapterProvider));
     }
 
     public static void sort(final List<Annotations.Evaluator<Title>> evaluators) {
@@ -193,9 +193,9 @@ public class TitleAnnotationFacetFactory extends FacetFactoryAbstract implements
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 46babe5..7efd7e8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -30,7 +30,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.object.title.TitleFacetAbstract;
@@ -39,7 +39,7 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
 
     private static final Logger LOG = LoggerFactory.getLogger(TitleFacetViaTitleAnnotation.class);
     private final List<TitleComponent> components;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public static class TitleComponent {
         public static final Function<? super Annotations.Evaluator<Title>, ? extends TitleComponent> FROM_EVALUATORS = new Function<Annotations.Evaluator<Title>, TitleComponent>() {
@@ -85,10 +85,10 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
 
     }
 
-    public TitleFacetViaTitleAnnotation(final List<TitleComponent> components, final FacetHolder holder, final AdapterManager adapterManager) {
+    public TitleFacetViaTitleAnnotation(final List<TitleComponent> components, final FacetHolder holder, final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.components = components;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     @Override
@@ -122,7 +122,7 @@ public class TitleFacetViaTitleAnnotation extends TitleFacetAbstract {
                     continue;
                 }
                 // ignore context, if provided
-                final ObjectAdapter titlePartAdapter = adapterManager.adapterFor(titlePart);
+                final ObjectAdapter titlePartAdapter = adapterProvider.adapterFor(titlePart);
                 if(Objects.equal(contextAdapter, titlePartAdapter)) {
                     continue;
                 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 6d2bdab..f38b9f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -19,15 +19,18 @@
 
 package org.apache.isis.core.metamodel.facets.object.value;
 
-import org.apache.isis.applib.adapters.*;
+import org.apache.isis.applib.adapters.DefaultsProvider;
+import org.apache.isis.applib.adapters.EncoderDecoder;
+import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.applib.adapters.Parser2;
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.core.commons.lang.ClassExtensions;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facets.MultipleValueFacetAbstract;
-
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;
 import org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder;
 import org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
@@ -117,7 +120,7 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
             // install the EncodeableFacet if we've been given an EncoderDecoder
             final EncoderDecoder<?> encoderDecoder = semanticsProvider.getEncoderDecoder();
             if (encoderDecoder != null) {
-                facetHolder.addFacet(new EncodableFacetUsingEncoderDecoder(encoderDecoder, holder, getAdapterMap(), this.servicesInjector));
+                facetHolder.addFacet(new EncodableFacetUsingEncoderDecoder(encoderDecoder, holder, getObjectAdapterProvider(), this.servicesInjector));
             }
 
             // install the ParseableFacet and other facets if we've been given a
@@ -128,6 +131,7 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
                 facetHolder.addFacet(new TitleFacetUsingParser(parser, holder, this.servicesInjector));
                 facetHolder.addFacet(new TypicalLengthFacetUsingParser(parser, holder, this.servicesInjector));
                 if(parser instanceof Parser2) {
+                    @SuppressWarnings("rawtypes")
                     final Parser2 parser2 = (Parser2) parser;
                     final Integer maxLength = parser2.maxLength();
                     if(maxLength != null) {
@@ -179,7 +183,7 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
         return servicesInjector.getDeploymentCategoryProvider().getDeploymentCategory();
     }
 
-    private AdapterManager getAdapterMap() {
+    private ObjectAdapterProvider getObjectAdapterProvider() {
         return servicesInjector.getPersistenceSessionServiceInternal();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 247976c..8e20a9c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
 import org.apache.isis.core.commons.lang.LocaleUtil;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -312,7 +312,7 @@ public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbs
     protected ObjectAdapter createAdapter(final Class<?> type, final Object object) {
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(type);
         if (specification.isNotCollection()) {
-            return getAdapterManager().adapterFor(object);
+            return getObjectAdapterProvider().adapterFor(object);
         } else {
             throw new UnknownTypeException("not an object, is this a collection?");
         }
@@ -333,7 +333,7 @@ public abstract class ValueSemanticsProviderAndFacetAbstract<T> extends FacetAbs
     /**
      * From {@link #getContext() context.}
      */
-    protected AdapterManager getAdapterManager() {
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
         return context.getPersistenceSessionServiceInternal();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
index 7e568de..b49f31d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/ActionParameterAutoCompleteFacetAbstract.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.param.autocomplete;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -38,19 +38,19 @@ public abstract class ActionParameterAutoCompleteFacetAbstract extends FacetAbst
     private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public ActionParameterAutoCompleteFacetAbstract(
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(type(), holder, Derivation.NOT_DERIVED);
         this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     protected ObjectSpecification getSpecification(final Class<?> type) {
@@ -68,8 +68,8 @@ public abstract class ActionParameterAutoCompleteFacetAbstract extends FacetAbst
         return specificationLoader;
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
     protected DeploymentCategory getDeploymentCategory() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 1ff79bb..2de9ac4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -27,7 +27,7 @@ import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -52,7 +52,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterManager) {
         super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterManager);
         this.method = method;
         this.choicesType = choicesType;
@@ -88,7 +88,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
         if (collectionOrArray == null) {
             return _Constants.emptyObjects;
         }
-        final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
 
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
@@ -101,7 +101,7 @@ public class ActionParameterAutoCompleteFacetViaMethod extends ActionParameterAu
                 _Lists.transform(visibleAdapters, ObjectAdapter.Functions.getObject());
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getAdapterManager());
+        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 9e0af5b..59fa9c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -73,6 +73,7 @@ public class ActionParameterAutoCompleteFacetViaMethodFactory extends MethodPref
             final Class<?> paramType = params[i];
             final Class<?> arrayOfParamType = (Array.newInstance(paramType, 0)).getClass();
 
+            @SuppressWarnings("rawtypes")
             final Class[] returnTypes = { arrayOfParamType, List.class, Set.class, Collection.class };
             Method autoCompleteMethod = findAutoCompleteNumMethodReturning(processMethodContext, i, returnTypes);
             if (autoCompleteMethod == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
index fda1e5e..ceec4cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.facets.param.choices;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
@@ -38,19 +38,19 @@ public abstract class ActionParameterChoicesFacetAbstract extends FacetAbstract
     private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public ActionParameterChoicesFacetAbstract(
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(type(), holder, Derivation.NOT_DERIVED);
         this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     protected ObjectSpecification getSpecification(final Class<?> type) {
@@ -65,8 +65,8 @@ public abstract class ActionParameterChoicesFacetAbstract extends FacetAbstract
         return specificationLoader;
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
     protected DeploymentCategory getDeploymentCategory() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index 67a6245..ddb423f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -24,15 +24,15 @@ import java.util.List;
 import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
 
 public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionParameterChoicesFacetAbstract {
 
@@ -41,8 +41,8 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
-        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterManager);
+            final ObjectAdapterProvider adapterProvider) {
+        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterProvider);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
index 3e4ce8c..7c2de6e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacetFactory.java
@@ -52,7 +52,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends F
                 facetHolder,
                 getDeploymentCategory(), getSpecificationLoader(),
                 getAuthenticationSessionProvider(),
-                adapterManager));
+                adapterProvider));
     }
 
     // /////////////////////////////////////////////
@@ -62,9 +62,9 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacetFactory extends F
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
index a0a07f5..0d3841c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/method/ActionChoicesFacetViaMethod.java
@@ -27,7 +27,7 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -45,7 +45,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
     private final DeploymentCategory deploymentCategory;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public ActionChoicesFacetViaMethod(
             final Method method,
@@ -54,14 +54,14 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.method = method;
         this.choicesType = choicesType;
         this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     /**
@@ -108,7 +108,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
             return null;
         }
 
-        final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
 
         final AuthenticationSession authenticationSession = getAuthenticationSession();
         final DeploymentCategory deploymentCategory = getDeploymentCategory();
@@ -120,7 +120,7 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
                 _Lists.transform(visibleAdapters, ObjectAdapter.Functions.getObject());
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getAdapterManager());
+        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, parameterSpec, getObjectAdapterProvider());
     }
 
     @Override
@@ -140,8 +140,8 @@ public class ActionChoicesFacetViaMethod extends ActionChoicesFacetAbstract impl
         return specificationLoader;
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
     protected DeploymentCategory getDeploymentCategory() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 2b9748b..71d49b3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -27,7 +27,7 @@ import org.apache.isis.commons.internal._Constants;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -50,8 +50,8 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLookup,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
-        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterManager);
+            final ObjectAdapterProvider adapterProvider) {
+        super(holder, deploymentCategory, specificationLookup, authenticationSessionProvider, adapterProvider);
         this.method = method;
         this.choicesType = choicesType;
     }
@@ -77,11 +77,11 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
             final InteractionInitiatedBy interactionInitiatedBy) {
         final Object choices =
                 ObjectAdapter.InvokeUtils.invokeAutofit(
-                        method, adapter, argumentsIfAvailable, getAdapterManager());
+                        method, adapter, argumentsIfAvailable, getObjectAdapterProvider());
         if (choices == null) {
             return _Constants.emptyObjects;
         }
-        final ObjectAdapter objectAdapter = getAdapterManager().adapterFor(choices);
+        final ObjectAdapter objectAdapter = getObjectAdapterProvider().adapterFor(choices);
         final FacetedMethodParameter facetedMethodParameter = (FacetedMethodParameter) getFacetHolder();
         final Class<?> parameterType = facetedMethodParameter.getType();
 
@@ -93,7 +93,7 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
                 _Lists.transform(visibleAdapters, ObjectAdapter.Functions.getObject());
 
         final ObjectSpecification parameterSpec = getSpecification(parameterType);
-        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getAdapterManager());
+        return CollectionUtils.getCollectionAsObjectArray(visibleObjects, parameterSpec, getObjectAdapterProvider());
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
index aadc7c0..c9f7d9d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethod.java
@@ -24,7 +24,7 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacetAbstract;
@@ -32,12 +32,13 @@ import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefau
 public class ActionParameterDefaultsFacetViaMethod extends ActionParameterDefaultsFacetAbstract implements ImperativeFacet {
 
     private final Method method;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
-    public ActionParameterDefaultsFacetViaMethod(final Method method, final FacetHolder holder, final AdapterManager adapterManager) {
+    public ActionParameterDefaultsFacetViaMethod(
+            final Method method, final FacetHolder holder, final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.method = method;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     /**
@@ -56,7 +57,7 @@ public class ActionParameterDefaultsFacetViaMethod extends ActionParameterDefaul
 
     @Override
     public Object getDefault(final ObjectAdapter target, List<ObjectAdapter> argumentsIfAvailable) {
-        return ObjectAdapter.InvokeUtils.invokeAutofit(method, target, argumentsIfAvailable, getAdapterManager());
+        return ObjectAdapter.InvokeUtils.invokeAutofit(method, target, argumentsIfAvailable, getObjectAdapterProvider());
     }
 
 
@@ -70,8 +71,8 @@ public class ActionParameterDefaultsFacetViaMethod extends ActionParameterDefaul
     // Dependencies
     // /////////////////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index 30481a7..f7f8178 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -93,7 +93,7 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
 
             // add facets directly to parameters, not to actions
             final FacetedMethodParameter paramAsHolder = parameters.get(i);
-            FacetUtil.addFacet(new ActionParameterDefaultsFacetViaMethod(defaultMethod, paramAsHolder, adapterManager));
+            FacetUtil.addFacet(new ActionParameterDefaultsFacetViaMethod(defaultMethod, paramAsHolder, adapterProvider));
         }
     }
 
@@ -137,9 +137,9 @@ public class ActionParameterDefaultsFacetViaMethodFactory extends MethodPrefixBa
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
index accd913..41e096e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
@@ -23,7 +23,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -37,7 +37,7 @@ extends FacetAbstract
 implements PropertyOrCollectionAccessorFacet {
 
     private final ObjectSpecification onType;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
     private final SpecificationLoader specificationLoader;
     private final IsisConfiguration configuration;
     private final AuthenticationSessionProvider authenticationSessionProvider;
@@ -54,10 +54,10 @@ implements PropertyOrCollectionAccessorFacet {
             final IsisConfiguration configuration,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(type(), holder, Derivation.NOT_DERIVED);
         this.onType = onType;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
         this.specificationLoader = specificationLoader;
         this.configuration = configuration;
         this.authenticationSessionProvider = authenticationSessionProvider;
@@ -80,8 +80,8 @@ implements PropertyOrCollectionAccessorFacet {
 
     // //////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
     protected SpecificationLoader getSpecificationLoader() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index 39c2b74..d654445 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -26,7 +26,7 @@ import java.util.List;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -50,8 +50,8 @@ implements ImperativeFacet {
             final IsisConfiguration isisConfiguration,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
-        super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
+            final ObjectAdapterProvider adapterProvider) {
+        super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterProvider);
         this.method = method;
     }
 
@@ -81,7 +81,7 @@ implements ImperativeFacet {
 
         boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
         if(filterForVisibility) {
-            final ObjectAdapter referencedAdapter = getAdapterManager().adapterFor(referencedObject);
+            final ObjectAdapter referencedAdapter = getObjectAdapterProvider().adapterFor(referencedObject);
             final boolean visible = ObjectAdapter.Util
                     .isVisible(referencedAdapter, interactionInitiatedBy);
             if (!visible) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index 82cf52c..3fbd438 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -60,7 +60,7 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
                         getDeploymentCategory(), getConfiguration(),
                         getSpecificationLoader(),
                         getAuthenticationSessionProvider(),
-                        adapterManager
+                        adapterProvider
                         ));
     }
 
@@ -116,9 +116,9 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
 
     @Override public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
index f601757..e296e19 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethod.java
@@ -23,14 +23,11 @@ import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
 
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -49,7 +46,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
     private final int minLength;
 
     private final AuthenticationSessionProvider authenticationSessionProvider;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
     private final DeploymentCategory deploymentCategory;
     private SpecificationLoader specificationLoader;
 
@@ -60,14 +57,14 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.method = method;
         this.choicesClass = choicesClass;
         this.deploymentCategory = deploymentCategory;
         this.specificationLoader = specificationLoader;
         this.authenticationSessionProvider = authenticationSessionProvider;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
         this.minLength = MinLengthUtil.determineMinLength(method);
     }
 
@@ -104,7 +101,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
             return null;
         }
 
-        final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+        final ObjectAdapter collectionAdapter = getObjectAdapterProvider().adapterFor(collectionOrArray);
 
         final FacetedMethod facetedMethod = (FacetedMethod) getFacetHolder();
         final Class<?> propertyType = facetedMethod.getType();
@@ -117,7 +114,7 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
                 _Lists.transform(visibleAdapters, ObjectAdapter.Functions.getObject());
 
         final ObjectSpecification propertySpec = getSpecification(propertyType);
-        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getAdapterManager());
+        return CollectionUtils.getCollectionAsObjectArray(filteredObjects, propertySpec, getObjectAdapterProvider());
     }
 
     @Override
@@ -136,8 +133,8 @@ public class PropertyAutoCompleteFacetMethod extends PropertyAutoCompleteFacetAb
     // Dependencies
     // ////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
     protected SpecificationLoader getSpecificationLoader() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index 0dc058f..0522c17 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -62,7 +62,7 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
 
         final FacetHolder property = processMethodContext.getFacetHolder();
         FacetUtil.addFacet(new PropertyAutoCompleteFacetMethod(autoCompleteMethod, returnType, property,
-                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterManager
+                getDeploymentCategory(), getSpecificationLoader(), getAuthenticationSessionProvider(), adapterProvider
                 ));
     }
 
@@ -74,9 +74,9 @@ public class PropertyAutoCompleteFacetMethodFactory extends MethodPrefixBasedFac
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
index 0d9aa6d..ceb6c6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethod.java
@@ -25,27 +25,33 @@ import java.util.List;
 
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.facets.CollectionUtils;
-import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacetAbstract;
 
 public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract implements ImperativeFacet {
 
     private final Method method;
     private final Class<?> choicesClass;
 
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
-    public PropertyChoicesFacetViaMethod(final Method method, final Class<?> choicesClass, final FacetHolder holder, final SpecificationLoader specificationLookup, final AdapterManager adapterManager) {
+    public PropertyChoicesFacetViaMethod(
+            final Method method, 
+            final Class<?> choicesClass, 
+            final FacetHolder holder, 
+            final SpecificationLoader specificationLookup, 
+            final ObjectAdapterProvider adapterProvider) {
+        
         super(holder, specificationLookup);
         this.method = method;
         this.choicesClass = choicesClass;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     /**
@@ -75,7 +81,7 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
             return ObjectExtensions.asArray(options);
         }
         final ObjectSpecification specification = specificationLookup.loadSpecification(choicesClass);
-        return CollectionUtils.getCollectionAsObjectArray(options, specification, getAdapterManager());
+        return CollectionUtils.getCollectionAsObjectArray(options, specification, getObjectAdapterProvider());
     }
 
     @Override
@@ -87,8 +93,8 @@ public class PropertyChoicesFacetViaMethod extends PropertyChoicesFacetAbstract
     // Dependencies
     // ////////////////////////////////////////////
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index cbd17a1..062c194 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -60,7 +60,7 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
         processMethodContext.removeMethod(choicesMethod);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new PropertyChoicesFacetViaMethod(choicesMethod, returnType, property, getSpecificationLoader(), adapterManager));
+        FacetUtil.addFacet(new PropertyChoicesFacetViaMethod(choicesMethod, returnType, property, getSpecificationLoader(), adapterProvider));
     }
 
     // ///////////////////////////////////////////////////////
@@ -71,9 +71,9 @@ public class PropertyChoicesFacetViaMethodFactory extends MethodPrefixBasedFacet
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
index f1c523e..27abaf5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromDefaultedFacet.java
@@ -20,21 +20,23 @@
 package org.apache.isis.core.metamodel.facets.properties.defaults.fromtype;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
 import org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet;
+import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
 
 public class PropertyDefaultFacetDerivedFromDefaultedFacet extends FacetAbstract implements PropertyDefaultFacet {
 
     private final DefaultedFacet typeFacet;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
-    public PropertyDefaultFacetDerivedFromDefaultedFacet(final DefaultedFacet typeFacet, final FacetHolder holder, final AdapterManager adapterManager) {
+    public PropertyDefaultFacetDerivedFromDefaultedFacet(
+            final DefaultedFacet typeFacet, final FacetHolder holder, final ObjectAdapterProvider adapterProvider) {
+        
         super(PropertyDefaultFacet.class, holder, Derivation.NOT_DERIVED);
         this.typeFacet = typeFacet;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     @Override
@@ -46,15 +48,15 @@ public class PropertyDefaultFacetDerivedFromDefaultedFacet extends FacetAbstract
         if (typeFacetDefault == null) {
             return null;
         }
-        return getAdapterManager().adapterFor(typeFacetDefault);
+        return getObjectAdapterProvider().adapterFor(typeFacetDefault);
     }
 
     // /////////////////////////////////////////////////////
     // Dependencies (from constructor)
     // /////////////////////////////////////////////////////
 
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
+    public ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
index 92bcd92..ba40c18 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/fromtype/PropertyDefaultFacetDerivedFromTypeFactory.java
@@ -52,7 +52,7 @@ public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbst
         final Class<?> returnType = processMethodContext.getMethod().getReturnType();
         final DefaultedFacet returnTypeDefaultedFacet = getDefaultedFacet(returnType);
         if (returnTypeDefaultedFacet != null) {
-            final PropertyDefaultFacetDerivedFromDefaultedFacet propertyFacet = new PropertyDefaultFacetDerivedFromDefaultedFacet(returnTypeDefaultedFacet, processMethodContext.getFacetHolder(), adapterManager);
+            final PropertyDefaultFacetDerivedFromDefaultedFacet propertyFacet = new PropertyDefaultFacetDerivedFromDefaultedFacet(returnTypeDefaultedFacet, processMethodContext.getFacetHolder(), adapterProvider);
             FacetUtil.addFacet(propertyFacet);
         }
     }
@@ -70,9 +70,9 @@ public class PropertyDefaultFacetDerivedFromTypeFactory extends FacetFactoryAbst
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
index dcbf114..903568e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethod.java
@@ -25,28 +25,28 @@ import java.util.List;
 
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacetAbstract;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacetAbstract;
 
 public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract implements ImperativeFacet {
 
     private final Method method;
     private final SpecificationLoader specificationLoader;
-    private final AdapterManager adapterManager;
+    private final ObjectAdapterProvider adapterProvider;
 
     public PropertyDefaultFacetViaMethod(
             final Method method,
             final FacetHolder holder,
             final SpecificationLoader specificationLoader,
-            final AdapterManager adapterManager) {
+            final ObjectAdapterProvider adapterProvider) {
         super(holder);
         this.method = method;
         this.specificationLoader = specificationLoader;
-        this.adapterManager = adapterManager;
+        this.adapterProvider = adapterProvider;
     }
 
     /**
@@ -75,7 +75,7 @@ public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract
     private ObjectAdapter createAdapter(final Class<?> type, final Object object) {
         final ObjectSpecification specification = getSpecificationLoader().loadSpecification(type);
         if (specification.isNotCollection()) {
-            return getAdapterManager().adapterFor(object);
+            return getObjectAdapterProvider().adapterFor(object);
         } else {
             throw new UnknownTypeException("not an object, is this a collection?");
         }
@@ -94,8 +94,8 @@ public class PropertyDefaultFacetViaMethod extends PropertyDefaultFacetAbstract
         return specificationLoader;
     }
 
-    protected AdapterManager getAdapterManager() {
-        return adapterManager;
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
+        return adapterProvider;
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
index bd67bb3..3ccfd58 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/defaults/method/PropertyDefaultFacetViaMethodFactory.java
@@ -61,7 +61,7 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
         processMethodContext.removeMethod(method);
 
         final FacetHolder property = processMethodContext.getFacetHolder();
-        FacetUtil.addFacet(new PropertyDefaultFacetViaMethod(method, property, getSpecificationLoader(), adapterManager));
+        FacetUtil.addFacet(new PropertyDefaultFacetViaMethod(method, property, getSpecificationLoader(), adapterProvider));
     }
 
     // ///////////////////////////////////////////////////////
@@ -72,9 +72,9 @@ public class PropertyDefaultFacetViaMethodFactory extends MethodPrefixBasedFacet
     @Override
     public void setServicesInjector(final ServicesInjector servicesInjector) {
         super.setServicesInjector(servicesInjector);
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
-    PersistenceSessionServiceInternal adapterManager;
+    PersistenceSessionServiceInternal adapterProvider;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index e89d8b0..d2cedb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -328,7 +328,7 @@ public abstract class ValueSemanticsProviderAbstractTemporal<T> extends ValueSem
 
     @Override
     public final ObjectAdapter createValue(final Date date) {
-        return getAdapterManager().adapterFor(setDate(date));
+        return getObjectAdapterProvider().adapterFor(setDate(date));
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
index beeb3ba..c33f02a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
@@ -95,7 +95,7 @@ public abstract class ByteValueSemanticsProviderAbstract extends ValueSemanticsP
 
     @Override
     public ObjectAdapter createValue(final Byte value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // ///// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
index defbc1f..ce23f46 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/chars/CharValueSemanticsProviderAbstract.java
@@ -91,7 +91,7 @@ public abstract class CharValueSemanticsProviderAbstract extends ValueSemanticsP
 
     @Override
     public ObjectAdapter createValue(final Character value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/color/ColorValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/color/ColorValueSemanticsProvider.java
index fc27b10..818fe08 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/color/ColorValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/color/ColorValueSemanticsProvider.java
@@ -115,7 +115,7 @@ public class ColorValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
     @Override
     public ObjectAdapter createValue(final ObjectAdapter object, final int colorAsInt) {
         final Color color = new Color(colorAsInt);
-        return getAdapterManager().adapterFor(color);
+        return getObjectAdapterProvider().adapterFor(color);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
index 01f71b6..5f38ef3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejdk8local/Jdk8LocalDateValueSemanticsProvider.java
@@ -260,7 +260,7 @@ public class Jdk8LocalDateValueSemanticsProvider extends ValueSemanticsProviderA
 
     @Override
     public final ObjectAdapter createValue(final LocalDate date) {
-        return getAdapterManager().adapterFor(date);
+        return getObjectAdapterProvider().adapterFor(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
index 5aef6ae..b72c63a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
@@ -261,7 +261,7 @@ public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderA
 
     @Override
     public final ObjectAdapter createValue(final LocalDate date) {
-        return getAdapterManager().adapterFor(date);
+        return getObjectAdapterProvider().adapterFor(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
index 8e81a38..1a8fc90 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejdk8local/Jdk8LocalDateTimeValueSemanticsProvider.java
@@ -261,7 +261,7 @@ public class Jdk8LocalDateTimeValueSemanticsProvider extends ValueSemanticsProvi
 
     @Override
     public final ObjectAdapter createValue(final LocalDateTime date) {
-        return getAdapterManager().adapterFor(date);
+        return getObjectAdapterProvider().adapterFor(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
index 822e95a..bc0db1c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
@@ -262,7 +262,7 @@ public class JodaLocalDateTimeValueSemanticsProvider extends ValueSemanticsProvi
 
     @Override
     public final ObjectAdapter createValue(final LocalDateTime date) {
-        return getAdapterManager().adapterFor(date);
+        return getObjectAdapterProvider().adapterFor(date);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
index b9de5aa..e2e90d7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
@@ -100,7 +100,7 @@ public abstract class DoubleValueSemanticsProviderAbstract extends ValueSemantic
 
     @Override
     public ObjectAdapter createValue(final Double value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
index 995df1d..7479898 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
@@ -96,7 +96,7 @@ public class FloatValueSemanticsProviderAbstract extends ValueSemanticsProviderA
 
     @Override
     public ObjectAdapter createValue(final Float value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java
index 0b5cd74..e682a71 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/image/ImageValueSemanticsProvider.java
@@ -95,7 +95,7 @@ public class ImageValueSemanticsProvider extends ImageValueSemanticsProviderAbst
 
     @Override
     public ObjectAdapter createValue(final java.awt.Image image) {
-        return getAdapterManager().adapterFor(new Image(grabPixels(image)));
+        return getObjectAdapterProvider().adapterFor(new Image(grabPixels(image)));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
index c6e768b..0b6591d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/imageawt/JavaAwtImageValueSemanticsProvider.java
@@ -77,7 +77,7 @@ public class JavaAwtImageValueSemanticsProvider extends ImageValueSemanticsProvi
 
     @Override
     public ObjectAdapter createValue(final Image image) {
-        return getAdapterManager().adapterFor(image);
+        return getObjectAdapterProvider().adapterFor(image);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
index caacc9c..094fed3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
@@ -96,7 +96,7 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
 
     @Override
     public ObjectAdapter createValue(final Integer value) {
-        return value == null ? null : getAdapterManager().adapterFor(value);
+        return value == null ? null : getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
index d5337b1..889f9e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/localrespath/LocalResourcePathValueSemanticsProvider.java
@@ -118,7 +118,7 @@ extends ValueSemanticsProviderAndFacetAbstract<LocalResourcePath> implements Loc
 
     @Override
     public ObjectAdapter createValue(final LocalResourcePath value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
index 49da38e..e54ef27 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
@@ -96,7 +96,7 @@ public abstract class LongValueSemanticsProviderAbstract extends ValueSemanticsP
 
     @Override
     public ObjectAdapter createValue(final Long value) {
-        return value == null ? null : getAdapterManager().adapterFor(value);
+        return value == null ? null : getObjectAdapterProvider().adapterFor(value);
     }
 
     // // ///// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
index b79048f..b87b01c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/markup/MarkupValueSemanticsProvider.java
@@ -85,7 +85,7 @@ public class MarkupValueSemanticsProvider extends ValueSemanticsProviderAndFacet
     @Override
     public ObjectAdapter createValue(final ObjectAdapter object, final String html) {
         final Markup markup = new Markup(html);
-        return getAdapterManager().adapterFor(markup);
+        return getObjectAdapterProvider().adapterFor(markup);
     }
 
     // //////////////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/money/MoneyValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
index 0b03e67..247c90b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
@@ -213,7 +213,7 @@ public class MoneyValueSemanticsProvider extends ValueSemanticsProviderAndFacetA
 
     @Override
     public ObjectAdapter createValue(final float amount, final String currencyCode) {
-        return getAdapterManager().adapterFor(new Money(amount, currencyCode));
+        return getObjectAdapterProvider().adapterFor(new Money(amount, currencyCode));
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
index 51509bf..5bee0e2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/password/PasswordValueSemanticsProvider.java
@@ -100,7 +100,7 @@ PasswordValueFacet {
 
     @Override
     public ObjectAdapter createValue(final String password) {
-        return getAdapterManager().adapterFor(new Password(password));
+        return getObjectAdapterProvider().adapterFor(new Password(password));
     }
 
     private Password password(final Object object) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
index 98adff9..a9277fd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
@@ -131,7 +131,7 @@ public class PercentageValueSemanticsProvider extends ValueSemanticsProviderAndF
 
     @Override
     public ObjectAdapter createValue(final Float value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // //////////////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
index c09e0e7..8a650d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
@@ -91,7 +91,7 @@ public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderA
 
     @Override
     public ObjectAdapter createValue(final Short value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java
index 32b92ec..917e32d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/string/StringValueSemanticsProvider.java
@@ -114,7 +114,7 @@ public class StringValueSemanticsProvider extends ValueSemanticsProviderAndFacet
 
     @Override
     public ObjectAdapter createValue(final String value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemanticsProvider.java
index 48c0e6e..671ffb0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/url/URLValueSemanticsProvider.java
@@ -116,7 +116,7 @@ public class URLValueSemanticsProvider extends ValueSemanticsProviderAndFacetAbs
 
     @Override
     public ObjectAdapter createValue(final java.net.URL value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
index b15f280..07f7b9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/uuid/UUIDValueSemanticsProvider.java
@@ -100,7 +100,7 @@ public class UUIDValueSemanticsProvider extends ValueSemanticsProviderAndFacetAb
 
     @Override
     public ObjectAdapter createValue(final UUID value) {
-        return getAdapterManager().adapterFor(value);
+        return getObjectAdapterProvider().adapterFor(value);
     }
 
     // /////// toString ///////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
index e291d19..1ee26fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
@@ -55,7 +55,7 @@ ServicesInjectorAware {
     private DeploymentCategoryProvider deploymentCategoryProvider;
     private SpecificationLoader specificationLoader;
     private AuthenticationSessionProvider authenticationSessionProvider;
-    private PersistenceSessionServiceInternal adapterManager;
+    private PersistenceSessionServiceInternal adapterProvider;
 
     @Override
     public void postProcess(final ObjectSpecification objectSpecification) {
@@ -145,7 +145,7 @@ ServicesInjectorAware {
                     new ActionParameterChoicesFacetFromParentedCollection(
                             scalarOrCollectionParam, otma,
                             getDeploymentCategory(), specificationLoader,
-                            authenticationSessionProvider, adapterManager ));
+                            authenticationSessionProvider, adapterProvider ));
         }
     }
 
@@ -172,7 +172,7 @@ ServicesInjectorAware {
         deploymentCategoryProvider = servicesInjector.getDeploymentCategoryProvider();
         specificationLoader = servicesInjector.getSpecificationLoader();
         authenticationSessionProvider = servicesInjector.getAuthenticationSessionProvider();
-        adapterManager = servicesInjector.getPersistenceSessionServiceInternal();
+        adapterProvider = servicesInjector.getPersistenceSessionServiceInternal();
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
index b89be1e..271af4a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
@@ -23,7 +23,7 @@ import java.util.List;
 
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -43,8 +43,8 @@ public class ActionParameterChoicesFacetFromParentedCollection extends ActionPar
             final DeploymentCategory deploymentCategory,
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
-            final AdapterManager adapterManager) {
-        super(holder, deploymentCategory, specificationLoader, authenticationSessionProvider, adapterManager);
+            final ObjectAdapterProvider adapterProvider) {
+        super(holder, deploymentCategory, specificationLoader, authenticationSessionProvider, adapterProvider);
         this.otma = otma;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
index 8ac953e..544d809 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternal.java
@@ -27,11 +27,11 @@ import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.xactn.Transaction;
 import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
 
-public interface PersistenceSessionServiceInternal extends AdapterManager {
+public interface PersistenceSessionServiceInternal extends ObjectAdapterProvider {
 
     // -- instantiate
 
@@ -47,8 +47,6 @@ public interface PersistenceSessionServiceInternal extends AdapterManager {
     @Programmatic
     ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento);
 
-
-
     // -- retrieve
 
     /**
@@ -174,5 +172,4 @@ public interface PersistenceSessionServiceInternal extends AdapterManager {
 
     void executeWithinTransaction(TransactionalClosure transactionalClosure);
 
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
index 0dbecb4..ced85e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/persistsession/PersistenceSessionServiceInternalNoop.java
@@ -26,11 +26,12 @@ import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.xactn.Transaction;
 import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.xactn.Transaction;
 import org.apache.isis.applib.services.xactn.TransactionState;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
@@ -41,12 +42,6 @@ import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
         )
 public class PersistenceSessionServiceInternalNoop implements PersistenceSessionServiceInternal {
 
-
-    @Override
-    public ObjectAdapter lookupAdapterFor(final Object pojo) {
-        throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
-    }
-
     @Override
     public ObjectAdapter adapterFor(
             final Object pojo,
@@ -56,26 +51,11 @@ public class PersistenceSessionServiceInternalNoop implements PersistenceSession
     }
 
     @Override
-    public ObjectAdapter addRecreatedPojoToCache(Oid oid, Object recreatedPojo) {
-        throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
-    }
-
-    @Override
-    public void removeAdapterFromCache(ObjectAdapter adapter) {
-        throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
-    }
-
-    @Override
     public ObjectAdapter adapterFor(final Object domainObject) {
         throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
     }
 
     @Override
-    public ObjectAdapter lookupAdapterFor(Oid oid) {
-        throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
-    }
-
-    @Override
     public ObjectAdapter createTransientInstance(final ObjectSpecification spec) {
         throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
     }
@@ -177,5 +157,10 @@ public class PersistenceSessionServiceInternalNoop implements PersistenceSession
         throw new UnsupportedOperationException("Not supported by this implementation of PersistenceSessionServiceInternal");
     }
 
+    @Override
+    public AdapterManager adapterManager() {
+        throw _Exceptions.notImplemented();
+    }
+
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 90e1c2e..a8d2cda 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -82,7 +82,7 @@ import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
  * </p>
  *
  */
-public final class SpecificationLoader implements ApplicationScopedComponent {
+public class SpecificationLoader implements ApplicationScopedComponent {
 
     private final static Logger LOG = LoggerFactory.getLogger(SpecificationLoader.class);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 61892b5..f857e38 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -21,10 +21,10 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import java.util.List;
 
+import com.google.common.base.Predicate;
 import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.Identifier;
-import com.google.common.base.Predicate;
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.query.QueryFindAllInstances;
 import org.apache.isis.core.commons.lang.ClassExtensions;
@@ -32,7 +32,7 @@ import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.adapter.MutableProposedHolder;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapterProvider;
 import org.apache.isis.core.metamodel.consent.Allow;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -94,7 +94,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
     public ObjectAdapter get(final ObjectAdapter owner, final InteractionInitiatedBy interactionInitiatedBy) {
         final MutableProposedHolder proposedHolder = getProposedHolder(owner);
         final Object proposed = proposedHolder.getProposed();
-        return getAdapterMap().adapterFor(proposed);
+        return getObjectAdapterProvider().adapterFor(proposed);
     }
 
     protected MutableProposedHolder getProposedHolder(final ObjectAdapter owner) {
@@ -303,7 +303,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
                     interactionInitiatedBy);
             checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
             for (final Object choice : choices) {
-                adapters.add(getAdapterMap().adapterFor(choice));
+                adapters.add(getObjectAdapterProvider().adapterFor(choice));
             }
         }
         /* // now incorporated into above choices processing (BoundedFacet is no more)
@@ -355,7 +355,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
                     interactionInitiatedBy);
             checkChoicesOrAutoCompleteType(getSpecificationLoader(), choices, getSpecification());
             for (final Object choice : choices) {
-                ObjectAdapter adapter = choice != null? getAdapterMap().adapterFor(choice) : null;
+                ObjectAdapter adapter = choice != null? getObjectAdapterProvider().adapterFor(choice) : null;
                 adapters.add(adapter);
             }
         }
@@ -392,7 +392,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
                 // invoked it is unable to return a default.
                 return null;
             }
-            return getAdapterMap().adapterFor(dflt);
+            return getObjectAdapterProvider().adapterFor(dflt);
         }
         return null;
     }
@@ -481,7 +481,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
         ObjectAdapter proposedValueAdapter = null;
         ObjectSpecification proposedValueSpec;
         if(proposedValue != null) {
-            proposedValueAdapter = getAdapterMap().adapterFor(proposedValue);
+            proposedValueAdapter = getObjectAdapterProvider().adapterFor(proposedValue);
             if(proposedValueAdapter == null) {
                 return null;
             }
@@ -526,7 +526,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
         return parentAction.getSpecificationLoader();
     }
 
-    protected AdapterManager getAdapterMap() {
+    protected ObjectAdapterProvider getObjectAdapterProvider() {
         return parentAction.getPersistenceSessionService();
     }
 
diff --git a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
index 8c5c963..313c5e0 100644
--- a/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
+++ b/core/plugins/jdo-datanucleus-4/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession4.java
@@ -1945,6 +1945,11 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
         return false;
     }
 
+    @Override
+    public AdapterManager adapterManager() {
+        return this;
+    }
+    
 }
 
 
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
index 9cd52e6..b38da77 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession5.java
@@ -1938,6 +1938,11 @@ implements IsisLifecycleListener.PersistenceSessionLifecycleManagement {
         return false;
     }
 
+    @Override
+    public AdapterManager adapterManager() {
+        return this;
+    }
+
 
 }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
index cacde06..2638611 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/persistsession/PersistenceSessionServiceInternalDefault.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.xactn.Transaction;
 import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
@@ -55,38 +56,20 @@ import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
 public class PersistenceSessionServiceInternalDefault implements PersistenceSessionServiceInternal {
 
     @Override
-    public ObjectAdapter lookupAdapterFor(Oid oid) {
-        return getPersistenceSession().lookupAdapterFor(oid);
+    public ObjectAdapter adapterFor(Object domainObject) {
+        return getPersistenceSession().adapterFor(domainObject);
     }
 
     @Override
-    public ObjectAdapter lookupAdapterFor(final Object pojo) {
-        return getPersistenceSession().lookupAdapterFor(pojo);
+    public ObjectAdapter adapterFor(Object pojo, ObjectAdapter parentAdapter, OneToManyAssociation collection) {
+        return getPersistenceSession().adapterFor(pojo, parentAdapter, collection);
     }
-
-    @Override
-    public ObjectAdapter adapterFor(final Object pojo) {
-        return getPersistenceSession().adapterFor(pojo);
-    }
-
-    @Override
-    public ObjectAdapter adapterFor(
-            final Object pojo,
-            final ObjectAdapter ownerAdapter,
-            final OneToManyAssociation collection) {
-        return getPersistenceSession().adapterFor(pojo, ownerAdapter, collection);
-    }
-
+    
     @Override
-    public ObjectAdapter addRecreatedPojoToCache(Oid oid, Object recreatedPojo) {
-        return getPersistenceSession().addRecreatedPojoToCache(oid, recreatedPojo);
+    public AdapterManager adapterManager() {
+        return getPersistenceSession();
     }
-
-    @Override
-    public void removeAdapterFromCache(ObjectAdapter adapter) {
-        getPersistenceSession().removeAdapterFromCache(adapter);
-    }
-
+    
     @Override
     public void makePersistent(final ObjectAdapter adapter) {
         getPersistenceSession().makePersistentInTransaction(adapter);
@@ -237,4 +220,7 @@ public class PersistenceSessionServiceInternalDefault implements PersistenceSess
     @javax.inject.Inject
     IsisSessionFactory isisSessionFactory;
 
+
+
+
 }