class WindowedMapGauge extends Gauge<Map<String,Object>> {

    public void update(String src, V val){
        if (src == null) {
            throw new NullPointerException("Null source");
        }
        Windows newWindows = getWindowStartTimes(clock.currentTimeMillis());
        if (!newWindows.equals(windows)) {
            prevWindowMap = newWindows.prevStartMs == windows.activeStartMs? curWindowMap : new HashMap<>();
            curWindowMap = new HashMap<>();
            windows = newWindows;
        }
        curWindowMap.merge(src, val, mergeFunc);
    }

    public  WindowedMapGauge(String name, long windowDurationMs, BiFunction<V,V,V> mergeFunc);
    public  WindowedMapGauge(String name, long windowDurationMs, BiFunction<V,V,V> mergeFunc, Clock clock);

}