/**
   * Unconditionally clone an InDesign Object.
   *
   * @param sourceObj
   * @return The clone of the object.
   * @throws Exception
   */
  public InDesignComponent clone(InDesignComponent sourceComp) throws Exception {
    if (sourceComp instanceof InDesignObject) {
      return clone((InDesignObject) sourceComp);
    }

    logger.debug("Cloning component " + sourceComp.getClass().getSimpleName());
    InDesignComponent clone = sourceComp.getClass().newInstance();
    clone.setDocument(this);
    clone.loadComponent(sourceComp);
    return clone;
  }
 /** @return */
 public String reportChildObjects() {
   StringBuilder report = new StringBuilder("Child Objects::\n");
   for (InDesignComponent comp : this.getChildren()) {
     String dsName = comp.getInxTagName();
     if (comp instanceof InDesignObject) {
       InDesignObject obj = (InDesignObject) comp;
       report.append("[").append(obj.getId()).append("] ");
     }
     report
         .append(comp.getClass().getSimpleName())
         .append(", <")
         .append(dsName)
         .append(">")
         .append("\n");
   }
   return report.toString();
 }