// Path: src/joquery/core/JoinMode.java
// public enum JoinMode
// {
//     INNER,
//     LEFT_OUTER,
//     RIGHT_OUTER
// }
// 
// Path: src/joquery/core/QueryException.java
// public class QueryException extends Exception
// {
//     public QueryException(String message)
//     {
//         super(message);
//     }
// 
//     public QueryException(String message, Throwable cause)
//     {
//         super(message, cause);
//     }
// }


import joquery.*;
import joquery.core.JoinMode;
import joquery.core.QueryException;
import java.util.Collection;
import java.util.function.Function;

        if (directTransformer != null)
            return super.transformDefaultSelection(directTransformer);

        return super.transformDefaultSelection();
    }

	@Override
	public <V> U project(IProject<T,V,U> project,Function<T,V> property) throws QueryException
	{
		return project.eval(getItems(),property);
	}

	@Override
    public ResultTransformedQueryImpl<T,U,W> transformDirect(ResultTransformer<T, U> transformer)
    {
        directTransformer = transformer;
        return this;
    }

    @Override
    public ResultTransformedQueryImpl<T,U,W> transformSelection(ResultTransformer<Object[], U> transformer)
    {
        selectionTransformer = transformer;
        return this;
    }

    @Override
    public <X,Y> JoinQuery<U,X,Y> innerJoin(ResultTransformedQuery<X, X, ?> rightQuery) throws QueryException
    {
// Path: src/joquery/core/JoinMode.java
// public enum JoinMode
// {
//     INNER,
//     LEFT_OUTER,
//     RIGHT_OUTER
// }
// 
// Path: src/joquery/core/QueryException.java
// public class QueryException extends Exception
// {
//     public QueryException(String message)
//     {
//         super(message);
//     }
// 
//     public QueryException(String message, Throwable cause)
//     {
//         super(message, cause);
//     }
// }


// Path: src/joquery/core/collection/ResultTransformedQueryImpl.java
import joquery.*;
import joquery.core.JoinMode;
import joquery.core.QueryException;
import java.util.Collection;
import java.util.function.Function;


        if (directTransformer != null)
            return super.transformDefaultSelection(directTransformer);

        return super.transformDefaultSelection();
    }

	@Override
	public <V> U project(IProject<T,V,U> project,Function<T,V> property) throws QueryException
	{
		return project.eval(getItems(),property);
	}

	@Override
    public ResultTransformedQueryImpl<T,U,W> transformDirect(ResultTransformer<T, U> transformer)
    {
        directTransformer = transformer;
        return this;
    }

    @Override
    public ResultTransformedQueryImpl<T,U,W> transformSelection(ResultTransformer<Object[], U> transformer)
    {
        selectionTransformer = transformer;
        return this;
    }

    @Override
    public <X,Y> JoinQuery<U,X,Y> innerJoin(ResultTransformedQuery<X, X, ?> rightQuery) throws QueryException
    {
        return doJoin(JoinMode.INNER,rightQuery);