// Path: query/src/main/java/io/keen/client/java/exceptions/KeenQueryClientException.java
// public class KeenQueryClientException extends KeenException {
//     private static final long serialVersionUID = -8714276738565293346L;
// 
//     public KeenQueryClientException() {
//         super();
//     }
// 
//     public KeenQueryClientException(Throwable cause) {
//         super(cause);
//     }
// 
//     public KeenQueryClientException(String message) {
//         super(message);
//     }
// 
//     public KeenQueryClientException(String message, Throwable cause) {
//         super(message, cause);
//     }
// }


import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import io.keen.client.java.exceptions.KeenQueryClientException;
        }

        return true;
    }

    /**
     * Constructs a Keen Query using a Builder.
     *
     * @param builder The builder from which to retrieve this client's interfaces and settings.
     */
    protected Query(Builder builder) {
        this.eventCollection = builder.eventCollection;
        this.targetProperty = builder.targetProperty;
        this.interval = builder.interval;
        this.timezone = builder.timezone;
        this.groupBy = builder.groupBy;
        this.maxAge = builder.maxAge;
        this.percentile = builder.percentile;
        this.queryType = builder.queryType;
        this.timeframe = builder.timeframe;

        if (null != builder.filters && !builder.filters.isEmpty()) {
            this.filters = new RequestParameterCollection<Filter>(builder.filters);
        } else {
            this.filters = null;
        }
    }

    @Override
    URL getRequestURL(RequestUrlBuilder urlBuilder,
// Path: query/src/main/java/io/keen/client/java/exceptions/KeenQueryClientException.java
// public class KeenQueryClientException extends KeenException {
//     private static final long serialVersionUID = -8714276738565293346L;
// 
//     public KeenQueryClientException() {
//         super();
//     }
// 
//     public KeenQueryClientException(Throwable cause) {
//         super(cause);
//     }
// 
//     public KeenQueryClientException(String message) {
//         super(message);
//     }
// 
//     public KeenQueryClientException(String message, Throwable cause) {
//         super(message, cause);
//     }
// }


// Path: query/src/main/java/io/keen/client/java/Query.java
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import io.keen.client.java.exceptions.KeenQueryClientException;

        }

        return true;
    }

    /**
     * Constructs a Keen Query using a Builder.
     *
     * @param builder The builder from which to retrieve this client's interfaces and settings.
     */
    protected Query(Builder builder) {
        this.eventCollection = builder.eventCollection;
        this.targetProperty = builder.targetProperty;
        this.interval = builder.interval;
        this.timezone = builder.timezone;
        this.groupBy = builder.groupBy;
        this.maxAge = builder.maxAge;
        this.percentile = builder.percentile;
        this.queryType = builder.queryType;
        this.timeframe = builder.timeframe;

        if (null != builder.filters && !builder.filters.isEmpty()) {
            this.filters = new RequestParameterCollection<Filter>(builder.filters);
        } else {
            this.filters = null;
        }
    }

    @Override
    URL getRequestURL(RequestUrlBuilder urlBuilder,
                      String projectId) throws KeenQueryClientException {