static class DerivedMap extends AbstractMap { Map base; Map additions = new HashMap; *() {} *(Map *base) {} *(Map *base, Map *additions) {} public B get(Object key) { B b = additions.get(key); if (b != null) return b; return base.get(key); } public B put(A key, B value) { return additions.put(key, value); } public Set> entrySet() { throw fail(); } }