params[2] = experiment;
  public void runBuilder(ModifiableComponent cc,                          boolean alwaysNew) {    // note that cc is guaranteed non-null when this is called    Class[] paramClasses = { CSMART.class, ModifiableComponent.class };    Object[] params = new Object[2];    params[0] = this;    if (cc instanceof Experiment) {      Experiment experiment = (Experiment)cc;      // copy the original experiment and put the copy in the workspace      Experiment experimentCopy = organizer.copyExperiment(experiment);      // remove all the components from the copy      SocietyComponent sc = experimentCopy.getSocietyComponent();      if (sc != null)        experimentCopy.removeComponent(sc);      RecipeComponent[] recipes = experimentCopy.getRecipeComponents();      for (int i = 0; i < recipes.length; i++)        experimentCopy.removeRecipeComponent(recipes[i]);      // create a new society based on the society component data      // in the original experiment      ComponentData cdata = experiment.getSocietyComponentData();      cdata.setName(cdata.getName() + " Society");      cc = new SocietyCDataComponent(cdata);      cc.initProperties();      // put the new society in the copy of the experiment      experimentCopy.addSocietyComponent((SocietyComponent)cc);      // also put the new society in the workspace      organizer.addSociety((SocietyComponent)cc);    }    params[1] = cc;    createTool(CONFIGURATION_BUILDER, PropertyBuilder.class, 	       alwaysNew, cc.getShortName(), (ModifiableComponent)cc,	       paramClasses, params);  }