http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java 
b/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
deleted file mode 100644
index a109310..0000000
--- a/core/api/src/main/java/org/apache/zest/api/query/QueryExpressions.java
+++ /dev/null
@@ -1,944 +0,0 @@
-/*
- * Copyright 2007-2011 Rickard Öberg.
- * Copyright 2007-2010 Niclas Hedhman.
- * Copyright 2008 Alin Dreghiciu.
- * Copyright 2012 Stanislav Muhametsin.
- * Copyright 2012-2014 Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * ied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.zest.api.query;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.Collection;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.association.GenericAssociationInfo;
-import org.apache.zest.api.association.ManyAssociation;
-import org.apache.zest.api.association.NamedAssociation;
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.api.entity.Identity;
-import org.apache.zest.api.injection.scope.State;
-import org.apache.zest.api.property.GenericPropertyInfo;
-import org.apache.zest.api.property.Property;
-import org.apache.zest.api.query.grammar.AndSpecification;
-import org.apache.zest.api.query.grammar.AssociationFunction;
-import org.apache.zest.api.query.grammar.AssociationNotNullSpecification;
-import org.apache.zest.api.query.grammar.AssociationNullSpecification;
-import org.apache.zest.api.query.grammar.ContainsAllSpecification;
-import org.apache.zest.api.query.grammar.ContainsSpecification;
-import org.apache.zest.api.query.grammar.EqSpecification;
-import org.apache.zest.api.query.grammar.GeSpecification;
-import org.apache.zest.api.query.grammar.GtSpecification;
-import org.apache.zest.api.query.grammar.LeSpecification;
-import org.apache.zest.api.query.grammar.LtSpecification;
-import org.apache.zest.api.query.grammar.ManyAssociationContainsSpecification;
-import org.apache.zest.api.query.grammar.ManyAssociationFunction;
-import org.apache.zest.api.query.grammar.MatchesSpecification;
-import 
org.apache.zest.api.query.grammar.NamedAssociationContainsNameSpecification;
-import org.apache.zest.api.query.grammar.NamedAssociationContainsSpecification;
-import org.apache.zest.api.query.grammar.NamedAssociationFunction;
-import org.apache.zest.api.query.grammar.NeSpecification;
-import org.apache.zest.api.query.grammar.NotSpecification;
-import org.apache.zest.api.query.grammar.OrSpecification;
-import org.apache.zest.api.query.grammar.OrderBy;
-import org.apache.zest.api.query.grammar.PropertyFunction;
-import org.apache.zest.api.query.grammar.PropertyNotNullSpecification;
-import org.apache.zest.api.query.grammar.PropertyNullSpecification;
-import org.apache.zest.api.query.grammar.PropertyReference;
-import org.apache.zest.api.query.grammar.Variable;
-import org.apache.zest.api.util.NullArgumentException;
-import org.apache.zest.functional.Specification;
-
-import static org.apache.zest.functional.Iterables.first;
-import static org.apache.zest.functional.Iterables.prepend;
-
-/**
- * Static factory methods for query expressions and operators.
- */
-public final class QueryExpressions
-{
-    // This is used for eq(Association,Composite)
-    private static final Method IDENTITY_METHOD;
-
-    static
-    {
-        try
-        {
-            IDENTITY_METHOD = Identity.class.getMethod( "identity" );
-        }
-        catch( NoSuchMethodException e )
-        {
-            throw new InternalError( "Zest Core API codebase is corrupted. 
Contact Zest team: QueryExpressions" );
-        }
-    }
-
-    // Templates and variables -----------------------------------------------|
-
-    /**
-     * Create a Query Template using the given type.
-     *
-     * @param <T> the type of the template
-     * @param clazz a class declaring the type of the template
-     *
-     * @return a new Query Template
-     */
-    public static <T> T templateFor( Class<T> clazz )
-    {
-        NullArgumentException.validateNotNull( "Template class", clazz );
-
-        if( clazz.isInterface() )
-        {
-            return clazz.cast( Proxy.newProxyInstance( clazz.getClassLoader(),
-                                                       array( clazz ),
-                                                       new TemplateHandler<T>( 
null, null, null, null ) ) );
-        }
-        else
-        {
-            try
-            {
-                T mixin = clazz.newInstance();
-                for( Field field : clazz.getFields() )
-                {
-                    if( field.getAnnotation( State.class ) != null )
-                    {
-                        if( field.getType().equals( Property.class ) )
-                        {
-                            field.set( mixin,
-                                       Proxy.newProxyInstance( 
field.getType().getClassLoader(),
-                                                               array( 
field.getType() ),
-                                                               new 
PropertyReferenceHandler<>( new PropertyFunction<T>( null, null, null, null, 
field ) ) ) );
-                        }
-                        else if( field.getType().equals( Association.class ) )
-                        {
-                            field.set( mixin,
-                                       Proxy.newProxyInstance( 
field.getType().getClassLoader(),
-                                                               array( 
field.getType() ),
-                                                               new 
AssociationReferenceHandler<>( new AssociationFunction<T>( null, null, null, 
field ) ) ) );
-                        }
-                        else if( field.getType().equals( ManyAssociation.class 
) )
-                        {
-                            field.set( mixin,
-                                       Proxy.newProxyInstance( 
field.getType().getClassLoader(),
-                                                               array( 
field.getType() ),
-                                                               new 
ManyAssociationReferenceHandler<>( new ManyAssociationFunction<T>( null, null, 
null, field ) ) ) );
-                        }
-                        else if( field.getType().equals( 
NamedAssociation.class ) )
-                        {
-                            field.set( mixin,
-                                       Proxy.newProxyInstance( 
field.getType().getClassLoader(),
-                                                               array( 
field.getType() ),
-                                                               new 
NamedAssociationReferenceHandler<>( new NamedAssociationFunction<T>( null, 
null, null, field ) ) ) );
-                        }
-                    }
-                }
-                return mixin;
-            }
-            catch( IllegalAccessException | IllegalArgumentException | 
InstantiationException | SecurityException e )
-            {
-                throw new IllegalArgumentException( "Cannot use class as 
template", e );
-            }
-        }
-    }
-
-    /**
-     * Create a Query Template using the given mixin class and association.
-     *
-     * @param <T> the type of the template
-     * @param mixinType  a class declaring the type of the template
-     * @param association an association
-     *
-     * @return a new Query Template
-     */
-    public static <T> T templateFor( final Class<T> mixinType, Association<?> 
association )
-    {
-        NullArgumentException.validateNotNull( "Mixin class", mixinType );
-        NullArgumentException.validateNotNull( "Association", association );
-        return mixinType.cast( Proxy.newProxyInstance( 
mixinType.getClassLoader(),
-                                                       array( mixinType ),
-                                                       new TemplateHandler<T>( 
null,
-                                                                               
association( association ),
-                                                                               
null,
-                                                                               
null ) ) );
-    }
-
-    public static <T> T oneOf( final ManyAssociation<T> association )
-    {
-        NullArgumentException.validateNotNull( "Association", association );
-        return association.get( 0 );
-    }
-
-    public static <T> T oneOf( final NamedAssociation<T> association )
-    {
-        NullArgumentException.validateNotNull( "Association", association );
-        return association.get( first( association ) );
-    }
-
-    /**
-     * Create a new Query Variable.
-     *
-     * @param name a name for the Variable
-     *
-     * @return a new Query Variable.
-     */
-    public static Variable variable( String name )
-    {
-        NullArgumentException.validateNotNull( "Variable name", name );
-        return new Variable( name );
-    }
-
-    /**
-     * Create a new Query Template PropertyFunction.
-     *
-     * @param <T> type of the Property
-     * @param property a Property
-     *
-     * @return a new Query Template PropertyFunction
-     */
-    @SuppressWarnings( "unchecked" )
-    public static <T> PropertyFunction<T> property( Property<T> property )
-    {
-        return ( (PropertyReferenceHandler<T>) Proxy.getInvocationHandler( 
property ) ).property();
-    }
-
-    /**
-     * Create a new Query Property instance.
-     *
-     * @param <T> type of the Property
-     * @param mixinClass mixin of the Property
-     * @param fieldName name of the Property field
-     *
-     * @return a new Query Property instance for the given mixin and property 
name.
-     */
-    @SuppressWarnings( "unchecked" )
-    public static <T> Property<T> property( Class<?> mixinClass, String 
fieldName )
-    {
-        try
-        {
-            Field field = mixinClass.getField( fieldName );
-            if( !Property.class.isAssignableFrom( field.getType() ) )
-            {
-                throw new IllegalArgumentException( "Field must be of type 
Property<?>" );
-            }
-            return (Property<T>) Proxy.newProxyInstance(
-                mixinClass.getClassLoader(),
-                array( field.getType() ),
-                new PropertyReferenceHandler<>( new PropertyFunction<T>( null, 
null, null, null, field ) ) );
-        }
-        catch( NoSuchFieldException e )
-        {
-            throw new IllegalArgumentException( "No such field '" + fieldName 
+ "' in mixin " + mixinClass.getName() );
-        }
-    }
-
-    /**
-     * Create a new Query Template AssociationFunction.
-     *
-     * @param <T> type of the Association
-     * @param association an Association
-     *
-     * @return a new Query Template AssociationFunction
-     */
-    @SuppressWarnings( "unchecked" )
-    public static <T> AssociationFunction<T> association( Association<T> 
association )
-    {
-        return ( (AssociationReferenceHandler<T>) Proxy.getInvocationHandler( 
association ) ).association();
-    }
-
-    /**
-     * Create a new Query Template ManyAssociationFunction.
-     *
-     * @param <T> type of the ManyAssociation
-     * @param association a ManyAssociation
-     *
-     * @return a new Query Template ManyAssociationFunction
-     */
-    @SuppressWarnings( "unchecked" )
-    public static <T> ManyAssociationFunction<T> manyAssociation( 
ManyAssociation<T> association )
-    {
-        return ( (ManyAssociationReferenceHandler<T>) 
Proxy.getInvocationHandler( association ) ).manyAssociation();
-    }
-
-    /**
-     * Create a new Query Template NamedAssociationFunction.
-     *
-     * @param <T> type of the NamedAssociation
-     * @param association a NamedAssociation
-     *
-     * @return a new Query Template NamedAssociationFunction
-     */
-    @SuppressWarnings( "unchecked" )
-    public static <T> NamedAssociationFunction<T> namedAssociation( 
NamedAssociation<T> association )
-    {
-        return ( (NamedAssociationReferenceHandler<T>) 
Proxy.getInvocationHandler( association ) ).namedAssociation();
-    }
-
-    // And/Or/Not ------------------------------------------------------------|
-    /**
-     * Create a new AND specification.
-     *
-     * @param left first operand
-     * @param right second operand
-     * @param optionalRight optional operands
-     *
-     * @return a new AND specification
-     */
-    @SafeVarargs
-    public static AndSpecification and( Specification<Composite> left,
-                                        Specification<Composite> right,
-                                        Specification<Composite>... 
optionalRight
-    )
-    {
-        return new AndSpecification( prepend( left, prepend( right, 
Arrays.asList( optionalRight ) ) ) );
-    }
-
-    /**
-     * Create a new OR specification.
-     *
-     * @param specs operands
-     *
-     * @return a new OR specification
-     */
-    @SafeVarargs
-    public static OrSpecification or( Specification<Composite>... specs )
-    {
-        return new OrSpecification( Arrays.asList( specs ) );
-    }
-
-    /**
-     * Create a new NOT specification.
-     *
-     * @param operand specification to be negated
-     *
-     * @return a new NOT specification
-     */
-    public static NotSpecification not( Specification<Composite> operand )
-    {
-        return new NotSpecification( operand );
-    }
-
-    // Comparisons -----------------------------------------------------------|
-
-    /**
-     * Create a new EQUALS specification for a Property.
-     *
-     * @param property a Property
-     * @param value its value
-     *
-     * @return a new EQUALS specification for a Property.
-     */
-    public static <T> EqSpecification<T> eq( Property<T> property, T value )
-    {
-        return new EqSpecification<>( property( property ), value );
-    }
-
-    /**
-     * Create a new EQUALS specification for a Property using a named Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new EQUALS specification for a Property using a named 
Variable.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> EqSpecification<T> eq( Property<T> property, Variable 
variable )
-    {
-        return new EqSpecification( property( property ), variable );
-    }
-
-    /**
-     * Create a new EQUALS specification for an Association.
-     *
-     * @param association an Association
-     * @param value its value
-     *
-     * @return a new EQUALS specification for an Association.
-     */
-    public static <T> EqSpecification<String> eq( Association<T> association, 
T value )
-    {
-        return new EqSpecification<>( new PropertyFunction<String>( null,
-                                                                    
association( association ),
-                                                                    null,
-                                                                    null,
-                                                                    
IDENTITY_METHOD ),
-                                      value.toString() );
-    }
-
-    /**
-     * Create a new GREATER OR EQUALS specification for a Property.
-     *
-     * @param property a Property
-     * @param value its value
-     *
-     * @return a new GREATER OR EQUALS specification for a Property.
-     */
-    public static <T> GeSpecification<T> ge( Property<T> property, T value )
-    {
-        return new GeSpecification<>( property( property ), value );
-    }
-
-    /**
-     * Create a new GREATER OR EQUALS specification for a Property using a 
named Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new GREATER OR EQUALS specification for a Property using a 
named Variable.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> GeSpecification<T> ge( Property<T> property, Variable 
variable )
-    {
-        return new GeSpecification( property( property ), variable );
-    }
-
-    /**
-     * Create a new GREATER THAN specification for a Property.
-     *
-     * @param property a Property
-     * @param value its value
-     *
-     * @return a new GREATER THAN specification for a Property.
-     */
-    public static <T> GtSpecification<T> gt( Property<T> property, T value )
-    {
-        return new GtSpecification<>( property( property ), value );
-    }
-
-    /**
-     * Create a new GREATER THAN specification for a Property using a named 
Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new GREATER THAN specification for a Property using a named 
Variable.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> GtSpecification<T> gt( Property<T> property, Variable 
variable )
-    {
-        return new GtSpecification( property( property ), variable );
-    }
-
-    /**
-     * Create a new LESS OR EQUALS specification for a Property.
-     *
-     * @param property a Property
-     * @param value its value
-     *
-     * @return a new LESS OR EQUALS specification for a Property.
-     */
-    public static <T> LeSpecification<T> le( Property<T> property, T value )
-    {
-        return new LeSpecification<>( property( property ), value );
-    }
-
-    /**
-     * Create a new LESS OR EQUALS specification for a Property using a named 
Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new LESS OR EQUALS specification for a Property using a named 
Variable.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> LeSpecification<T> le( Property<T> property, Variable 
variable )
-    {
-        return new LeSpecification( property( property ), variable );
-    }
-
-    /**
-     * Create a new LESSER THAN specification for a Property.
-     *
-     * @param property a Property
-     * @param value its value
-     *
-     * @return a new LESSER THAN specification for a Property.
-     */
-    public static <T> LtSpecification<T> lt( Property<T> property, T value )
-    {
-        return new LtSpecification<>( property( property ), value );
-    }
-
-    /**
-     * Create a new LESSER THAN specification for a Property using a named 
Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new LESSER THAN specification for a Property using a named 
Variable.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> LtSpecification<T> lt( Property<T> property, Variable 
variable )
-    {
-        return new LtSpecification( property( property ), variable );
-    }
-
-    /**
-     * Create a new NOT EQUALS specification for a Property.
-     *
-     * @param property a Property
-     * @param value its value
-     *
-     * @return a new NOT EQUALS specification for a Property.
-     */
-    public static <T> NeSpecification<T> ne( Property<T> property, T value )
-    {
-        return new NeSpecification<>( property( property ), value );
-    }
-
-    /**
-     * Create a new NOT EQUALS specification for a Property using a named 
Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new NOT EQUALS specification for a Property using a named 
Variable.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> NeSpecification<T> ne( Property<T> property, Variable 
variable )
-    {
-        return new NeSpecification( property( property ), variable );
-    }
-
-    /**
-     * Create a new REGULAR EXPRESSION specification for a Property.
-     *
-     * @param property a Property
-     * @param regexp its value
-     *
-     * @return a new REGULAR EXPRESSION specification for a Property.
-     */
-    public static MatchesSpecification matches( Property<String> property, 
String regexp )
-    {
-        return new MatchesSpecification( property( property ), regexp );
-    }
-
-    /**
-     * Create a new REGULAR EXPRESSION specification for a Property using a 
named Variable.
-     *
-     * @param property a Property
-     * @param variable a Query Variable
-     *
-     * @return a new REGULAR EXPRESSION specification for a Property using a 
named Variable.
-     */
-    public static MatchesSpecification matches( Property<String> property, 
Variable variable )
-    {
-        return new MatchesSpecification( property( property ), variable );
-    }
-
-    // Null checks -----------------------------------------------------------|
-
-    /**
-     * Create a new NOT NULL specification for a Property.
-     *
-     * @param property a Property
-     *
-     * @return a new NOT NULL specification for a Property.
-     */
-    public static <T> PropertyNotNullSpecification<T> isNotNull( Property<T> 
property )
-    {
-        return new PropertyNotNullSpecification<>( property( property ) );
-    }
-
-    /**
-     * Create a new NULL specification for a Property.
-     *
-     * @param property a Property
-     *
-     * @return a new NULL specification for a Property.
-     */
-    public static <T> PropertyNullSpecification<T> isNull( Property<T> 
property )
-    {
-        return new PropertyNullSpecification<>( property( property ) );
-    }
-
-    /**
-     * Create a new NOT NULL specification for an Association.
-     *
-     * @param association an Association
-     *
-     * @return a new NOT NULL specification for an Association.
-     */
-    public static <T> AssociationNotNullSpecification<T> isNotNull( 
Association<T> association )
-    {
-        return new AssociationNotNullSpecification<>( association( association 
) );
-    }
-
-    /**
-     * Create a new NULL specification for an Association.
-     *
-     * @param association an Association
-     *
-     * @return a new NULL specification for an Association.
-     */
-    public static <T> AssociationNullSpecification<T> isNull( Association<T> 
association )
-    {
-        return new AssociationNullSpecification<>( association( association ) 
);
-    }
-
-    // Collections -----------------------------------------------------------|
-
-    /**
-     * Create a new CONTAINS ALL specification for a Collection Property.
-     *
-     * @param collectionProperty a Collection Property
-     * @param values its values
-     *
-     * @return a new CONTAINS ALL specification for a Collection Property.
-     */
-    public static <T> ContainsAllSpecification<T> containsAll( Property<? 
extends Collection<T>> collectionProperty,
-                                                               Iterable<T> 
values )
-    {
-        NullArgumentException.validateNotNull( "Values", values );
-        return new ContainsAllSpecification<>( property( collectionProperty ), 
values );
-    }
-
-    /**
-     * Create a new CONTAINS ALL specification for a Collection Property using 
named Variables.
-     *
-     * @param collectionProperty a Collection Property
-     * @param variables named Variables
-     *
-     * @return a new CONTAINS ALL specification for a Collection Property 
using named Variables.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> ContainsAllSpecification<T> containsAllVariables(
-        Property<? extends Collection<T>> collectionProperty,
-        Iterable<Variable> variables )
-    {
-        NullArgumentException.validateNotNull( "Variables", variables );
-        return new ContainsAllSpecification( property( collectionProperty ), 
variables );
-    }
-
-    /**
-     * Create a new CONTAINS specification for a Collection Property.
-     *
-     * @param collectionProperty a Collection Property
-     * @param value the value
-     *
-     * @return a new CONTAINS specification for a Collection Property.
-     */
-    public static <T> ContainsSpecification<T> contains( Property<? extends 
Collection<T>> collectionProperty,
-                                                         T value )
-    {
-        NullArgumentException.validateNotNull( "Value", value );
-        return new ContainsSpecification<>( property( collectionProperty ), 
value );
-    }
-
-    /**
-     * Create a new CONTAINS specification for a Collection Property using 
named Variables.
-     *
-     * @param collectionProperty a Collection Property
-     * @param variable named Variable
-     *
-     * @return a new CONTAINS specification for a Collection Property using 
named Variables.
-     */
-    @SuppressWarnings( {"raw", "unchecked"} )
-    public static <T> ContainsSpecification<T> contains( Property<? extends 
Collection<T>> collectionProperty,
-                                                         Variable variable )
-    {
-        NullArgumentException.validateNotNull( "Variable", variable );
-        return new ContainsSpecification( property( collectionProperty ), 
variable );
-    }
-
-    /**
-     * Create a new CONTAINS specification for a ManyAssociation.
-     *
-     * @param manyAssoc  a ManyAssociation
-     * @param value the value
-     *
-     * @return a new CONTAINS specification for a ManyAssociation.
-     */
-    public static <T> ManyAssociationContainsSpecification<T> contains( 
ManyAssociation<T> manyAssoc, T value )
-    {
-        return new ManyAssociationContainsSpecification<>( manyAssociation( 
manyAssoc ), value );
-    }
-
-    /**
-     * Create a new CONTAINS specification for a NamedAssociation.
-     *
-     * @param namedAssoc  a NamedAssociation
-     * @param value the value
-     *
-     * @return a new CONTAINS specification for a NamedAssociation.
-     */
-    public static <T> NamedAssociationContainsSpecification<T> contains( 
NamedAssociation<T> namedAssoc, T value )
-    {
-        return new NamedAssociationContainsSpecification<>( namedAssociation( 
namedAssoc ), value );
-    }
-
-    /**
-     * Create a new CONTAINS NAME specification for a NamedAssociation.
-     *
-     * @param namedAssoc  a NamedAssociation
-     * @param name the name
-     *
-     * @return a new CONTAINS NAME specification for a NamedAssociation.
-     */
-    public static <T> NamedAssociationContainsNameSpecification<T> 
containsName( NamedAssociation<T> namedAssoc,
-                                                                               
  String name )
-    {
-        return new NamedAssociationContainsNameSpecification<>( 
namedAssociation( namedAssoc ), name );
-    }
-
-    // Ordering --------------------------------------------------------------|
-    /**
-     * Create a new Query ascending order segment for a Property.
-     *
-     * @param <T> type of the Property
-     * @param property a Property
-     *
-     * @return a new Query ascending order segment for a Property.
-     */
-    public static <T> OrderBy orderBy( final Property<T> property )
-    {
-        return orderBy( property, OrderBy.Order.ASCENDING );
-    }
-
-    /**
-     * Create a new Query ordering segment for a Property.
-     *
-     * @param <T> type of the Property
-     * @param property a Property
-     * @param order ascending or descending
-     *
-     * @return a new Query ordering segment for a Property.
-     */
-    public static <T> OrderBy orderBy( final Property<T> property, final 
OrderBy.Order order )
-    {
-        return new OrderBy( property( property ), order );
-    }
-
-    // Query Templates InvocationHandlers ------------------------------------|
-
-    private static class TemplateHandler<T>
-        implements InvocationHandler
-    {
-        private final PropertyFunction<?> compositeProperty;
-        private final AssociationFunction<?> compositeAssociation;
-        private final ManyAssociationFunction<?> compositeManyAssociation;
-        private final NamedAssociationFunction<?> compositeNamedAssociation;
-
-        private TemplateHandler( PropertyFunction<?> compositeProperty,
-                                 AssociationFunction<?> compositeAssociation,
-                                 ManyAssociationFunction<?> 
compositeManyAssociation,
-                                 NamedAssociationFunction<?> 
compositeNamedAssociation
-        )
-        {
-            this.compositeProperty = compositeProperty;
-            this.compositeAssociation = compositeAssociation;
-            this.compositeManyAssociation = compositeManyAssociation;
-            this.compositeNamedAssociation = compositeNamedAssociation;
-        }
-
-        @Override
-        public Object invoke( Object o, Method method, Object[] objects )
-            throws Throwable
-        {
-            if( Property.class.isAssignableFrom( method.getReturnType() ) )
-            {
-                return Proxy.newProxyInstance(
-                    method.getReturnType().getClassLoader(),
-                    array( method.getReturnType() ),
-                    new PropertyReferenceHandler<>( new PropertyFunction<T>( 
compositeProperty,
-                                                                             
compositeAssociation,
-                                                                             
compositeManyAssociation,
-                                                                             
compositeNamedAssociation,
-                                                                             
method ) ) );
-            }
-            else if( Association.class.isAssignableFrom( 
method.getReturnType() ) )
-            {
-                return Proxy.newProxyInstance(
-                    method.getReturnType().getClassLoader(),
-                    array( method.getReturnType() ),
-                    new AssociationReferenceHandler<>( new 
AssociationFunction<T>( compositeAssociation,
-                                                                               
    compositeManyAssociation,
-                                                                               
    compositeNamedAssociation,
-                                                                               
    method ) ) );
-            }
-            else if( ManyAssociation.class.isAssignableFrom( 
method.getReturnType() ) )
-            {
-                return Proxy.newProxyInstance(
-                    method.getReturnType().getClassLoader(),
-                    array( method.getReturnType() ),
-                    new ManyAssociationReferenceHandler<>( new 
ManyAssociationFunction<T>( compositeAssociation,
-                                                                               
            compositeManyAssociation,
-                                                                               
            compositeNamedAssociation,
-                                                                               
            method ) ) );
-            }
-            else if( NamedAssociation.class.isAssignableFrom( 
method.getReturnType() ) )
-            {
-                return Proxy.newProxyInstance(
-                    method.getReturnType().getClassLoader(),
-                    array( method.getReturnType() ),
-                    new NamedAssociationReferenceHandler<>( new 
NamedAssociationFunction<T>( compositeAssociation,
-                                                                               
              compositeManyAssociation,
-                                                                               
              compositeNamedAssociation,
-                                                                               
              method ) ) );
-            }
-
-            return null;
-        }
-    }
-
-    private static class PropertyReferenceHandler<T>
-        implements InvocationHandler
-    {
-        private final PropertyFunction<T> property;
-
-        private PropertyReferenceHandler( PropertyFunction<T> property )
-        {
-            this.property = property;
-        }
-
-        private PropertyFunction<T> property()
-        {
-            return property;
-        }
-
-        @Override
-        public Object invoke( Object o, final Method method, Object[] objects )
-            throws Throwable
-        {
-            if( method.equals( Property.class.getMethod( "get" ) ) )
-            {
-                Type propertyType = GenericPropertyInfo.propertyTypeOf( 
property.accessor() );
-                if( propertyType.getClass().equals( Class.class ) )
-                {
-                    return Proxy.newProxyInstance( 
method.getDeclaringClass().getClassLoader(),
-                                                   array( (Class<?>) 
propertyType, PropertyReference.class ),
-                                                   new TemplateHandler<T>( 
property, null, null, null ) );
-                }
-            }
-
-            return null;
-        }
-    }
-
-    private static class AssociationReferenceHandler<T>
-        implements InvocationHandler
-    {
-        private final AssociationFunction<T> association;
-
-        private AssociationReferenceHandler( AssociationFunction<T> 
association )
-        {
-            this.association = association;
-        }
-
-        private AssociationFunction<T> association()
-        {
-            return association;
-        }
-
-        @Override
-        public Object invoke( Object o, final Method method, Object[] objects )
-            throws Throwable
-        {
-            if( method.equals( Association.class.getMethod( "get" ) ) )
-            {
-                Type associationType = 
GenericAssociationInfo.associationTypeOf( association.accessor() );
-                if( associationType.getClass().equals( Class.class ) )
-                {
-                    return Proxy.newProxyInstance( 
method.getDeclaringClass().getClassLoader(),
-                                                   array( (Class) 
associationType, PropertyReference.class ),
-                                                   new TemplateHandler<T>( 
null, association, null, null ) );
-                }
-            }
-
-            return null;
-        }
-    }
-
-    private static class ManyAssociationReferenceHandler<T>
-        implements InvocationHandler
-    {
-        private final ManyAssociationFunction<T> manyAssociation;
-
-        private ManyAssociationReferenceHandler( ManyAssociationFunction<T> 
manyAssociation )
-        {
-            this.manyAssociation = manyAssociation;
-        }
-
-        public ManyAssociationFunction<T> manyAssociation()
-        {
-            return manyAssociation;
-        }
-
-        @Override
-        public Object invoke( Object o, final Method method, Object[] objects )
-            throws Throwable
-        {
-            if( method.equals( ManyAssociation.class.getMethod( "get", 
Integer.TYPE ) ) )
-            {
-                Type manyAssociationType = 
GenericAssociationInfo.associationTypeOf( manyAssociation.accessor() );
-                if( manyAssociationType.getClass().equals( Class.class ) )
-                {
-                    return Proxy.newProxyInstance( 
method.getDeclaringClass().getClassLoader(),
-                                                   array( (Class) 
manyAssociationType, PropertyReference.class ),
-                                                   new TemplateHandler<T>( 
null, null, manyAssociation, null ) );
-                }
-            }
-
-            return null;
-        }
-    }
-
-    private static class NamedAssociationReferenceHandler<T>
-        implements InvocationHandler
-    {
-        private final NamedAssociationFunction<T> namedAssociation;
-
-        private NamedAssociationReferenceHandler( NamedAssociationFunction<T> 
namedAssociation )
-        {
-            this.namedAssociation = namedAssociation;
-        }
-
-        public NamedAssociationFunction<T> namedAssociation()
-        {
-            return namedAssociation;
-        }
-
-        @Override
-        public Object invoke( Object o, final Method method, Object[] objects )
-            throws Throwable
-        {
-            if( method.equals( NamedAssociation.class.getMethod( "get", 
String.class ) ) )
-            {
-                Type namedAssociationType = 
GenericAssociationInfo.associationTypeOf( namedAssociation.accessor() );
-                if( namedAssociationType.getClass().equals( Class.class ) )
-                {
-                    return Proxy.newProxyInstance( 
method.getDeclaringClass().getClassLoader(),
-                                                   array( (Class) 
namedAssociationType, PropertyReference.class ),
-                                                   new TemplateHandler<T>( 
null, null, null, namedAssociation ) );
-                }
-            }
-
-            return null;
-        }
-    }
-
-    @SafeVarargs
-    private static <T> T[] array( T... array )
-    {
-        return array;
-    }
-
-    private QueryExpressions()
-    {
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/AndSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AndSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/AndSpecification.java
deleted file mode 100644
index 3d710ad..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AndSpecification.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.functional.Specification;
-import org.apache.zest.functional.Specifications;
-
-/**
- * AND Specification.
- */
-public class AndSpecification
-    extends BinarySpecification
-{
-
-    public AndSpecification( Iterable<Specification<Composite>> operands )
-    {
-        super( operands );
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        return Specifications.and( operands ).satisfiedBy( item );
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder( "(" );
-        String and = "";
-        for( Specification<Composite> operand : operands )
-        {
-            sb.append( and ).append( operand );
-            and = " and ";
-        }
-        return sb.append( ")" ).toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationFunction.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationFunction.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationFunction.java
deleted file mode 100644
index 8355114..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationFunction.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2007-2011 Rickard Öberg.
- * Copyright 2007-2010 Niclas Hedhman.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * ied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Member;
-import java.lang.reflect.Proxy;
-import java.lang.reflect.Type;
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.association.AssociationStateHolder;
-import org.apache.zest.api.association.GenericAssociationInfo;
-import org.apache.zest.api.association.ManyAssociation;
-import org.apache.zest.api.association.NamedAssociation;
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.api.composite.CompositeInstance;
-import org.apache.zest.api.query.QueryExpressionException;
-import org.apache.zest.api.util.Classes;
-import org.apache.zest.functional.Function;
-
-import static org.apache.zest.api.util.Classes.typeOf;
-
-/**
- * Function to get Entity Associations
- */
-public class AssociationFunction<T>
-    implements Function<Composite, Association<T>>
-{
-    private final AssociationFunction<?> traversedAssociation;
-    private final ManyAssociationFunction<?> traversedManyAssociation;
-    private final NamedAssociationFunction<?> traversedNamedAssociation;
-    private final AccessibleObject accessor;
-
-    public AssociationFunction( AssociationFunction<?> traversedAssociation,
-                                ManyAssociationFunction<?> 
traversedManyAssociation,
-                                NamedAssociationFunction<?> 
traversedNamedAssociation,
-                                AccessibleObject accessor
-    )
-    {
-        this.traversedAssociation = traversedAssociation;
-        this.traversedManyAssociation = traversedManyAssociation;
-        this.traversedNamedAssociation = traversedNamedAssociation;
-        this.accessor = accessor;
-
-        Type returnType = typeOf( accessor );
-        if( !Association.class.isAssignableFrom( Classes.RAW_CLASS.map( 
returnType ) )
-            && !ManyAssociation.class.isAssignableFrom( Classes.RAW_CLASS.map( 
returnType ) )
-            && !NamedAssociation.class.isAssignableFrom( 
Classes.RAW_CLASS.map( returnType ) ) )
-        {
-            throw new QueryExpressionException( "Unsupported association 
type:" + returnType );
-        }
-        Type associationTypeAsType = GenericAssociationInfo.toAssociationType( 
returnType );
-        if( !( associationTypeAsType instanceof Class ) )
-        {
-            throw new QueryExpressionException( "Unsupported association 
type:" + associationTypeAsType );
-        }
-    }
-
-    public AssociationFunction<?> traversedAssociation()
-    {
-        return traversedAssociation;
-    }
-
-    public ManyAssociationFunction<?> traversedManyAssociation()
-    {
-        return traversedManyAssociation;
-    }
-
-    public NamedAssociationFunction<?> traversedNamedAssociation()
-    {
-        return traversedNamedAssociation;
-    }
-
-    public AccessibleObject accessor()
-    {
-        return accessor;
-    }
-
-    @Override
-    public Association<T> map( Composite entity )
-    {
-        try
-        {
-            Object target = entity;
-            if( traversedAssociation != null )
-            {
-                Association<?> association = traversedAssociation.map( entity 
);
-                if( association == null )
-                {
-                    return null;
-                }
-                target = association.get();
-            }
-            else if( traversedManyAssociation != null )
-            {
-                throw new IllegalArgumentException( "Cannot evaluate a 
ManyAssociation" );
-            }
-            else if( traversedNamedAssociation != null )
-            {
-                throw new IllegalArgumentException( "Cannot evaluate a 
NamedAssociation" );
-            }
-
-            if( target == null )
-            {
-                return null;
-            }
-
-            CompositeInstance handler = (CompositeInstance) 
Proxy.getInvocationHandler( target );
-            return ( (AssociationStateHolder) handler.state() 
).associationFor( accessor );
-        }
-        catch( IllegalArgumentException e )
-        {
-            throw e;
-        }
-        catch( Throwable e )
-        {
-            throw new IllegalArgumentException( e );
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        if( traversedAssociation != null )
-        {
-            return traversedAssociation.toString() + "." + ( (Member) accessor 
).getName();
-        }
-        else
-        {
-            return ( (Member) accessor ).getName();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNotNullSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNotNullSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNotNullSpecification.java
deleted file mode 100644
index 1376029..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNotNullSpecification.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.composite.Composite;
-
-/**
- * Association not null Specification.
- */
-public class AssociationNotNullSpecification<T>
-    extends ExpressionSpecification
-{
-    private AssociationFunction<T> association;
-
-    public AssociationNotNullSpecification( AssociationFunction<T> association 
)
-    {
-        this.association = association;
-    }
-
-    public AssociationFunction<T> association()
-    {
-        return association;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        try
-        {
-            Association<T> assoc = association.map( item );
-
-            if( assoc == null )
-            {
-                return false;
-            }
-
-            return assoc.get() != null;
-        }
-        catch( IllegalArgumentException e )
-        {
-            return false;
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        return association.toString() + "is not null";
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNullSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNullSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNullSpecification.java
deleted file mode 100644
index 7dd72b2..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/AssociationNullSpecification.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.association.Association;
-import org.apache.zest.api.composite.Composite;
-
-/**
- * Association null Specification.
- */
-public class AssociationNullSpecification<T>
-    extends ExpressionSpecification
-{
-    private AssociationFunction<T> association;
-
-    public AssociationNullSpecification( AssociationFunction<T> association )
-    {
-        this.association = association;
-    }
-
-    public AssociationFunction<T> association()
-    {
-        return association;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        try
-        {
-            Association<T> assoc = association.map( item );
-
-            if( assoc == null )
-            {
-                return true;
-            }
-
-            return assoc.get() == null;
-        }
-        catch( IllegalArgumentException e )
-        {
-            return true;
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        return association.toString() + "is null";
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/BinarySpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/BinarySpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/BinarySpecification.java
deleted file mode 100644
index 177caf0..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/BinarySpecification.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.functional.Specification;
-
-/**
- * Base binary Specification, used for AND and OR Specifications..
- */
-public abstract class BinarySpecification
-    extends ExpressionSpecification
-{
-    protected final Iterable<Specification<Composite>> operands;
-
-    protected BinarySpecification( Iterable<Specification<Composite>> operands 
)
-    {
-        this.operands = operands;
-    }
-
-    public Iterable<Specification<Composite>> operands()
-    {
-        return operands;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/ComparisonSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ComparisonSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/ComparisonSpecification.java
deleted file mode 100644
index c53fe00..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ComparisonSpecification.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.api.property.Property;
-
-/**
- * Base comparison Specification.
- */
-public abstract class ComparisonSpecification<T>
-    extends ExpressionSpecification
-{
-    protected final PropertyFunction<T> property;
-    protected final T value;
-
-    public ComparisonSpecification( PropertyFunction<T> property, T value )
-    {
-        this.property = property;
-        this.value = value;
-    }
-
-    public PropertyFunction<T> property()
-    {
-        return property;
-    }
-
-    @Override
-    public final boolean satisfiedBy( Composite item )
-    {
-        try
-        {
-            Property<T> prop = property.map( item );
-
-            if( prop == null )
-            {
-                return false;
-            }
-
-            T propValue = prop.get();
-            if( propValue == null )
-            {
-                return false;
-            }
-
-            return compare( propValue );
-        }
-        catch( IllegalArgumentException e )
-        {
-            return false;
-        }
-    }
-
-    protected abstract boolean compare( T value );
-
-    public T value()
-    {
-        return value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllSpecification.java
deleted file mode 100644
index c5221d2..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsAllSpecification.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import java.util.Collection;
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.functional.Iterables;
-
-/**
- * Contains All Specification.
- */
-public class ContainsAllSpecification<T>
-    extends ExpressionSpecification
-{
-    private PropertyFunction<? extends Collection<T>> collectionProperty;
-    private Iterable<T> valueCollection;
-
-    public ContainsAllSpecification( PropertyFunction<? extends Collection<T>> 
collectionProperty,
-                                     Iterable<T> valueCollection
-    )
-    {
-        this.collectionProperty = collectionProperty;
-        this.valueCollection = valueCollection;
-    }
-
-    public PropertyFunction<? extends Collection<T>> collectionProperty()
-    {
-        return collectionProperty;
-    }
-
-    public Iterable<T> containedValues()
-    {
-        return valueCollection;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        Collection<T> collection = collectionProperty.map( item ).get();
-
-        if( collection == null )
-        {
-            return false;
-        }
-
-        for( T value : valueCollection )
-        {
-            if( !collection.contains( value ) )
-            {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public String toString()
-    {
-        return collectionProperty + " contains " + Iterables.toList( 
valueCollection );
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsSpecification.java
deleted file mode 100644
index 4f05aac..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ContainsSpecification.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import java.util.Collection;
-import org.apache.zest.api.composite.Composite;
-
-/**
- * Contains Specification.
- */
-public class ContainsSpecification<T>
-    extends ExpressionSpecification
-{
-    private PropertyFunction<? extends Collection<T>> collectionProperty;
-    private T value;
-
-    public ContainsSpecification( PropertyFunction<? extends Collection<T>> 
collectionProperty, T value )
-    {
-        this.collectionProperty = collectionProperty;
-        this.value = value;
-    }
-
-    public PropertyFunction<? extends Collection<T>> collectionProperty()
-    {
-        return collectionProperty;
-    }
-
-    public T value()
-    {
-        return value;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        Collection<T> collection = collectionProperty.map( item ).get();
-
-        if( collection == null )
-        {
-            return false;
-        }
-
-        return collection.contains( value );
-    }
-
-    @Override
-    public String toString()
-    {
-        return collectionProperty + " contains " + value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/EqSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/EqSpecification.java 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/EqSpecification.java
deleted file mode 100644
index b7ed03c..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/EqSpecification.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-/**
- * Equals Specification.
- */
-public class EqSpecification<T>
-    extends ComparisonSpecification<T>
-{
-    public EqSpecification( PropertyFunction<T> property, T value )
-    {
-        super( property, value );
-    }
-
-    @Override
-    protected boolean compare( T value )
-    {
-        return value.equals( this.value );
-    }
-
-    @Override
-    public String toString()
-    {
-        return property.toString() + "=" + value.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/ExpressionSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ExpressionSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/ExpressionSpecification.java
deleted file mode 100644
index f0dd6b2..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ExpressionSpecification.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.functional.Specification;
-
-import static org.apache.zest.functional.Iterables.append;
-import static org.apache.zest.functional.Iterables.iterable;
-
-/**
- * Base expression Specification.
- */
-public abstract class ExpressionSpecification
-    implements Specification<Composite>
-{
-
-    @SuppressWarnings( "unchecked" )
-    public AndSpecification and( Specification<Composite> specification )
-    {
-        if( this instanceof AndSpecification )
-        {
-            return new AndSpecification( append( specification, ( 
(AndSpecification) this ).operands() ) );
-        }
-        else
-        {
-            return new AndSpecification( iterable( this, specification ) );
-        }
-    }
-
-    @SuppressWarnings( "unchecked" )
-    public OrSpecification or( Specification<Composite> specification )
-    {
-        if( this instanceof OrSpecification )
-        {
-            return new OrSpecification( append( specification, ( 
(OrSpecification) this ).operands() ) );
-        }
-        else
-        {
-            return new OrSpecification( iterable( this, specification ) );
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/GeSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/GeSpecification.java 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/GeSpecification.java
deleted file mode 100644
index f012293..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/GeSpecification.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-/**
- * Greater or equals Specification.
- */
-public class GeSpecification<T>
-    extends ComparisonSpecification<T>
-{
-    public GeSpecification( PropertyFunction<T> property, T value )
-    {
-        super( property, value );
-    }
-
-    @Override
-    @SuppressWarnings( "unchecked" )
-    protected boolean compare( T value )
-    {
-        return ( (Comparable) value ).compareTo( this.value ) >= 0;
-    }
-
-    @Override
-    public String toString()
-    {
-        return property.toString() + ">=" + value.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/GtSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/GtSpecification.java 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/GtSpecification.java
deleted file mode 100644
index 880fb67..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/GtSpecification.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-/**
- * Greater than Specification.
- */
-public class GtSpecification<T>
-    extends ComparisonSpecification<T>
-{
-    public GtSpecification( PropertyFunction<T> property, T value )
-    {
-        super( property, value );
-    }
-
-    @Override
-    @SuppressWarnings( "unchecked" )
-    protected boolean compare( T value )
-    {
-        return ( (Comparable) value ).compareTo( this.value ) > 0;
-    }
-
-    @Override
-    public String toString()
-    {
-        return property.toString() + ">" + value.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/LeSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/LeSpecification.java 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/LeSpecification.java
deleted file mode 100644
index 3a28f16..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/LeSpecification.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-/**
- * Less or equals Specification.
- */
-public class LeSpecification<T>
-    extends ComparisonSpecification<T>
-{
-    public LeSpecification( PropertyFunction<T> property, T value )
-    {
-        super( property, value );
-    }
-
-    @Override
-    @SuppressWarnings( "unchecked" )
-    protected boolean compare( T value )
-    {
-        return ( (Comparable) value ).compareTo( this.value ) <= 0;
-    }
-
-    @Override
-    public String toString()
-    {
-        return property.toString() + "<=" + value.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/LtSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/LtSpecification.java 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/LtSpecification.java
deleted file mode 100644
index 8f476c3..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/LtSpecification.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-/**
- * Lesser than Specification.
- */
-public class LtSpecification<T>
-    extends ComparisonSpecification<T>
-{
-    public LtSpecification( PropertyFunction<T> property, T value )
-    {
-        super( property, value );
-    }
-
-    @Override
-    @SuppressWarnings( "unchecked" )
-    protected boolean compare( T value )
-    {
-        return ( (Comparable) value ).compareTo( this.value ) < 0;
-    }
-
-    @Override
-    public String toString()
-    {
-        return property.toString() + "<" + value.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationContainsSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationContainsSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationContainsSpecification.java
deleted file mode 100644
index a15bdb0..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationContainsSpecification.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2007-2011 Rickard Öberg.
- * Copyright 2007-2010 Niclas Hedhman.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * ied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.association.ManyAssociation;
-import org.apache.zest.api.composite.Composite;
-
-/**
- * ManyAssociation Contains Specification.
- */
-public class ManyAssociationContainsSpecification<T>
-    extends ExpressionSpecification
-{
-    private final ManyAssociationFunction<T> manyAssociationFunction;
-    private final T value;
-
-    public ManyAssociationContainsSpecification( ManyAssociationFunction<T> 
manyAssociationFunction, T value )
-    {
-        this.manyAssociationFunction = manyAssociationFunction;
-        this.value = value;
-    }
-
-    public ManyAssociationFunction<T> manyAssociation()
-    {
-        return manyAssociationFunction;
-    }
-
-    public T value()
-    {
-        return value;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        ManyAssociation<T> collection = manyAssociationFunction.map( item );
-        if( collection == null )
-        {
-            return false;
-        }
-        return collection.contains( value );
-    }
-
-    @Override
-    public String toString()
-    {
-        return manyAssociationFunction + " contains:" + value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationFunction.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationFunction.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationFunction.java
deleted file mode 100644
index 540a901..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/ManyAssociationFunction.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-2011 Rickard Öberg.
- * Copyright 2007-2010 Niclas Hedhman.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * ied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Member;
-import java.lang.reflect.Proxy;
-import org.apache.zest.api.association.AssociationStateHolder;
-import org.apache.zest.api.association.ManyAssociation;
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.api.composite.CompositeInstance;
-import org.apache.zest.functional.Function;
-
-/**
- * Function to get Entity ManyAssociations.
- */
-public class ManyAssociationFunction<T>
-    implements Function<Composite, ManyAssociation<T>>
-{
-    private final AssociationFunction<?> traversedAssociation;
-    private final ManyAssociationFunction<?> traversedManyAssociation;
-    private final NamedAssociationFunction<?> traversedNamedAssociation;
-    private final AccessibleObject accessor;
-
-    public ManyAssociationFunction( AssociationFunction<?> 
traversedAssociation,
-                                    ManyAssociationFunction<?> 
traversedManyAssociation,
-                                    NamedAssociationFunction<?> 
traversedNamedAssociation,
-                                    AccessibleObject accessor
-    )
-    {
-        this.traversedAssociation = traversedAssociation;
-        this.traversedManyAssociation = traversedManyAssociation;
-        this.traversedNamedAssociation = traversedNamedAssociation;
-        this.accessor = accessor;
-    }
-
-    public AssociationFunction<?> traversedAssociation()
-    {
-        return traversedAssociation;
-    }
-
-    public ManyAssociationFunction<?> traversedManyAssociation()
-    {
-        return traversedManyAssociation;
-    }
-
-    public NamedAssociationFunction<?> traversedNamedAssociation()
-    {
-        return traversedNamedAssociation;
-    }
-
-    public AccessibleObject accessor()
-    {
-        return accessor;
-    }
-
-    @Override
-    public ManyAssociation<T> map( Composite entity )
-    {
-        try
-        {
-            Object target = entity;
-            if( traversedAssociation != null )
-            {
-                target = traversedAssociation.map( entity ).get();
-            }
-            if( traversedManyAssociation != null )
-            {
-                throw new IllegalArgumentException( "Cannot traverse 
ManyAssociations" );
-            }
-            if( traversedNamedAssociation != null )
-            {
-                throw new IllegalArgumentException( "Cannot traverse 
NamedAssociations" );
-            }
-
-            CompositeInstance handler = (CompositeInstance) 
Proxy.getInvocationHandler( target );
-            return ( (AssociationStateHolder) handler.state() 
).manyAssociationFor( accessor );
-        }
-        catch( IllegalArgumentException e )
-        {
-            throw e;
-        }
-        catch( Throwable e )
-        {
-            throw new IllegalArgumentException( e );
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        if( traversedAssociation != null )
-        {
-            return traversedAssociation.toString() + "." + ( (Member) accessor 
).getName();
-        }
-        else
-        {
-            return ( (Member) accessor ).getName();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/MatchesSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/MatchesSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/MatchesSpecification.java
deleted file mode 100644
index 4f54a47..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/MatchesSpecification.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.composite.Composite;
-import org.apache.zest.api.property.Property;
-
-/**
- * Regular expression match Specification.
- */
-public class MatchesSpecification
-    extends ExpressionSpecification
-{
-    private PropertyFunction<String> property;
-    private Object value;
-
-    public MatchesSpecification( PropertyFunction<String> property, String 
regexp )
-    {
-        this.property = property;
-        this.value = regexp;
-    }
-
-    public MatchesSpecification( PropertyFunction<String> property, Variable 
variable )
-    {
-        this.property = property;
-        this.value = variable;
-    }
-
-    public PropertyFunction<String> property()
-    {
-        return property;
-    }
-
-    public Object value()
-    {
-        return value;
-    }
-
-    public String regexp()
-    {
-        return ( String ) value;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        Property<String> prop = property.map( item );
-
-        if( prop == null )
-        {
-            return false;
-        }
-
-        String val = prop.get();
-
-        if( val == null )
-        {
-            return false;
-        }
-
-        return val.matches( ( String ) value );
-    }
-
-    @Override
-    public String toString()
-    {
-        return new StringBuilder()
-            .append( "( " )
-            .append( property )
-            .append( " matches " )
-            .append( "\"" )
-            .append( value )
-            .append( "\"" )
-            .append( " )" )
-            .toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsNameSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsNameSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsNameSpecification.java
deleted file mode 100644
index 5af9a51..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsNameSpecification.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2011-2012 Niclas Hedhman.
- * Copyright 2014 Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * ied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.association.NamedAssociation;
-import org.apache.zest.api.composite.Composite;
-
-/**
- * NamedAssociation Contains Specification.
- */
-public class NamedAssociationContainsNameSpecification<T>
-    extends ExpressionSpecification
-{
-    private final NamedAssociationFunction<T> namedAssociationFunction;
-    private final String name;
-
-    public NamedAssociationContainsNameSpecification( 
NamedAssociationFunction<T> namedAssociationFunction, String name )
-    {
-        this.namedAssociationFunction = namedAssociationFunction;
-        this.name = name;
-    }
-
-    public NamedAssociationFunction<T> namedAssociation()
-    {
-        return namedAssociationFunction;
-    }
-
-    public String name()
-    {
-        return name;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        NamedAssociation<T> collection = namedAssociationFunction.map( item );
-        if( collection == null )
-        {
-            return false;
-        }
-        return collection.containsName( name );
-    }
-
-    @Override
-    public String toString()
-    {
-        return namedAssociationFunction + " contains name:" + name;
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a789141d/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsSpecification.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsSpecification.java
 
b/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsSpecification.java
deleted file mode 100644
index e4e4f7b..0000000
--- 
a/core/api/src/main/java/org/apache/zest/api/query/grammar/NamedAssociationContainsSpecification.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2011-2012 Niclas Hedhman.
- * Copyright 2014 Paul Merlin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * ied.
- *
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.zest.api.query.grammar;
-
-import org.apache.zest.api.association.NamedAssociation;
-import org.apache.zest.api.composite.Composite;
-
-/**
- * NamedAssociation Contains Specification.
- */
-public class NamedAssociationContainsSpecification<T>
-    extends ExpressionSpecification
-{
-    private final NamedAssociationFunction<T> namedAssociationFunction;
-    private final T value;
-
-    public NamedAssociationContainsSpecification( NamedAssociationFunction<T> 
namedAssociationFunction, T value )
-    {
-        this.namedAssociationFunction = namedAssociationFunction;
-        this.value = value;
-    }
-
-    public NamedAssociationFunction<T> namedAssociation()
-    {
-        return namedAssociationFunction;
-    }
-
-    public T value()
-    {
-        return value;
-    }
-
-    @Override
-    public boolean satisfiedBy( Composite item )
-    {
-        NamedAssociation<T> collection = namedAssociationFunction.map( item );
-        if( collection == null )
-        {
-            return false;
-        }
-        return collection.nameOf( value ) != null;
-    }
-
-    @Override
-    public String toString()
-    {
-        return namedAssociationFunction + " contains:" + value;
-    }
-}

Reply via email to