public ClassificationImpl clone() { ClassificationImpl clone = new ClassificationImpl((DynamicTypeImpl) getType()); // clone.referenceHandler = (ReferenceHandler) referenceHandler.clone((Map<String, // List<String>>) ((HashMap<String, List<String>>)data).clone()); // clone.attributeValueMap = (HashMap<String,Object>) attributeValueMap.clone(); for (Map.Entry<String, List<String>> entry : data.entrySet()) { String key = entry.getKey(); List<String> value = new ArrayList<String>(entry.getValue()); clone.data.put(key, value); } clone.resolver = resolver; clone.typeId = getParentId(); clone.type = type; clone.name = null; clone.readOnly = false; // clones are always writable return clone; }