cloneObj.attribHash = new Hashtable(); Enumeration keys = this.attribHash.keys();
}
  public Object clone () throws CloneNotSupportedException{     //shallow copy for fields     BaseObject cloneObj = (BaseObject) super.clone();     // Clone the fields      cloneObj.attribOrder = Collections.synchronizedList(new ArrayList());      int stop = this.attribOrder.size();      for (int i = 0; i < stop; i++) {        cloneObj.attribOrder.add(new String((String) this.attribOrder.get(i)));      }     // XMLAttributes Clone     cloneObj.attribHash = new Hashtable();     Enumeration keys = this.attribHash.keys();     synchronized (this.attribHash) {      for (int i = 0; i < stop; i++)      {        String key = (String) cloneObj.attribOrder.get(i);        XMLAttribute XMLAttributeValue = (XMLAttribute) this.attribHash.get(key);        cloneObj.attribHash.put(key, XMLAttributeValue.clone());      }    }//       cloneObj.classXDFNodeName = this.classXDFNodeName;//       cloneObj.attribOrder = this.attribOrder;//       cloneObj.groupMemberHash = Collections.synchronizedSet(new HashSet());//       cloneObj.openGroupNodeHash = Collections.synchronizedSet(new HashSet());  /** This field stores object references to those group objects to which a given      object belongs.  */     return (Object) cloneObj;  }