public synchronized Object clone () { final MapAttribute clone = (MapAttribute)ReflectionUtils.newInstance(this); java.util.Iterator it = this.map.keySet().iterator(); while (it.hasNext()) { Attribute key = (Attribute)it.next(); Attribute value = this.aget(key); //clone.put((Attribute)key.clone(), (Attribute)value.clone()); //if (key != null) clone.put((Attribute)key.clone(), clone(value)); } return clone; }