}  if (changeHappened) fireChange();
    public void putAll(Map map) {        boolean changeHappened = false;        for (Iterator entries = map.entrySet().iterator(); entries.hasNext(); ) {            Map.Entry entry = (Map.Entry) entries.next();            Object key = entry.getKey();            if (isReadOnly(key)) continue;            Object o = get(key);            if (o != null && o.equals(entry.getValue())) continue;            super.put(key, entry.getValue());            changeHappened = true;        }        //        System.out.println("Put all");        if (changeHappened)          fireChange();    }