class Window {

    public WindowFuture offer(K key, R request, long offerTimeoutMillis) throws DuplicateKeyException, OfferTimeoutException, InterruptedException {
        return this.offer(key, request, offerTimeoutMillis, -1, false);
    }

    public  Window(int size);
    public  Window(int size, ScheduledExecutorService executor, long monitorInterval, WindowListener<K,R,P> listener);
    public  Window(int size, ScheduledExecutorService executor, long monitorInterval, WindowListener<K,R,P> listener, String monitorThreadName);

}