@Override
 public Object saveState() {
   HashMap<String, Object> componentStates = new HashMap<String, Object>();
   LinkedList<BasicEditable> lst = new LinkedList<BasicEditable>();
   getComponents(lst);
   for (BasicEditable bn : lst) componentStates.put(bn.getId(), ((SDFSNode) bn).saveState());
   return componentStates;
 }
 private void recTraceChildren(BasicEditable n, int level) {
   for (int i = 0; i < level; i++) System.out.print(' ');
   System.out.println(n.getId());
   for (BasicEditable cn : n.getChildren()) recTraceChildren(cn, level + 1);
 }