// 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;
package joquery.core.collection;



/**
 * User: Adipa
 * Date: 10/28/12
 * Time: 12:44 PM
 */
public abstract class ResultTransformedQueryImpl<T,U,W extends ResultTransformedQuery<T,U,W>>
        extends QueryImpl<T,W>
        implements ResultTransformedQuery<T,U,W>
{
    private ResultTransformer<T, U> directTransformer;
    private ResultTransformer<Object[], U> selectionTransformer;

    @Override
// 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;

package joquery.core.collection;



/**
 * User: Adipa
 * Date: 10/28/12
 * Time: 12:44 PM
 */
public abstract class ResultTransformedQueryImpl<T,U,W extends ResultTransformedQuery<T,U,W>>
        extends QueryImpl<T,W>
        implements ResultTransformedQuery<T,U,W>
{
    private ResultTransformer<T, U> directTransformer;
    private ResultTransformer<Object[], U> selectionTransformer;

    @Override
    public U first() throws QueryException