// Path: src/main/java/com/_4dconcept/springframework/data/marklogic/core/convert/MarklogicConverter.java
// public interface MarklogicConverter extends
//         EntityConverter<MarklogicPersistentEntity<?>, MarklogicPersistentProperty, Object, MarklogicContentHolder>,
//         MarklogicWriter<Object>, MarklogicReader<Object> {
// 
// }
// 
// Path: src/main/java/com/_4dconcept/springframework/data/marklogic/core/query/Query.java
// public class Query {
// 
//     private long skip;
//     private int limit;
//     private @Nullable String collection;
//     private @Nullable Criteria criteria;
//     private List<SortCriteria> sortCriteria;
// 
//     public Query() {
//     }
// 
//     public Query(Criteria criteria) {
//         this.criteria = criteria;
//     }
// 
//     /**
//      * @return the skip
//      */
//     public long getSkip() {
//         return skip;
//     }
// 
//     /**
//      * @param skip the skip to set
//      */
//     public void setSkip(long skip) {
//         this.skip = skip;
//     }
// 
//     /**
//      * @return the limit
//      */
//     public int getLimit() {
//         return limit;
//     }
// 
//     /**
//      * @param limit the limit to set
//      */
//     public void setLimit(int limit) {
//         this.limit = limit;
//     }
// 
//     /**
//      * @return the collection
//      */
//     @Nullable
//     public String getCollection() {
//         return collection;
//     }
// 
//     /**
//      * @param collection the collection to set
//      */
//     public void setCollection(String collection) {
//         this.collection = collection;
//     }
// 
//     /**
//      * @return the criteria
//      */
//     @Nullable
//     public Criteria getCriteria() {
//         return criteria;
//     }
// 
//     /**
//      * @param criteria the criteria to set
//      */
//     public void setCriteria(Criteria criteria) {
//         this.criteria = criteria;
//     }
// 
//     /**
//      * @return the sortCriteria
//      */
//     public List<SortCriteria> getSortCriteria() {
//         return sortCriteria == null ? Collections.emptyList() : sortCriteria;
//     }
// 
//     /**
//      * @param sortCriteria the sortCriteria to set
//      */
//     public void setSortCriteria(List<SortCriteria> sortCriteria) {
//         this.sortCriteria = sortCriteria;
//     }
// }


import com._4dconcept.springframework.data.marklogic.core.convert.MarklogicConverter;
import com._4dconcept.springframework.data.marklogic.core.query.Query;
import org.springframework.lang.Nullable;
import java.util.List;
    /**
     * Retrieve the default collection of the given entity
     * @param entity the entity
     * @param options search options
     * @param <T> The entity type
     * @return the default collection
     */
    @Nullable
    <T> String resolveDefaultCollection(T entity, MarklogicOperationOptions options);

    /**
     * Retrieve the content idenfitier of the given entity
     * @param entity the entity
     * @param <T> The entity type
     * @return the content identifier
     */
    @Nullable
    <T> Object resolveContentIdentifier(T entity);

    /**
     * Returns the number of documents for the given {@link Query}.
     *
     * @param query the query
     * @return the number of content matching the query
     */
    long count(Query query);

    /**
     * @return the underlying {@link MarklogicConverter}.
     */
// Path: src/main/java/com/_4dconcept/springframework/data/marklogic/core/convert/MarklogicConverter.java
// public interface MarklogicConverter extends
//         EntityConverter<MarklogicPersistentEntity<?>, MarklogicPersistentProperty, Object, MarklogicContentHolder>,
//         MarklogicWriter<Object>, MarklogicReader<Object> {
// 
// }
// 
// Path: src/main/java/com/_4dconcept/springframework/data/marklogic/core/query/Query.java
// public class Query {
// 
//     private long skip;
//     private int limit;
//     private @Nullable String collection;
//     private @Nullable Criteria criteria;
//     private List<SortCriteria> sortCriteria;
// 
//     public Query() {
//     }
// 
//     public Query(Criteria criteria) {
//         this.criteria = criteria;
//     }
// 
//     /**
//      * @return the skip
//      */
//     public long getSkip() {
//         return skip;
//     }
// 
//     /**
//      * @param skip the skip to set
//      */
//     public void setSkip(long skip) {
//         this.skip = skip;
//     }
// 
//     /**
//      * @return the limit
//      */
//     public int getLimit() {
//         return limit;
//     }
// 
//     /**
//      * @param limit the limit to set
//      */
//     public void setLimit(int limit) {
//         this.limit = limit;
//     }
// 
//     /**
//      * @return the collection
//      */
//     @Nullable
//     public String getCollection() {
//         return collection;
//     }
// 
//     /**
//      * @param collection the collection to set
//      */
//     public void setCollection(String collection) {
//         this.collection = collection;
//     }
// 
//     /**
//      * @return the criteria
//      */
//     @Nullable
//     public Criteria getCriteria() {
//         return criteria;
//     }
// 
//     /**
//      * @param criteria the criteria to set
//      */
//     public void setCriteria(Criteria criteria) {
//         this.criteria = criteria;
//     }
// 
//     /**
//      * @return the sortCriteria
//      */
//     public List<SortCriteria> getSortCriteria() {
//         return sortCriteria == null ? Collections.emptyList() : sortCriteria;
//     }
// 
//     /**
//      * @param sortCriteria the sortCriteria to set
//      */
//     public void setSortCriteria(List<SortCriteria> sortCriteria) {
//         this.sortCriteria = sortCriteria;
//     }
// }


// Path: src/main/java/com/_4dconcept/springframework/data/marklogic/core/MarklogicOperations.java
import com._4dconcept.springframework.data.marklogic.core.convert.MarklogicConverter;
import com._4dconcept.springframework.data.marklogic.core.query.Query;
import org.springframework.lang.Nullable;
import java.util.List;

    /**
     * Retrieve the default collection of the given entity
     * @param entity the entity
     * @param options search options
     * @param <T> The entity type
     * @return the default collection
     */
    @Nullable
    <T> String resolveDefaultCollection(T entity, MarklogicOperationOptions options);

    /**
     * Retrieve the content idenfitier of the given entity
     * @param entity the entity
     * @param <T> The entity type
     * @return the content identifier
     */
    @Nullable
    <T> Object resolveContentIdentifier(T entity);

    /**
     * Returns the number of documents for the given {@link Query}.
     *
     * @param query the query
     * @return the number of content matching the query
     */
    long count(Query query);

    /**
     * @return the underlying {@link MarklogicConverter}.
     */
    MarklogicConverter getConverter();