class SlidingWindow {

    long bucket(long timestamp) {
        return (long)Math.floor((double)timestamp/bucketMs);
    }

    public  SlidingWindow(Supplier<T> createOperation, BinaryOperator<T> aggregateOperation, Clock clock);
    public  SlidingWindow(int bucketSize, int history, TimeUnit timeUnit, Supplier<T> createOperation, BinaryOperator<T> aggregateOperation, Clock clock);

}