@Override public Observable<HashMap<String, String>> apply(final GroupedObservable<String, Event> ge) { return ge.scan(new HashMap<String, String>(), new BiFunction<HashMap<String, String>, Event, HashMap<String, String>>() { @Override public HashMap<String, String> apply(HashMap<String, String> accum, Event perInstanceEvent) { synchronized (accum) { accum.put("instance", ge.getKey()); } return accum; } }); } })