class Request implements Comparable<Request<T>>, Cloneable {

    @Override
    public int compareTo(Request<T> other) {
        Priority left = this.getPriority();
        Priority right = other.getPriority();

        // High-priority requests are "lesser" so they are sorted to the front.
        // Equal priorities are sorted by sequence number to provide FIFO ordering.
        return left == right ?
                this.sequence - other.sequence :
                right.ordinal() - left.ordinal();
    }

    public  Request(String method, String url);
    public  Request(String method, HttpUrl url);
    public <TT extends T> Request(String method, String url, Class<TT> responseType);
    public <TT extends T> Request(String method, HttpUrl url, Class<TT> responseType);
    public <TT extends T> Request(String method, HttpUrl url, Converter<NetworkResponse, TT>
            converterFromResponse);
    public <TT extends T> Request(String method, String url, Converter<NetworkResponse, TT> converterFromResponse);

}