Touche up and fixes. Removed a lot of Serializable, which has been a left-over 
from the days of a serializable model.

Signed-off-by: niclas <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/931c2eeb
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/931c2eeb
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/931c2eeb

Branch: refs/heads/develop
Commit: 931c2eebe85dde6476e88787f21bed05b31fda6d
Parents: 07f65e0
Author: niclas <[email protected]>
Authored: Sat May 13 16:45:40 2017 +0800
Committer: niclas <[email protected]>
Committed: Sun May 14 12:07:56 2017 +0800

----------------------------------------------------------------------
 .../api/common/ConstructionException.java       |   2 -
 .../api/common/InvalidApplicationException.java |   5 +-
 .../polygene/api/common/QualifiedName.java      |   3 +-
 .../apache/polygene/api/common/TypeName.java    |   3 +-
 .../api/composite/AmbiguousTypeException.java   |   5 +-
 .../api/composite/CompositeInstance.java        |   8 +
 .../InvalidValueCompositeException.java         |   3 +-
 .../api/composite/NoSuchCompositeException.java |   5 +-
 .../polygene/api/constraint/Constraint.java     |   2 -
 .../api/constraint/ConstraintViolation.java     |   2 -
 .../ConstraintViolationException.java           |   5 +-
 .../polygene/api/entity/EntityReference.java    |   4 -
 .../polygene/api/entity/LifecycleException.java |   5 +-
 .../api/mixin/InitializationException.java      |   5 +-
 .../api/query/NotQueryableException.java        |   5 +-
 .../org/apache/polygene/api/query/Query.java    |   4 +-
 .../polygene/api/query/QueryException.java      |   5 +-
 .../api/query/QueryExpressionException.java     |   3 -
 .../api/service/qualifier/ServiceTags.java      |   3 -
 .../apache/polygene/api/usecase/Usecase.java    |   4 +-
 .../polygene/runtime/PolygeneRuntimeImpl.java   |  92 ++++------
 .../association/AbstractAssociationModel.java   |  13 +-
 .../bootstrap/CompositeAssemblyImpl.java        | 184 ++++++++++---------
 .../runtime/composite/FragmentClassLoader.java  |   1 -
 .../runtime/composite/TransientInstance.java    |   7 -
 .../polygene/runtime/entity/EntityInstance.java |   6 -
 .../runtime/property/PropertyInstance.java      |  55 +++---
 .../polygene/runtime/query/QueryImpl.java       |  10 +-
 .../runtime/service/ServiceInstance.java        |   7 -
 .../runtime/structure/ModuleInstance.java       |   4 +-
 .../runtime/type/ValueTypeFactoryInstance.java  |   8 +-
 .../runtime/unitofwork/ModuleUnitOfWork.java    |  45 +++--
 .../unitofwork/UnitOfWorkFactoryMixin.java      |   3 +-
 .../value/ValueBuilderWithPrototype.java        |   8 +-
 .../polygene/runtime/value/ValueInstance.java   |   9 +-
 .../runtime/injection/ServiceInjectionTest.java |  24 +--
 .../runtime/mixin/DefaultMethodsTest.java       |   8 +
 .../preferences/PreferencesEntityStoreInfo.java |   2 -
 .../polygene/test/internal/DockerRule.java      |   2 +-
 .../library/constraints/ContainsConstraint.java |   3 -
 .../constraints/GreaterThanConstraint.java      |   3 -
 .../constraints/InstanceOfConstraint.java       |   3 -
 .../library/constraints/LessThanConstraint.java |   3 -
 .../library/constraints/MatchesConstraint.java  |   3 -
 .../constraints/MaxLengthConstraint.java        |   5 -
 .../constraints/MinLengthConstraint.java        |   5 -
 .../NotEmptyCollectionConstraint.java           |   3 -
 .../library/constraints/OneOfConstraint.java    |   3 -
 .../library/constraints/RangeConstraint.java    |   3 -
 .../library/constraints/URIConstraint.java      |   4 -
 .../library/constraints/URLConstraint.java      |   4 -
 .../polygene/library/http/ConstraintInfo.java   |   5 +-
 .../library/http/ContextListenerInfo.java       |   2 -
 .../library/http/HelloWorldServlet.java         |   2 -
 .../polygene/library/logging/debug/Debug.java   |   7 +-
 .../library/logging/debug/DebugConcern.java     |   7 +-
 .../logging/debug/records/DebugRecord.java      |   3 +-
 .../debug/service/DebugOnConsoleSideEffect.java |   9 +-
 .../logging/debug/service/DebuggingService.java |   7 +-
 .../debug/service/DebuggingServiceMixin.java    |  19 +-
 .../library/logging/log/CategoryLog.java        |  19 +-
 .../library/logging/log/CategoryLogConcern.java |  19 +-
 .../library/logging/log/CategoryLogMixin.java   |  20 +-
 .../polygene/library/logging/log/SimpleLog.java |  19 +-
 .../library/logging/log/SimpleLogConcern.java   |  19 +-
 .../library/logging/log/StandardLog.java        |   7 +-
 .../library/logging/log/StandardLogConcern.java |   7 +-
 .../library/logging/log/records/LogRecord.java  |   3 +-
 .../logging/log/service/LoggingService.java     |   3 +-
 .../log/service/LoggingServiceMixin.java        |  19 +-
 .../library/restlet/PolygeneServerServlet.java  |   3 -
 71 files changed, 342 insertions(+), 468 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/common/ConstructionException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/common/ConstructionException.java
 
b/core/api/src/main/java/org/apache/polygene/api/common/ConstructionException.java
index 04a1b3a..9697284 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/common/ConstructionException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/common/ConstructionException.java
@@ -37,8 +37,6 @@ package org.apache.polygene.api.common;
 public class ConstructionException
     extends RuntimeException
 {
-    private static final long serialVersionUID = 1L;
-
     public ConstructionException()
     {
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/common/InvalidApplicationException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/common/InvalidApplicationException.java
 
b/core/api/src/main/java/org/apache/polygene/api/common/InvalidApplicationException.java
index fccd4bb..80df92a 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/common/InvalidApplicationException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/common/InvalidApplicationException.java
@@ -25,11 +25,8 @@ package org.apache.polygene.api.common;
  * This happens primarily when client code tries to instantiate Composites
  * and objects which have not been registered in the ModuleAssembly.
  */
-public class InvalidApplicationException
-    extends RuntimeException
+public class InvalidApplicationException extends RuntimeException
 {
-    private static final long serialVersionUID = 1L;
-
     public InvalidApplicationException( String string )
     {
         super( string );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java 
b/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
index 79d4578..36bf86a 100644
--- a/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
+++ b/core/api/src/main/java/org/apache/polygene/api/common/QualifiedName.java
@@ -20,7 +20,6 @@
 
 package org.apache.polygene.api.common;
 
-import java.io.Serializable;
 import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Member;
 import java.util.Objects;
@@ -52,7 +51,7 @@ import java.util.Objects;
  * object and can safely be used as keys in {@link java.util.Map}.
  */
 public final class QualifiedName
-    implements Comparable<QualifiedName>, Serializable
+    implements Comparable<QualifiedName>
 {
     private final TypeName typeName;
     private final String name;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/common/TypeName.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/common/TypeName.java 
b/core/api/src/main/java/org/apache/polygene/api/common/TypeName.java
index a178929..65b935e 100644
--- a/core/api/src/main/java/org/apache/polygene/api/common/TypeName.java
+++ b/core/api/src/main/java/org/apache/polygene/api/common/TypeName.java
@@ -19,7 +19,6 @@
  */
 package org.apache.polygene.api.common;
 
-import java.io.Serializable;
 import java.lang.reflect.Type;
 import java.util.Objects;
 import org.apache.polygene.api.util.Classes;
@@ -28,7 +27,7 @@ import org.apache.polygene.api.util.Classes;
  * Represents a Type name.
  */
 public final class TypeName
-    implements Serializable, Comparable<TypeName>
+    implements Comparable<TypeName>
 {
     private final String name;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/composite/AmbiguousTypeException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/composite/AmbiguousTypeException.java
 
b/core/api/src/main/java/org/apache/polygene/api/composite/AmbiguousTypeException.java
index 8c96697..e84bf44 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/composite/AmbiguousTypeException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/composite/AmbiguousTypeException.java
@@ -47,11 +47,8 @@ package org.apache.polygene.api.composite;
  * one is intended.
  * </p>
  */
-public class AmbiguousTypeException
-    extends RuntimeException
+public class AmbiguousTypeException extends RuntimeException
 {
-    private static final long serialVersionUID = 1L;
-
     public AmbiguousTypeException( String message )
     {
         super( message );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/composite/CompositeInstance.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/composite/CompositeInstance.java
 
b/core/api/src/main/java/org/apache/polygene/api/composite/CompositeInstance.java
index 03e6dc8..52e8759 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/composite/CompositeInstance.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/composite/CompositeInstance.java
@@ -21,6 +21,7 @@
 package org.apache.polygene.api.composite;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
 import org.apache.polygene.api.property.StateHolder;
 import org.apache.polygene.api.structure.MetaInfoHolder;
 import org.apache.polygene.api.structure.ModuleDescriptor;
@@ -42,4 +43,11 @@ public interface CompositeInstance
     CompositeDescriptor descriptor();
 
     StateHolder state();
+
+    static CompositeInstance compositeInstanceOf( Composite composite )
+    {
+        InvocationHandler handler = Proxy.getInvocationHandler( composite );
+        return (CompositeInstance) handler;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/composite/InvalidValueCompositeException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/composite/InvalidValueCompositeException.java
 
b/core/api/src/main/java/org/apache/polygene/api/composite/InvalidValueCompositeException.java
index c857a6e..8c03fb4 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/composite/InvalidValueCompositeException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/composite/InvalidValueCompositeException.java
@@ -22,8 +22,7 @@ package org.apache.polygene.api.composite;
 /**
  * This exception is thrown if a ValueComposite is invalid.
  */
-public class InvalidValueCompositeException
-    extends RuntimeException
+public class InvalidValueCompositeException extends RuntimeException
 {
     public InvalidValueCompositeException( String message )
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
 
b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
index e03eafc..c3f51bb 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/composite/NoSuchCompositeException.java
@@ -24,11 +24,8 @@ import 
org.apache.polygene.api.common.InvalidApplicationException;
 /**
  * This exception is thrown if client code tries to create a non-existing 
Composite type.
  */
-public class NoSuchCompositeException
-    extends InvalidApplicationException
+public class NoSuchCompositeException extends InvalidApplicationException
 {
-    private static final long serialVersionUID = 1L;
-
     private final String compositeType;
     private final String moduleName;
     private final String visibleTypes;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/constraint/Constraint.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/constraint/Constraint.java 
b/core/api/src/main/java/org/apache/polygene/api/constraint/Constraint.java
index 603b7e5..17df997 100644
--- a/core/api/src/main/java/org/apache/polygene/api/constraint/Constraint.java
+++ b/core/api/src/main/java/org/apache/polygene/api/constraint/Constraint.java
@@ -20,7 +20,6 @@
 
 package org.apache.polygene.api.constraint;
 
-import java.io.Serializable;
 import java.lang.annotation.Annotation;
 
 /**
@@ -28,7 +27,6 @@ import java.lang.annotation.Annotation;
  * value validation.
  */
 public interface Constraint<ANNOTATION extends Annotation, TYPE>
-    extends Serializable
 {
     /**
      * For each value or parameter which should be checked this method will be 
invoked.

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
 
b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
index 1236bbf..75bbecb 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolation.java
@@ -20,7 +20,6 @@
 
 package org.apache.polygene.api.constraint;
 
-import java.io.Serializable;
 import java.lang.annotation.Annotation;
 
 /**
@@ -28,7 +27,6 @@ import java.lang.annotation.Annotation;
  * is put in a collection of all violations that have occurred for this value 
check.
  */
 public final class ConstraintViolation
-    implements Serializable
 {
     private String name;
     private final Annotation constraint;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
 
b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
index 8f11602..a007a11 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/constraint/ConstraintViolationException.java
@@ -46,11 +46,8 @@ import static java.util.stream.Collectors.joining;
  * was invoked. The Exception also has support for localized messages of these 
violations.
  * </p>
  */
-public class ConstraintViolationException
-    extends IllegalArgumentException
+public class ConstraintViolationException extends IllegalArgumentException
 {
-    private static final long serialVersionUID = 1L;
-
     private final Collection<ConstraintViolation> constraintViolations;
     private String methodName;
     private String mixinTypeName;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java 
b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
index 1f28a0e..98d1003 100644
--- a/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
+++ b/core/api/src/main/java/org/apache/polygene/api/entity/EntityReference.java
@@ -20,7 +20,6 @@
 
 package org.apache.polygene.api.entity;
 
-import java.io.Serializable;
 import java.util.Objects;
 import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.identity.StringIdentity;
@@ -31,7 +30,6 @@ import org.apache.polygene.api.identity.StringIdentity;
  * <pre>123456-abcde</pre>
  */
 public final class EntityReference
-        implements Serializable
 {
     /**
      * Parse an Entity reference string to an EntityReference.
@@ -62,8 +60,6 @@ public final class EntityReference
         return new EntityReference(identity);
     }
 
-    private static final long serialVersionUID = 1L;
-
     private Identity identity;
 
     /**

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/entity/LifecycleException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/entity/LifecycleException.java 
b/core/api/src/main/java/org/apache/polygene/api/entity/LifecycleException.java
index e0b2580..2878538 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/entity/LifecycleException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/entity/LifecycleException.java
@@ -23,11 +23,8 @@ package org.apache.polygene.api.entity;
 /**
  * Thrown if Lifecycle invocation fails
  */
-public class LifecycleException
-    extends RuntimeException
+public class LifecycleException extends RuntimeException
 {
-    private static final long serialVersionUID = 1L;
-
     public LifecycleException()
     {
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/mixin/InitializationException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/mixin/InitializationException.java
 
b/core/api/src/main/java/org/apache/polygene/api/mixin/InitializationException.java
index 11159b1..254a2b7 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/mixin/InitializationException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/mixin/InitializationException.java
@@ -22,11 +22,8 @@ package org.apache.polygene.api.mixin;
 /**
  * Thrown when a Fragment or object could not be initialized.
  */
-public class InitializationException
-    extends RuntimeException
+public class InitializationException extends RuntimeException
 {
-    private static final long serialVersionUID = 1L;
-
     public InitializationException()
     {
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/query/NotQueryableException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/query/NotQueryableException.java
 
b/core/api/src/main/java/org/apache/polygene/api/query/NotQueryableException.java
index 75dd611..fc6c2a4 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/query/NotQueryableException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/query/NotQueryableException.java
@@ -29,11 +29,8 @@ import org.apache.polygene.api.util.Classes;
  * Thrown in case that a non queryable type or accessor (marked with 
@Queriable(false)) is used during query building,
  * or when non-Property, non-Associations are trying to be queried (possibly 
can not happen).
  */
-public class NotQueryableException
-    extends QueryException
+public class NotQueryableException extends QueryException
 {
-    private static final long serialVersionUID = 1L;
-
     /**
      * Constructor.
      *

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/query/Query.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/apache/polygene/api/query/Query.java 
b/core/api/src/main/java/org/apache/polygene/api/query/Query.java
index 8ab52f1..2c43da7 100644
--- a/core/api/src/main/java/org/apache/polygene/api/query/Query.java
+++ b/core/api/src/main/java/org/apache/polygene/api/query/Query.java
@@ -19,7 +19,6 @@
  */
 package org.apache.polygene.api.query;
 
-import java.io.Serializable;
 import java.util.stream.Stream;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.query.grammar.OrderBy;
@@ -39,8 +38,7 @@ import org.apache.polygene.api.query.grammar.OrderBy;
  *
  * @param <T> Entity type
  */
-public interface Query<T>
-    extends Iterable<T>, Serializable
+public interface Query<T> extends Iterable<T>
 {
     /**
      * Set the ordering rules. If many segments are used for ordering

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/query/QueryException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/query/QueryException.java 
b/core/api/src/main/java/org/apache/polygene/api/query/QueryException.java
index 6a52120..f4cd2a6 100644
--- a/core/api/src/main/java/org/apache/polygene/api/query/QueryException.java
+++ b/core/api/src/main/java/org/apache/polygene/api/query/QueryException.java
@@ -22,11 +22,8 @@ package org.apache.polygene.api.query;
 /**
  * Base class for Query exceptions.
  */
-public abstract class QueryException
-    extends RuntimeException
+public abstract class QueryException extends RuntimeException
 {
-    private static final long serialVersionUID = -3602596752342902060L;
-
     public QueryException()
     {
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/query/QueryExpressionException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/query/QueryExpressionException.java
 
b/core/api/src/main/java/org/apache/polygene/api/query/QueryExpressionException.java
index ed665ee..7b7731f 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/query/QueryExpressionException.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/query/QueryExpressionException.java
@@ -25,9 +25,6 @@ package org.apache.polygene.api.query;
 public class QueryExpressionException
     extends QueryException
 {
-
-    private static final long serialVersionUID = 1L;
-
     public QueryExpressionException( String message )
     {
         super( message );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/service/qualifier/ServiceTags.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/service/qualifier/ServiceTags.java
 
b/core/api/src/main/java/org/apache/polygene/api/service/qualifier/ServiceTags.java
index c616a9f..a0055bf 100644
--- 
a/core/api/src/main/java/org/apache/polygene/api/service/qualifier/ServiceTags.java
+++ 
b/core/api/src/main/java/org/apache/polygene/api/service/qualifier/ServiceTags.java
@@ -20,8 +20,6 @@
 
 package org.apache.polygene.api.service.qualifier;
 
-import java.io.Serializable;
-
 /**
  * Use this as metainfo about a Service to specify tags. Easiest way to set 
them on a service
  * is to use the <code>ServiceDeclaration.taggedWith(String...)</code> method.
@@ -30,7 +28,6 @@ import java.io.Serializable;
  * Selector.
  */
 public final class ServiceTags
-    implements Serializable
 {
     private String[] tags;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/api/src/main/java/org/apache/polygene/api/usecase/Usecase.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/polygene/api/usecase/Usecase.java 
b/core/api/src/main/java/org/apache/polygene/api/usecase/Usecase.java
index c47ce27..d730394 100644
--- a/core/api/src/main/java/org/apache/polygene/api/usecase/Usecase.java
+++ b/core/api/src/main/java/org/apache/polygene/api/usecase/Usecase.java
@@ -20,7 +20,6 @@
 
 package org.apache.polygene.api.usecase;
 
-import java.io.Serializable;
 import org.apache.polygene.api.common.MetaInfo;
 import org.apache.polygene.api.structure.MetaInfoHolder;
 
@@ -29,11 +28,10 @@ import org.apache.polygene.api.structure.MetaInfoHolder;
  * implementations decide what to do in certain circumstances.
  */
 public final class Usecase
-    implements Serializable, MetaInfoHolder
+    implements MetaInfoHolder
 {
     public static final Usecase DEFAULT = new Usecase( "Default", new 
MetaInfo() );
 
-    private static final long serialVersionUID = 1L;
     private final String name;
     private final MetaInfo metaInfo;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/PolygeneRuntimeImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/PolygeneRuntimeImpl.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/PolygeneRuntimeImpl.java
index 372fb18..37a602c 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/PolygeneRuntimeImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/PolygeneRuntimeImpl.java
@@ -64,7 +64,6 @@ import 
org.apache.polygene.runtime.composite.TransientInstance;
 import org.apache.polygene.runtime.entity.EntityInstance;
 import org.apache.polygene.runtime.property.PropertyInstance;
 import org.apache.polygene.runtime.service.ImportedServiceReferenceInstance;
-import org.apache.polygene.runtime.service.ServiceInstance;
 import org.apache.polygene.runtime.service.ServiceReferenceInstance;
 import org.apache.polygene.runtime.unitofwork.ModuleUnitOfWork;
 import org.apache.polygene.runtime.value.ValueInstance;
@@ -72,7 +71,7 @@ import org.apache.polygene.spi.PolygeneSPI;
 import org.apache.polygene.spi.entity.EntityState;
 
 import static java.lang.reflect.Proxy.getInvocationHandler;
-import static 
org.apache.polygene.runtime.composite.TransientInstance.compositeInstanceOf;
+import static 
org.apache.polygene.api.composite.CompositeInstance.compositeInstanceOf;
 
 /**
  * Incarnation of Polygene.
@@ -134,31 +133,20 @@ public final class PolygeneRuntimeImpl
     @Override
     public ModuleDescriptor moduleOf( Object compositeOrServiceReferenceOrUow )
     {
-        if( compositeOrServiceReferenceOrUow instanceof TransientComposite )
+        if( compositeOrServiceReferenceOrUow instanceof Composite )
         {
-            TransientComposite composite = (TransientComposite) 
compositeOrServiceReferenceOrUow;
-            return TransientInstance.compositeInstanceOf( composite ).module();
-        }
-        else if( compositeOrServiceReferenceOrUow instanceof EntityComposite )
-        {
-            EntityComposite composite = (EntityComposite) 
compositeOrServiceReferenceOrUow;
-            return EntityInstance.entityInstanceOf( composite ).module();
-        }
-        else if( compositeOrServiceReferenceOrUow instanceof ValueComposite )
-        {
-            ValueComposite composite = (ValueComposite) 
compositeOrServiceReferenceOrUow;
-            return ValueInstance.valueInstanceOf( composite ).module();
-        }
-        else if( compositeOrServiceReferenceOrUow instanceof ServiceComposite )
-        {
-            ServiceComposite composite = (ServiceComposite) 
compositeOrServiceReferenceOrUow;
-            InvocationHandler handler = getInvocationHandler( composite );
-            if( handler instanceof ServiceInstance )
-            {
-                return ( (ServiceInstance) handler ).module();
-            }
-            return ( (ServiceReferenceInstance.ServiceInvocationHandler) 
handler ).module();
+            return compositeInstanceOf( (Composite) 
compositeOrServiceReferenceOrUow ).module();
         }
+//        else if( compositeOrServiceReferenceOrUow instanceof 
ServiceComposite )
+//        {
+//            ServiceComposite composite = (ServiceComposite) 
compositeOrServiceReferenceOrUow;
+//            InvocationHandler handler = getInvocationHandler( composite );
+//            if( handler instanceof ServiceInstance )
+//            {
+//                return ( (ServiceInstance) handler ).module();
+//            }
+//            return ( (ServiceReferenceInstance.ServiceInvocationHandler) 
handler ).module();
+//        }
         else if( compositeOrServiceReferenceOrUow instanceof UnitOfWork )
         {
             ModuleUnitOfWork unitOfWork = (ModuleUnitOfWork) 
compositeOrServiceReferenceOrUow;
@@ -184,31 +172,20 @@ public final class PolygeneRuntimeImpl
     @Override
     public ModelDescriptor modelDescriptorFor( Object 
compositeOrServiceReference )
     {
-        if( compositeOrServiceReference instanceof TransientComposite )
-        {
-            TransientComposite composite = (TransientComposite) 
compositeOrServiceReference;
-            return TransientInstance.compositeInstanceOf( composite 
).descriptor();
-        }
-        else if( compositeOrServiceReference instanceof EntityComposite )
-        {
-            EntityComposite composite = (EntityComposite) 
compositeOrServiceReference;
-            return EntityInstance.entityInstanceOf( composite ).descriptor();
-        }
-        else if( compositeOrServiceReference instanceof ValueComposite )
+        if( compositeOrServiceReference instanceof Composite )
         {
-            ValueComposite composite = (ValueComposite) 
compositeOrServiceReference;
-            return ValueInstance.valueInstanceOf( composite ).descriptor();
-        }
-        else if( compositeOrServiceReference instanceof ServiceComposite )
-        {
-            ServiceComposite composite = (ServiceComposite) 
compositeOrServiceReference;
-            InvocationHandler handler = getInvocationHandler( composite );
-            if( handler instanceof ServiceInstance )
-            {
-                return ( (ServiceInstance) handler ).descriptor();
-            }
-            return ( (ServiceReferenceInstance.ServiceInvocationHandler) 
handler ).descriptor();
+            return compositeInstanceOf( (Composite) 
compositeOrServiceReference ).descriptor();
         }
+//        else if( compositeOrServiceReference instanceof ServiceComposite )
+//        {
+//            ServiceComposite composite = (ServiceComposite) 
compositeOrServiceReference;
+//            InvocationHandler handler = getInvocationHandler( composite );
+//            if( handler instanceof ServiceInstance )
+//            {
+//                return ( (ServiceInstance) handler ).descriptor();
+//            }
+//            return ( (ServiceReferenceInstance.ServiceInvocationHandler) 
handler ).descriptor();
+//        }
         else if( compositeOrServiceReference instanceof 
ServiceReferenceInstance )
         {
             ServiceReferenceInstance<?> reference = 
(ServiceReferenceInstance<?>) compositeOrServiceReference;
@@ -221,8 +198,9 @@ public final class PolygeneRuntimeImpl
             return importedServiceReference.serviceDescriptor();
         }
         throw new IllegalArgumentException( "Wrong type. Must be one of "
-                                            + Arrays.asList( 
TransientComposite.class, ValueComposite.class,
-                                                             
ServiceComposite.class, ServiceReference.class ) );
+                                            + Arrays.asList( 
TransientComposite.class, ValueComposite.class, EntityComposite.class,
+                                                             
ServiceComposite.class, ServiceReference.class,
+                                                             
ImportedServiceReferenceInstance.class ) );
     }
 
     @Override
@@ -238,7 +216,7 @@ public final class PolygeneRuntimeImpl
     {
         if( transsient instanceof TransientComposite )
         {
-            TransientInstance transientInstance = compositeInstanceOf( 
(Composite) transsient );
+            TransientInstance transientInstance = (TransientInstance) 
compositeInstanceOf( (Composite) transsient );
             return (TransientDescriptor) transientInstance.descriptor();
         }
         throw new IllegalArgumentException( "Wrong type. Must be subtype of " 
+ TransientComposite.class );
@@ -247,7 +225,7 @@ public final class PolygeneRuntimeImpl
     @Override
     public StateHolder stateOf( TransientComposite composite )
     {
-        return TransientInstance.compositeInstanceOf( composite ).state();
+        return compositeInstanceOf( composite ).state();
     }
 
     @Override
@@ -264,7 +242,7 @@ public final class PolygeneRuntimeImpl
     @Override
     public AssociationStateHolder stateOf( EntityComposite composite )
     {
-        return EntityInstance.entityInstanceOf( composite ).state();
+        return ( (EntityInstance) compositeInstanceOf( composite ) ).state();
     }
 
     @Override
@@ -272,7 +250,7 @@ public final class PolygeneRuntimeImpl
     {
         if( value instanceof ValueComposite )
         {
-            ValueInstance valueInstance = ValueInstance.valueInstanceOf( 
(ValueComposite) value );
+            ValueInstance valueInstance = (ValueInstance) compositeInstanceOf( 
(Composite) value );
             return valueInstance.descriptor();
         }
         throw new IllegalArgumentException( "Wrong type. {" + value + "} must 
be subtype of " + ValueComposite.class );
@@ -281,7 +259,7 @@ public final class PolygeneRuntimeImpl
     @Override
     public AssociationStateHolder stateOf( ValueComposite composite )
     {
-        return ValueInstance.valueInstanceOf( composite ).state();
+        return ( (ValueInstance) compositeInstanceOf( composite ) ).state();
     }
 
     @Override
@@ -295,7 +273,7 @@ public final class PolygeneRuntimeImpl
         if( service instanceof ServiceComposite )
         {
             ServiceComposite composite = (ServiceComposite) service;
-            return (ServiceDescriptor) ServiceInstance.serviceInstanceOf( 
composite ).descriptor();
+            return (ServiceDescriptor) compositeInstanceOf( composite 
).descriptor();
         }
         throw new IllegalArgumentException( "Wrong type. Must be subtype of "
                                             + ServiceComposite.class + " or " 
+ ServiceReference.class );
@@ -337,7 +315,7 @@ public final class PolygeneRuntimeImpl
     @Override
     public EntityState entityStateOf( EntityComposite composite )
     {
-        return EntityInstance.entityInstanceOf( composite ).entityState();
+        return ( (EntityInstance) compositeInstanceOf( composite ) 
).entityState();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
index 974a978..c8100ed 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/association/AbstractAssociationModel.java
@@ -6,6 +6,7 @@ import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
+import java.util.Objects;
 import org.apache.polygene.api.association.AbstractAssociation;
 import org.apache.polygene.api.association.AssociationDescriptor;
 import org.apache.polygene.api.association.GenericAssociationInfo;
@@ -42,6 +43,8 @@ public class AbstractAssociationModel<AT>
                                      ValueConstraintsInstance 
associationConstraintsInstance,
                                      MetaInfo metaInfo )
     {
+        Objects.requireNonNull( accessor );
+        Objects.requireNonNull( metaInfo );
         this.metaInfo = metaInfo;
         this.constraints = valueConstraintsInstance;
         this.associationConstraints = associationConstraintsInstance;
@@ -101,13 +104,19 @@ public class AbstractAssociationModel<AT>
     public void checkConstraints( Object value )
         throws ConstraintViolationException
     {
-        constraints.checkConstraints( value, accessor );
+        if( constraints != null )
+        {
+            constraints.checkConstraints( value, accessor );
+        }
     }
 
     public void checkAssociationConstraints( AbstractAssociation association )
         throws ConstraintViolationException
     {
-        associationConstraints.checkConstraints( association, accessor );
+        if( associationConstraints != null )
+        {
+            associationConstraints.checkConstraints( association, accessor );
+        }
     }
 
     public AssociationInfo builderInfo()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
index 4e173e4..08fd345 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/bootstrap/CompositeAssemblyImpl.java
@@ -211,101 +211,111 @@ public abstract class CompositeAssemblyImpl
     {
         List<Throwable> exceptions = new ArrayList<>();
         Set<Class<?>> thisDependencies = new HashSet<>();
-        types.forEach( mixinType ->
-                       {
-
-                           for( Method method : mixinType.getMethods() )
-                           {
-                               try
-                               {
-                                   if( !compositeMethodsModel.isImplemented( 
method )
-                                       && !Proxy.class.equals( 
method.getDeclaringClass().getSuperclass() )
-                                       && !Proxy.class.equals( 
method.getDeclaringClass() )
-                                       && !Modifier.isStatic( 
method.getModifiers() ) )
-                                   {
-                                       MixinModel mixinModel = 
implementMethod( method, mixinClasses );
-                                       if( mixinModel != null )
-                                       {
-                                           ConcernsModel concernsModel = 
concernsFor(
-                                               method,
-                                               mixinModel.mixinClass(),
-                                               concat( concernDeclarations( 
mixinModel.mixinClass() ),
-                                                       concernClasses.stream() 
)
-                                                                               
     );
-                                           SideEffectsModel sideEffectsModel = 
sideEffectsFor(
-                                               method,
-                                               mixinModel.mixinClass(),
-                                               concat( sideEffectDeclarations( 
mixinModel.mixinClass() ),
-                                                       
sideEffectClasses.stream() )
-                                                                               
              );
-                                           ConstraintsModel constraints = 
constraintsFor(
-                                               method,
-                                               toList( concat( 
constraintDeclarations( mixinModel.mixinClass() ),
-                                                               
constraintClasses.stream() ) )
-                                                                               
         );
-                                           CompositeMethodModel 
methodComposite = new CompositeMethodModel(
-                                               method,
-                                               constraints,
-                                               concernsModel,
-                                               sideEffectsModel,
-                                               mixinsModel
-                                           );
-
-                                           Stream<? extends Dependencies> 
source = Stream.of( methodComposite, mixinModel );
-                                           source.flatMap( 
Dependencies::dependencies )
-                                                 .filter( new 
DependencyModel.ScopeSpecification( This.class ) )
-                                                 .map( 
DependencyModel::rawInjectionType )
-                                                 .forEach( 
thisDependencies::add );
-
-                                           interfacesOf( 
mixinModel.mixinClass() )
-                                               .map( Classes.RAW_CLASS )
-                                               .filter( clazz -> Stream.of( 
Initializable.class, Lifecycle.class, InvocationHandler.class )
-                                                                       
.noneMatch( c -> c.equals( clazz ) ) )
-                                               .forEach( thisDependencies::add 
);
-
-                                           compositeMethodsModel.addMethod( 
methodComposite );
-                                       }
-                                   }
-                               }
-                               catch( Exception e )
-                               {
-                                   exceptions.add( e );
-                               }
-                           }
-                           // Add type to set of mixin types
-                           mixinsModel.addMixinType( mixinType );
-                       } );
+        types.stream()
+             .peek( mixinType -> mixinsModel.addMixinType( mixinType ) )
+             .flatMap( mixinType -> Arrays.stream( mixinType.getMethods() ) )
+             .forEach( method -> implementMixinMethod( method, mixinClasses, 
constraintClasses,
+                                                       concernClasses,
+                                                       sideEffectClasses,
+                                                       exceptions,
+                                                       thisDependencies
+                                                     )
+                     );
 
         // Implement all @This dependencies that were found
-        thisDependencies.forEach( thisDependency ->
-                                  {
-                                      // Add additional declarations from the 
@This type
-                                      Stream<Class<?>> typeConstraintClasses = 
concat(
-                                          constraintClasses.stream(),
-                                          constraintDeclarations( 
thisDependency ) );
-                                      Stream<Class<?>> typeConcernClasses = 
concat(
-                                          concernClasses.stream(),
-                                          concernDeclarations( thisDependency 
) );
-                                      Stream<Class<?>> typeSideEffectClasses = 
concat(
-                                          sideEffectClasses.stream(),
-                                          sideEffectDeclarations( 
thisDependency ) );
-                                      Stream<Class<?>> typeMixinClasses = 
concat(
-                                          mixinClasses.stream(),
-                                          mixinDeclarations( thisDependency ) 
);
-                                      List<? extends Class<?>> singleton = 
Collections.singletonList( thisDependency );
-                                      implementMixinType( singleton,
-                                                          toList( 
typeConstraintClasses ),
-                                                          toList( 
typeConcernClasses ),
-                                                          toList( 
typeSideEffectClasses ),
-                                                          toList( 
typeMixinClasses )
-                                                        );
-                                  } );
+        thisDependencies.forEach(
+            thisDependency ->
+            {
+                // Add additional declarations from the @This type
+                Stream<Class<?>> typeConstraintClasses = concat(
+                    constraintClasses.stream(),
+                    constraintDeclarations( thisDependency ) );
+                Stream<Class<?>> typeConcernClasses = concat(
+                    concernClasses.stream(),
+                    concernDeclarations( thisDependency ) );
+                Stream<Class<?>> typeSideEffectClasses = concat(
+                    sideEffectClasses.stream(),
+                    sideEffectDeclarations( thisDependency ) );
+                Stream<Class<?>> typeMixinClasses = concat(
+                    mixinClasses.stream(),
+                    mixinDeclarations( thisDependency ) );
+                List<? extends Class<?>> singleton = 
Collections.singletonList( thisDependency );
+                implementMixinType( singleton,
+                                    toList( typeConstraintClasses ),
+                                    toList( typeConcernClasses ),
+                                    toList( typeSideEffectClasses ),
+                                    toList( typeMixinClasses )
+                                  );
+            } );
         if( exceptions.size() > 0 )
         {
             throw new AssemblyReportException( exceptions );
         }
     }
 
+    private void implementMixinMethod( Method method,
+                                       List<Class<?>> mixinClasses,
+                                       List<Class<?>> constraintClasses,
+                                       List<Class<?>> concernClasses,
+                                       List<Class<?>> sideEffectClasses,
+                                       List<Throwable> exceptions,
+                                       Set<Class<?>> thisDependencies )
+    {
+        try
+        {
+            if( !compositeMethodsModel.isImplemented( method )
+                && !Proxy.class.equals( 
method.getDeclaringClass().getSuperclass() )
+                && !Proxy.class.equals( method.getDeclaringClass() )
+                && !Modifier.isStatic( method.getModifiers() ) )
+            {
+                MixinModel mixinModel = implementMethod( method, mixinClasses 
);
+                if( mixinModel != null )
+                {
+                    ConcernsModel concernsModel = concernsFor(
+                        method,
+                        mixinModel.mixinClass(),
+                        concat( concernDeclarations( mixinModel.mixinClass() ),
+                                concernClasses.stream() )
+                                                             );
+                    SideEffectsModel sideEffectsModel = sideEffectsFor(
+                        method,
+                        mixinModel.mixinClass(),
+                        concat( sideEffectDeclarations( 
mixinModel.mixinClass() ),
+                                sideEffectClasses.stream() )
+                                                                      );
+                    Stream<Class<?>> concat = concat( constraintDeclarations( 
mixinModel.mixinClass() ),
+                                                      
constraintClasses.stream() );
+                    ConstraintsModel constraints = constraintsFor( method, 
toList( concat ) );
+                    CompositeMethodModel methodComposite = new 
CompositeMethodModel(
+                        method,
+                        constraints,
+                        concernsModel,
+                        sideEffectsModel,
+                        mixinsModel
+                    );
+
+                    Stream<? extends Dependencies> source = Stream.of( 
methodComposite, mixinModel );
+                    source.flatMap( Dependencies::dependencies )
+                          .filter( new DependencyModel.ScopeSpecification( 
This.class ) )
+                          .map( DependencyModel::rawInjectionType )
+                          .forEach( thisDependencies::add );
+
+                    interfacesOf( mixinModel.mixinClass() )
+                        .map( Classes.RAW_CLASS )
+                        .filter( clazz -> Stream.of( Initializable.class, 
Lifecycle.class, InvocationHandler.class )
+                                                .noneMatch( c -> c.equals( 
clazz ) ) )
+                        .forEach( thisDependencies::add );
+
+                    compositeMethodsModel.addMethod( methodComposite );
+                }
+            }
+        }
+        catch( Exception e )
+        {
+            exceptions.add( e );
+        }
+    }
+
     @SuppressWarnings( "raw" )
     protected MixinModel implementMethod( Method method, List<Class<?>> 
mixinDeclarations )
     {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentClassLoader.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentClassLoader.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentClassLoader.java
index 5f56595..8849411 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentClassLoader.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/FragmentClassLoader.java
@@ -146,7 +146,6 @@ public class FragmentClassLoader
             {
                 name = "polygene." + name;
             }
-
             byte[] b = generateClass( name, baseClass );
             return defineClass( name, b, 0, b.length, 
baseClass.getProtectionDomain() );
         }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientInstance.java
index edc1a8b..89cb287 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/TransientInstance.java
@@ -20,7 +20,6 @@
 
 package org.apache.polygene.runtime.composite;
 
-import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.Arrays;
@@ -38,12 +37,6 @@ import org.apache.polygene.api.structure.ModuleDescriptor;
 public class TransientInstance
     implements CompositeInstance, MixinsInstance
 {
-    public static TransientInstance compositeInstanceOf( Composite composite )
-    {
-        InvocationHandler handler = Proxy.getInvocationHandler( composite );
-        return (TransientInstance) handler;
-    }
-
     private final Composite proxy;
     protected final Object[] mixins;
     protected StateHolder state;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
index b143086..6893225 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/entity/EntityInstance.java
@@ -20,7 +20,6 @@
 package org.apache.polygene.runtime.entity;
 
 import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
 import java.lang.reflect.Type;
 import java.util.List;
 import java.util.Objects;
@@ -51,11 +50,6 @@ import static java.util.stream.Collectors.toList;
 public final class EntityInstance
     implements CompositeInstance, MixinsInstance
 {
-    public static EntityInstance entityInstanceOf( EntityComposite composite )
-    {
-        return (EntityInstance) Proxy.getInvocationHandler( composite );
-    }
-
     private final EntityComposite proxy;
     private final UnitOfWork uow;
     private final EntityModel entityModel;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyInstance.java
index 41d5e3c..4ea4ea3 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/property/PropertyInstance.java
@@ -28,15 +28,17 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.polygene.api.composite.Composite;
 import org.apache.polygene.api.property.Property;
 import org.apache.polygene.api.property.PropertyDescriptor;
 import org.apache.polygene.api.property.PropertyWrapper;
 import org.apache.polygene.api.type.CollectionType;
 import org.apache.polygene.api.type.MapType;
 import org.apache.polygene.api.type.ValueCompositeType;
-import org.apache.polygene.api.value.ValueComposite;
 import org.apache.polygene.runtime.value.ValueInstance;
 
+import static 
org.apache.polygene.api.composite.CompositeInstance.compositeInstanceOf;
+
 /**
  * {@code PropertyInstance} represents a property.
  */
@@ -226,7 +228,7 @@ public class PropertyInstance<T>
             Object value = get();
             if( value != null )
             {
-                ValueInstance.valueInstanceOf( (ValueComposite) value 
).prepareToBuild();
+                prepareToBuild( value );
             }
         }
         else if( propertyDescriptor.valueType() instanceof CollectionType )
@@ -249,10 +251,7 @@ public class PropertyInstance<T>
                 if( collection.collectedType() instanceof ValueCompositeType )
                 {
                     Collection coll = (Collection) value;
-                    for( Object instance : coll )
-                    {
-                        ValueInstance.valueInstanceOf( (ValueComposite) 
instance ).prepareToBuild();
-                    }
+                    coll.forEach( this::prepareToBuild );
                 }
 
                 set( (T) value );
@@ -270,24 +269,22 @@ public class PropertyInstance<T>
                 MapType mapType = (MapType) propertyDescriptor.valueType();
                 if( mapType.keyType() instanceof ValueCompositeType )
                 {
-                    for( Object instance : map.keySet() )
-                    {
-                        ValueInstance.valueInstanceOf( (ValueComposite) 
instance ).prepareToBuild();
-                    }
+                    map.keySet().forEach( this::prepareToBuild );
                 }
                 if( mapType.valueType() instanceof ValueCompositeType )
                 {
-                    for( Object instance : map.values() )
-                    {
-                        ValueInstance.valueInstanceOf( (ValueComposite) 
instance ).prepareToBuild();
-                    }
+                    map.values().forEach( this::prepareToBuild );
                 }
-
                 set( (T) value );
             }
         }
     }
 
+    private void prepareToBuild( Object instance )
+    {
+        ( (ValueInstance) compositeInstanceOf( (Composite) instance ) 
).prepareToBuild();
+    }
+
     @SuppressWarnings( {"raw", "unchecked"} )
     public void prepareBuilderState( PropertyModel propertyDescriptor )
     {
@@ -297,7 +294,7 @@ public class PropertyInstance<T>
             Object value = get();
             if( value != null )
             {
-                ValueInstance.valueInstanceOf( (ValueComposite) value 
).prepareBuilderState();
+                prepareBuilderState( value );
             }
         }
         else if( propertyDescriptor.valueType() instanceof CollectionType )
@@ -309,15 +306,15 @@ public class PropertyInstance<T>
                 {
                     if( value instanceof List )
                     {
-                        value = (T) Collections.unmodifiableList( (List<? 
extends Object>) value );
+                        value = (T) Collections.unmodifiableList( (List<?>) 
value );
                     }
                     else if( value instanceof Set )
                     {
-                        value = (T) Collections.unmodifiableSet( (Set<? 
extends Object>) value );
+                        value = (T) Collections.unmodifiableSet( (Set<?>) 
value );
                     }
                     else
                     {
-                        value = (T) Collections.unmodifiableCollection( 
(Collection<? extends Object>) value );
+                        value = (T) Collections.unmodifiableCollection( 
(Collection<?>) value );
                     }
 
                     this.value = value;
@@ -327,10 +324,7 @@ public class PropertyInstance<T>
                 if( collection.collectedType() instanceof ValueCompositeType )
                 {
                     Collection coll = (Collection) value;
-                    for( Object instance : coll )
-                    {
-                        ValueInstance.valueInstanceOf( (ValueComposite) 
instance ).prepareBuilderState();
-                    }
+                    coll.forEach( this::prepareBuilderState );
                 }
             }
         }
@@ -344,18 +338,12 @@ public class PropertyInstance<T>
                 if( mapType.keyType() instanceof ValueCompositeType )
                 {
                     Map map = (Map) value;
-                    for( Object instance : map.keySet() )
-                    {
-                        ValueInstance.valueInstanceOf( (ValueComposite) 
instance ).prepareBuilderState();
-                    }
+                    map.keySet().forEach( this::prepareBuilderState );
                 }
                 if( mapType.valueType() instanceof ValueCompositeType )
                 {
                     Map map = (Map) value;
-                    for( Object instance : map.values() )
-                    {
-                        ValueInstance.valueInstanceOf( (ValueComposite) 
instance ).prepareBuilderState();
-                    }
+                    map.values().forEach( this::prepareBuilderState );
                 }
                 if( propertyDescriptor.isImmutable() )
                 {
@@ -368,4 +356,9 @@ public class PropertyInstance<T>
 
         model = propertyDescriptor;
     }
+
+    private void prepareBuilderState( Object value )
+    {
+        ( (ValueInstance) compositeInstanceOf( (Composite) value ) 
).prepareBuilderState();
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryImpl.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryImpl.java 
b/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryImpl.java
index d4d768c..cdbe633 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryImpl.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/query/QueryImpl.java
@@ -38,11 +38,9 @@ import org.apache.polygene.spi.query.QuerySource;
 /**
  * Default implementation of {@link org.apache.polygene.api.query.Query}.
  */
-/* package */ class QueryImpl<T>
+class QueryImpl<T>
     implements Query<T>
 {
-    private static final long serialVersionUID = 1L;
-
     /**
      * Type of queried entities.
      */
@@ -75,10 +73,10 @@ import org.apache.polygene.spi.query.QuerySource;
      * @param resultType  type of queried entities; cannot be null
      * @param whereClause where clause
      */
-    /* package */ QueryImpl( final Class<T> resultType,
+    QueryImpl( final Class<T> resultType,
                final Predicate<Composite> whereClause,
                final QuerySource querySource
-    )
+             )
     {
         this.resultType = resultType;
         this.whereClause = whereClause;
@@ -148,7 +146,7 @@ import org.apache.polygene.spi.query.QuerySource;
     {
         if( variables == null )
         {
-            variables = new HashMap<String, Object>();
+            variables = new HashMap<>();
         }
         variables.put( name, value );
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceInstance.java
index cae9e4b..ba21ca5 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceInstance.java
@@ -20,14 +20,12 @@
 
 package org.apache.polygene.runtime.service;
 
-import java.lang.reflect.Proxy;
 import org.apache.polygene.api.activation.Activation;
 import org.apache.polygene.api.activation.ActivationException;
 import org.apache.polygene.api.activation.PassivationException;
 import org.apache.polygene.api.configuration.Configuration;
 import org.apache.polygene.api.configuration.Enabled;
 import org.apache.polygene.api.service.Availability;
-import org.apache.polygene.api.service.ServiceComposite;
 import org.apache.polygene.api.util.Classes;
 import org.apache.polygene.runtime.composite.TransientInstance;
 import org.apache.polygene.runtime.composite.TransientStateInstance;
@@ -38,11 +36,6 @@ import 
org.apache.polygene.runtime.composite.TransientStateInstance;
 public class ServiceInstance extends TransientInstance
     implements Activation
 {
-    public static TransientInstance serviceInstanceOf( ServiceComposite 
composite )
-    {
-        return (TransientInstance) Proxy.getInvocationHandler( composite );
-    }
-
     private final boolean implementsServiceAvailable;
     private final boolean hasEnabledConfiguration;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
index 09a3eb6..955df41 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/structure/ModuleInstance.java
@@ -66,7 +66,6 @@ import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
 import org.apache.polygene.api.value.NoSuchValueException;
 import org.apache.polygene.api.value.ValueBuilder;
 import org.apache.polygene.api.value.ValueBuilderFactory;
-import org.apache.polygene.api.value.ValueComposite;
 import org.apache.polygene.api.value.ValueDescriptor;
 import org.apache.polygene.runtime.activation.ActivationDelegate;
 import org.apache.polygene.runtime.composite.FunctionStateResolver;
@@ -94,6 +93,7 @@ import org.apache.polygene.spi.module.ModuleSpi;
 
 import static java.util.Arrays.asList;
 import static java.util.stream.Stream.concat;
+import static 
org.apache.polygene.api.composite.CompositeInstance.compositeInstanceOf;
 
 /**
  * Instance of a Polygene Module. Contains the various composites for this 
Module.
@@ -326,7 +326,7 @@ public class ModuleInstance
     {
         Objects.requireNonNull( prototype, "prototype" );
 
-        ValueInstance valueInstance = ValueInstance.valueInstanceOf( 
(ValueComposite) prototype );
+        ValueInstance valueInstance = (ValueInstance) compositeInstanceOf( 
(Composite) prototype );
         Class<Composite> valueType = (Class<Composite>) 
valueInstance.types().findFirst().orElse( null );
 
         ValueDescriptor model = typeLookup.lookupValueModel( valueType );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/type/ValueTypeFactoryInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/type/ValueTypeFactoryInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/type/ValueTypeFactoryInstance.java
index 77273c4..e5ccdf5 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/type/ValueTypeFactoryInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/type/ValueTypeFactoryInstance.java
@@ -24,6 +24,7 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import org.apache.polygene.api.common.InvalidApplicationException;
+import org.apache.polygene.api.composite.Composite;
 import org.apache.polygene.api.entity.EntityComposite;
 import org.apache.polygene.api.entity.EntityDescriptor;
 import org.apache.polygene.api.structure.ModuleDescriptor;
@@ -40,6 +41,8 @@ import org.apache.polygene.runtime.entity.EntityInstance;
 import org.apache.polygene.runtime.value.ValueInstance;
 import org.apache.polygene.spi.type.ValueTypeFactory;
 
+import static 
org.apache.polygene.api.composite.CompositeInstance.compositeInstanceOf;
+
 public class ValueTypeFactoryInstance implements ValueTypeFactory
 {
     private static final ValueTypeFactoryInstance INSTANCE = new 
ValueTypeFactoryInstance();
@@ -54,11 +57,12 @@ public class ValueTypeFactoryInstance implements 
ValueTypeFactory
     {
         if( object instanceof ValueComposite )
         {
-            return ValueInstance.valueInstanceOf( (ValueComposite) object 
).descriptor().valueType();
+            ValueInstance valueInstance = (ValueInstance) compositeInstanceOf( 
(Composite) object );
+            return valueInstance.descriptor().valueType();
         }
         if( object instanceof EntityComposite )
         {
-            return EntityInstance.entityInstanceOf( (EntityComposite) object 
).descriptor().valueType();
+            return ( (EntityInstance) compositeInstanceOf( (Composite) object 
) ).descriptor().valueType();
         }
         if( object instanceof Enum )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
index c23d0c1..7f4dedf 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/ModuleUnitOfWork.java
@@ -68,13 +68,12 @@ import 
org.apache.polygene.api.unitofwork.UnitOfWorkCompletionException;
 import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
 import org.apache.polygene.api.usecase.Usecase;
 import org.apache.polygene.api.value.ValueBuilder;
-import org.apache.polygene.api.value.ValueComposite;
 import org.apache.polygene.runtime.association.AssociationInstance;
 import org.apache.polygene.runtime.composite.FunctionStateResolver;
 import org.apache.polygene.runtime.entity.EntityInstance;
 import org.apache.polygene.runtime.entity.EntityModel;
 import org.apache.polygene.runtime.property.PropertyModel;
-import org.apache.polygene.runtime.value.ValueInstance;
+import org.apache.polygene.runtime.value.ValueStateInstance;
 import org.apache.polygene.spi.entity.EntityState;
 import org.apache.polygene.spi.entity.EntityStatus;
 import org.apache.polygene.spi.entitystore.EntityStore;
@@ -84,6 +83,7 @@ import org.apache.polygene.spi.query.EntityFinderException;
 import org.apache.polygene.spi.query.QueryBuilderSPI;
 import org.apache.polygene.spi.query.QuerySource;
 
+import static 
org.apache.polygene.api.composite.CompositeInstance.compositeInstanceOf;
 import static org.apache.polygene.api.identity.HasIdentity.IDENTITY_STATE_NAME;
 
 /**
@@ -306,7 +306,7 @@ public class ModuleUnitOfWork
         throws NoSuchEntityTypeException
     {
         EntityComposite entityComposite = (EntityComposite) entity;
-        EntityInstance compositeInstance = EntityInstance.entityInstanceOf( 
entityComposite );
+        EntityInstance compositeInstance = (EntityInstance) 
compositeInstanceOf( entityComposite );
         EntityDescriptor model = compositeInstance.entityModel();
         Class<T> type = (Class<T>) 
compositeInstance.types().findFirst().orElse( null );
         return uow.get( compositeInstance.reference(), this, 
Collections.singletonList( model ), type );
@@ -320,7 +320,7 @@ public class ModuleUnitOfWork
 
         EntityComposite entityComposite = (EntityComposite) entity;
 
-        EntityInstance compositeInstance = EntityInstance.entityInstanceOf( 
entityComposite );
+        EntityInstance compositeInstance = (EntityInstance) 
compositeInstanceOf( entityComposite );
 
         if( compositeInstance.status() == EntityStatus.NEW )
         {
@@ -516,13 +516,13 @@ public class ModuleUnitOfWork
         {
             T entity = get( primaryType, valueComposite.identity().get() );
             // If successful, then this entity is to by modified.
-            EntityInstance instance = EntityInstance.entityInstanceOf( 
(EntityComposite) entity );
+            EntityInstance instance = (EntityInstance) compositeInstanceOf( 
(EntityComposite) entity );
             EntityState state = instance.entityState();
             FunctionStateResolver stateResolver = new FunctionStateResolver( 
propertyFunction,
                                                                              
assocationFunction,
                                                                              
manyAssocFunction,
                                                                              
namedAssocFunction );
-            EntityModel model = (EntityModel) EntityInstance.entityInstanceOf( 
(EntityComposite) entity ).descriptor();
+            EntityModel model = (EntityModel) compositeInstanceOf( (Composite) 
entity ).descriptor();
             stateResolver.populateState( model, state );
             return entity;
         }
@@ -553,6 +553,11 @@ public class ModuleUnitOfWork
         return converter;
     }
 
+    private static EntityState getEntityState( Object entity )
+    {
+        return ( (EntityInstance) compositeInstanceOf( (Composite) entity ) 
).entityState();
+    }
+
     private static class UoWQuerySource implements QuerySource
     {
         private final ModuleUnitOfWork moduleUnitOfWork;
@@ -673,8 +678,7 @@ public class ModuleUnitOfWork
         @Override
         public Object apply( PropertyDescriptor propertyDescriptor )
         {
-            EntityState entityState = EntityInstance.entityInstanceOf( 
(EntityComposite) entity ).entityState();
-            return entityState.propertyValueOf( 
propertyDescriptor.qualifiedName() );
+            return getEntityState( entity ).propertyValueOf( 
propertyDescriptor.qualifiedName() );
         }
     }
 
@@ -691,8 +695,7 @@ public class ModuleUnitOfWork
         @Override
         public EntityReference apply( AssociationDescriptor 
associationDescriptor )
         {
-            EntityState entityState = EntityInstance.entityInstanceOf( 
(EntityComposite) entity ).entityState();
-            return entityState.associationValueOf( 
associationDescriptor.qualifiedName() );
+            return getEntityState( entity ).associationValueOf( 
associationDescriptor.qualifiedName() );
         }
     }
 
@@ -709,8 +712,7 @@ public class ModuleUnitOfWork
         @Override
         public Stream<EntityReference> apply( AssociationDescriptor 
associationDescriptor )
         {
-            EntityState entityState = EntityInstance.entityInstanceOf( 
(EntityComposite) entity ).entityState();
-            return entityState.manyAssociationValueOf( 
associationDescriptor.qualifiedName() ).stream();
+            return getEntityState( entity ).manyAssociationValueOf( 
associationDescriptor.qualifiedName() ).stream();
         }
     }
 
@@ -727,9 +729,9 @@ public class ModuleUnitOfWork
         @Override
         public Stream<Map.Entry<String, EntityReference>> apply( 
AssociationDescriptor associationDescriptor )
         {
-            EntityState entityState = EntityInstance.entityInstanceOf( 
(EntityComposite) entity ).entityState();
-            return entityState.namedAssociationValueOf( 
associationDescriptor.qualifiedName() ).stream();
+            return getEntityState( entity ).namedAssociationValueOf( 
associationDescriptor.qualifiedName() ).stream();
         }
+
     }
 
     private class ToEntityPropertyMappingFunction<T>
@@ -745,7 +747,7 @@ public class ModuleUnitOfWork
         @Override
         public Object apply( PropertyDescriptor propertyDescriptor )
         {
-            StateHolder state = ValueInstance.valueInstanceOf( 
(ValueComposite) value ).state();
+            StateHolder state = getValueStateInstance( value );
             Property<Object> property = state.propertyFor( 
propertyDescriptor.accessor() );
             return property.get();
         }
@@ -766,7 +768,7 @@ public class ModuleUnitOfWork
         @SuppressWarnings( "unchecked" )
         public EntityReference apply( AssociationDescriptor 
associationDescriptor )
         {
-            AssociationStateHolder state = ValueInstance.valueInstanceOf( 
(ValueComposite) value ).state();
+            AssociationStateHolder state = getValueStateInstance( value );
             AssociationInstance<T> association = (AssociationInstance<T>) 
state.associationFor( associationDescriptor.accessor() );
             return association.getAssociationState().get();
         }
@@ -786,8 +788,7 @@ public class ModuleUnitOfWork
         @Override
         public Stream<EntityReference> apply( AssociationDescriptor 
associationDescriptor )
         {
-            ValueInstance valueInstance = ValueInstance.valueInstanceOf( 
(ValueComposite) value );
-            return valueInstance.state().manyAssociationFor( 
associationDescriptor.accessor() ).references();
+            return getValueStateInstance( value ).manyAssociationFor( 
associationDescriptor.accessor() ).references();
         }
     }
 
@@ -804,8 +805,12 @@ public class ModuleUnitOfWork
         @Override
         public Stream<Map.Entry<String, EntityReference>> apply( 
AssociationDescriptor associationDescriptor )
         {
-            ValueInstance valueInstance = ValueInstance.valueInstanceOf( 
(ValueComposite) value );
-            return valueInstance.state().namedAssociationFor( 
associationDescriptor.accessor() ).references();
+            return getValueStateInstance( value ).namedAssociationFor( 
associationDescriptor.accessor() ).references();
         }
     }
+
+    private static ValueStateInstance getValueStateInstance( Object value )
+    {
+        return (ValueStateInstance) compositeInstanceOf( (Composite) value 
).state();
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkFactoryMixin.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkFactoryMixin.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkFactoryMixin.java
index d5a3609..13132c6 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkFactoryMixin.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/unitofwork/UnitOfWorkFactoryMixin.java
@@ -22,6 +22,7 @@ package org.apache.polygene.runtime.unitofwork;
 
 import java.time.Instant;
 import java.util.Stack;
+import org.apache.polygene.api.composite.CompositeInstance;
 import org.apache.polygene.api.composite.TransientBuilderFactory;
 import org.apache.polygene.api.entity.EntityComposite;
 import org.apache.polygene.api.injection.scope.Structure;
@@ -94,7 +95,7 @@ public class UnitOfWorkFactoryMixin
     @Override
     public UnitOfWork getUnitOfWork( EntityComposite entity )
     {
-        EntityInstance instance = EntityInstance.entityInstanceOf( entity );
+        EntityInstance instance = (EntityInstance) 
CompositeInstance.compositeInstanceOf( entity );
         return instance.unitOfWork();
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderWithPrototype.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderWithPrototype.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderWithPrototype.java
index 78815f6..ecf2e5f 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderWithPrototype.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueBuilderWithPrototype.java
@@ -25,10 +25,10 @@ import java.util.stream.Stream;
 import org.apache.polygene.api.association.AssociationDescriptor;
 import org.apache.polygene.api.association.AssociationStateHolder;
 import org.apache.polygene.api.common.ConstructionException;
+import org.apache.polygene.api.composite.Composite;
 import org.apache.polygene.api.entity.EntityReference;
 import org.apache.polygene.api.property.PropertyDescriptor;
 import org.apache.polygene.api.value.ValueBuilder;
-import org.apache.polygene.api.value.ValueComposite;
 import org.apache.polygene.api.value.ValueDescriptor;
 import org.apache.polygene.runtime.composite.FunctionStateResolver;
 import org.apache.polygene.runtime.composite.MixinModel;
@@ -38,6 +38,8 @@ import org.apache.polygene.runtime.composite.UsesInstance;
 import org.apache.polygene.runtime.injection.InjectionContext;
 import org.apache.polygene.runtime.structure.ModuleInstance;
 
+import static 
org.apache.polygene.api.composite.CompositeInstance.compositeInstanceOf;
+
 /**
  * Implementation of ValueBuilder with a prototype supplied
  */
@@ -50,12 +52,12 @@ public class ValueBuilderWithPrototype<T>
     public ValueBuilderWithPrototype( ValueDescriptor compositeModelModule,
                                       ModuleInstance currentModule,
                                       T prototype
-    )
+                                    )
     {
         valueModel = (ValueModel) compositeModelModule;
         MixinsModel mixinsModel = valueModel.mixinsModel();
         Object[] mixins = mixinsModel.newMixinHolder();
-        final ValueStateInstance prototypeState = 
ValueInstance.valueInstanceOf( (ValueComposite) prototype ).state();
+        final ValueStateInstance prototypeState = ( (ValueInstance) 
compositeInstanceOf( (Composite) prototype ) ).state();
         StateResolver resolver = new FunctionStateResolver(
             new PropertyDescriptorFunction( prototypeState ),
             new AssociationDescriptorEntityReferenceFunction( prototypeState ),

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
 
b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
index 47e8460..63c38d5 100644
--- 
a/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/polygene/runtime/value/ValueInstance.java
@@ -22,7 +22,6 @@ package org.apache.polygene.runtime.value;
 import java.lang.reflect.Proxy;
 import org.apache.polygene.api.composite.CompositeInstance;
 import org.apache.polygene.api.serialization.Serializer;
-import org.apache.polygene.api.value.ValueComposite;
 import org.apache.polygene.runtime.composite.MixinsInstance;
 import org.apache.polygene.runtime.composite.TransientInstance;
 import org.apache.polygene.runtime.property.PropertyInstance;
@@ -31,15 +30,9 @@ import org.apache.polygene.spi.module.ModuleSpi;
 /**
  * ValueComposite instance
  */
-public final class ValueInstance
-    extends TransientInstance
+public final class ValueInstance extends TransientInstance
     implements CompositeInstance, MixinsInstance
 {
-    public static ValueInstance valueInstanceOf( ValueComposite composite )
-    {
-        return (ValueInstance) Proxy.getInvocationHandler( composite );
-    }
-
     public ValueInstance( ValueModel compositeModel, Object[] mixins, 
ValueStateInstance state )
     {
         super( compositeModel, mixins, state );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
 
b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
index 31c6b82..e0d8f6b 100644
--- 
a/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
+++ 
b/core/runtime/src/test/java/org/apache/polygene/runtime/injection/ServiceInjectionTest.java
@@ -24,12 +24,11 @@ import java.io.Serializable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.function.Predicate;
-import org.apache.polygene.api.identity.Identity;
-import org.apache.polygene.api.identity.StringIdentity;
-import org.junit.Test;
 import org.apache.polygene.api.activation.ActivationException;
 import org.apache.polygene.api.common.ConstructionException;
 import org.apache.polygene.api.common.Optional;
+import org.apache.polygene.api.identity.Identity;
+import org.apache.polygene.api.identity.StringIdentity;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.mixin.Mixins;
 import org.apache.polygene.api.object.ObjectFactory;
@@ -45,11 +44,12 @@ import org.apache.polygene.bootstrap.LayerAssembly;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.bootstrap.ServiceDeclaration;
 import org.apache.polygene.bootstrap.SingletonAssembler;
+import org.junit.Test;
 
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertEquals;
 import static org.apache.polygene.api.common.Visibility.application;
 import static org.apache.polygene.api.common.Visibility.layer;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
 /**
@@ -168,17 +168,17 @@ public class ServiceInjectionTest
     }
 
     @Mixins( MyServiceMixin.class )
-    public static interface MyServiceComposite
+    public interface MyServiceComposite
         extends MyService, ServiceComposite
     {
     }
 
-    public static interface MyServiceComposite2
+    public interface MyServiceComposite2
         extends MyServiceComposite
     {
     }
 
-    public static interface MyService
+    public interface MyService
     {
         String doStuff();
     }
@@ -302,7 +302,7 @@ public class ServiceInjectionTest
     @Retention( RetentionPolicy.RUNTIME )
     public @interface Named
     {
-        public abstract String value();
+        String value();
     }
 
     public static final class NamedSelector
@@ -337,13 +337,13 @@ public class ServiceInjectionTest
         }
     }
 
-    public static interface Foo<T>
+    public interface Foo<T>
     {
         T get();
     }
 
     @Mixins( StringService.Mixin.class )
-    public static interface StringService
+    public interface StringService
         extends Foo<String>, ServiceComposite
     {
         class Mixin
@@ -358,7 +358,7 @@ public class ServiceInjectionTest
     }
 
     @Mixins( LongService.Mixin.class )
-    public static interface LongService
+    public interface LongService
         extends Foo<Long>, ServiceComposite
     {
         class Mixin

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/DefaultMethodsTest.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/DefaultMethodsTest.java
 
b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/DefaultMethodsTest.java
index 7795329..320d98b 100644
--- 
a/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/DefaultMethodsTest.java
+++ 
b/core/runtime/src/test/java/org/apache/polygene/runtime/mixin/DefaultMethodsTest.java
@@ -51,6 +51,7 @@ public class DefaultMethodsTest extends AbstractPolygeneTest
         phrase.set( "Hello" );
         Hello hello = builder.newInstance();
         assertThat( hello.speak(), equalTo( "Hello" ) );
+        assertThat( Hello.noise(), equalTo( "Good Bye" ) );
     }
 
     @Test
@@ -62,6 +63,8 @@ public class DefaultMethodsTest extends AbstractPolygeneTest
         phrase.set( "Hello" );
         Hello hello = builder.newInstance();
         assertThat( hello.speak(), equalTo( "Hello, Mixin!" ) );
+        assertThat( Hello.noise(), equalTo( "Good Bye" ) );
+
     }
 
     public interface Hello
@@ -72,6 +75,11 @@ public class DefaultMethodsTest extends AbstractPolygeneTest
         {
             return phrase().get();
         }
+
+        static String noise()
+        {
+            return "Good Bye";
+        }
     }
 
     public static abstract class SpeakMixin

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/931c2eeb/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreInfo.java
----------------------------------------------------------------------
diff --git 
a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreInfo.java
 
b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreInfo.java
index fc59c15..f1ca941 100644
--- 
a/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreInfo.java
+++ 
b/extensions/entitystore-preferences/src/main/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreInfo.java
@@ -19,14 +19,12 @@
  */
 package org.apache.polygene.entitystore.preferences;
 
-import java.io.Serializable;
 import java.util.prefs.Preferences;
 
 /**
  * @author [email protected]
  */
 public final class PreferencesEntityStoreInfo
-    implements Serializable
 {
     private Preferences rootNode;
 

Reply via email to