folderNames.init(getLeaves(String.class, root), String.class.getMethod("toString", noTypes));
  private void restore(String fileName) {    PropertyListener l = null;    try {      File f = new File(fileName);      this.workspaceFileName = f.getPath();      if (f.canRead()) {	ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));	try {	  root = (DefaultMutableTreeNode) ois.readObject();	  for (Enumeration e = root.depthFirstEnumeration();	       e.hasMoreElements(); ) {	    DefaultMutableTreeNode node =	      (DefaultMutableTreeNode) e.nextElement();	    Object o = node.getUserObject();	    if (o instanceof Experiment) {	      ((Experiment)o).addModificationListener(myModificationListener);	      // This used to be just Societies, but do it for everything...	    } else if (o instanceof ModifiableComponent) {	      installListeners((ModifiableComponent) o);	    }	  } // end of for loop//          } catch (ClassNotFoundException cnfe) {//          } catch (InvalidClassException ice) {//          } catch (StreamCorruptedException sce) {//          } catch (OptionalDataException ode) {//          } catch (IOException ioe) {	} catch (Exception e) {          if(log.isErrorEnabled()) {	    // Don't dump stack on this -- too verbose            log.error("Organizer: can't read file: " + f + " got exception ", e);          }	} finally {	  ois.close();	} 	        }      if (root == null)	root = new DefaultMutableTreeNode();      String rootName = f.getName();      int extpos = rootName.lastIndexOf('.');      if (extpos >= 0) 	rootName = rootName.substring(0, extpos);      root.setUserObject(rootName);      model = new DefaultTreeModel(root);      //      model = createModel(this, root);      Class[] noTypes = new Class[0];      try {	societyNames.init(getLeaves(SocietyComponent.class, root),			  SocietyComponent.class.getMethod("getSocietyName", noTypes));	experimentNames.init(getLeaves(Experiment.class, root),			     Experiment.class.getMethod("getExperimentName", noTypes));	recipeNames.init(getLeaves(RecipeComponent.class, root),			 RecipeComponent.class.getMethod("getRecipeName", noTypes));	return;      } catch (NoSuchMethodException nsme) {	if (log.isErrorEnabled()) {	  log.error("Organizer error restoring workspace", nsme);	}      } catch (SecurityException se) {	if (log.isErrorEnabled()) {	  log.error("Organizer error restoring workspace", se);	}      }    } catch (Exception ioe) {      if (log.isErrorEnabled()) {	log.error("Organizer error restoring workspace", ioe);      }      return;    }  } // end of restore