code: private void moveChildren(INode source, INode target) {
          List<INode> children = new ArrayList<INode>(source.getChildrenList());
          while (0 < children.size()) {
              INode child = children.remove(0);
              int idx = target.getChildIndex(child);
              if (-1 == idx) {
                  target.addChild(child);
              } else {
                  moveChildren(child, target.getChildAt(idx));
              }
          }
      }
docs: Move children from <var>source</var> to <var>target</var>.
  
  @param source source node
  @param target target node