// Path: src/main/java/com/mattinsler/guiceymongo/data/Clause.java
// public interface Clause<T> {
//     Query exists();
//     Query doesNotExist();
//     Query isOfType(BSONType type);
// }
// 
// Path: src/main/java/com/mattinsler/guiceymongo/data/Query.java
// public interface Query {
//     <T, C extends Clause<T>> C and(Property<T, C> property);
// 
//     <T extends IsData> ExecutableQuery<T> select(Class<T> type);
//     <T extends IsData> ExecutableQuery<T> select(Class<T> type, FieldSet set);
// }


import com.mattinsler.guiceymongo.data.Clause;
import com.mattinsler.guiceymongo.data.Query;
package com.mattinsler.guiceymongo.data.query;


/**
 * Created by IntelliJ IDEA.
 * User: mattinsler
 * Date: 12/29/10
 * Time: 3:35 AM
 * To change this template use File | Settings | File Templates.
 */
public abstract class AbstractClause<T> implements Clause<T> {
    public Query doesNotExist() {
        return null;
    }

// Path: src/main/java/com/mattinsler/guiceymongo/data/Clause.java
// public interface Clause<T> {
//     Query exists();
//     Query doesNotExist();
//     Query isOfType(BSONType type);
// }
// 
// Path: src/main/java/com/mattinsler/guiceymongo/data/Query.java
// public interface Query {
//     <T, C extends Clause<T>> C and(Property<T, C> property);
// 
//     <T extends IsData> ExecutableQuery<T> select(Class<T> type);
//     <T extends IsData> ExecutableQuery<T> select(Class<T> type, FieldSet set);
// }


// Path: src/main/java/com/mattinsler/guiceymongo/data/query/AbstractClause.java
import com.mattinsler.guiceymongo.data.Clause;
import com.mattinsler.guiceymongo.data.Query;

package com.mattinsler.guiceymongo.data.query;


/**
 * Created by IntelliJ IDEA.
 * User: mattinsler
 * Date: 12/29/10
 * Time: 3:35 AM
 * To change this template use File | Settings | File Templates.
 */
public abstract class AbstractClause<T> implements Clause<T> {
    public Query doesNotExist() {
        return null;
    }

    public Query exists() {