class ExponentiallyDecayingReservoir implements Reservoir {

    @Override
    public Snapshot getSnapshot() {
        rescaleIfNeeded();
        lockForRegularUsage();
        try {
            return new WeightedSnapshot(values.values());
        } finally {
            unlockForRegularUsage();
        }
    }

    public  ExponentiallyDecayingReservoir();
    public  ExponentiallyDecayingReservoir(int size, double alpha);
    public  ExponentiallyDecayingReservoir(int size, double alpha, Clock clock);

}