synchronized boolean contentEquals(Counters counters) { boolean isEqual = false; if (counters != null) { if (size() == counters.size()) { isEqual = true; for (Map.Entry<String, Group> entry : this.counters.entrySet()) { String key = entry.getKey(); Group sourceGroup = entry.getValue(); Group targetGroup = counters.getGroup(key); if (!sourceGroup.contentEquals(targetGroup)) { isEqual = false; break; } } } } return isEqual; } }