public Object clone() {
   GoalPlanningCancellationReasonCollection newCol =
       new GoalPlanningCancellationReasonCollection();
   GoalPlanningCancellationReason item;
   for (int i = 0; i < super.size(); i++) {
     item = this.get(i);
     newCol.add(
         new GoalPlanningCancellationReason(
             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((GoalPlanningCancellationReason) item.getParent().clone());
     }
   }
   return newCol;
 }