public Object clone() { try { ISOMsg m = (ISOMsg) super.clone(); m.fields = (TreeMap) ((TreeMap) fields).clone(); if (header != null) m.header = (ISOHeader) header.clone(); Iterator iter = fields.keySet().iterator(); while (iter.hasNext()) { Integer k = (Integer) iter.next(); ISOComponent c = (ISOComponent) m.fields.get(k); if (c instanceof ISOMsg) m.fields.put(k, ((ISOMsg) c).clone()); } return m; } catch (CloneNotSupportedException e) { throw new InternalError(); } }