public Object clone() { ISOUnitCollection newCol = new ISOUnitCollection(); ISOUnit item; for (int i = 0; i < super.size(); i++) { item = this.get(i); newCol.add( new ISOUnit( item.getID(), item.getText(), item.isActive(), item.getParent(), item.getImage(), item.getColor(), item.getOrder())); } for (int i = 0; i < newCol.size(); i++) { item = newCol.get(i); if (item.getParent() != null) { int parentIndex = this.indexOf(item.getParent()); if (parentIndex >= 0) item.setParent(newCol.get(parentIndex)); else item.setParent((ISOUnit) item.getParent().clone()); } } return newCol; }