societyCopy.setEditable(false); originalSociety.setEditable(false);
  private void runBuilderOnExperiment(Experiment experiment) {    Thread configureThread = null;    experimentToEdit = null;    configureThread =       new ConfigureThread("ConfigureExperiment", experiment);    GUIUtils.timeConsumingTaskStart(csmart);    try {      configureThread.start();    } catch (RuntimeException re) {      if (log.isErrorEnabled()) {        log.error("Runtime exception creating experiment", re);      }    }    // wait for the above to finish, and then edit the new society    if (configureThread != null) {      try {        configureThread.join();      } catch (InterruptedException ie) {        if (log.isErrorEnabled()) {          log.error("Interrupted exception creating experiment", ie);        }      }      if (experimentToEdit == null)        return;      organizer.addExperimentAndComponentsToWorkspace(experimentToEdit,             (DefaultMutableTreeNode)organizer.getSelectedNode().getParent());      SocietyComponent originalSociety =         experimentToEdit.getSocietyComponent();      String copyName =         organizer.generateSocietyName(originalSociety.getSocietyName(), false);      if (copyName == null) {        GUIUtils.timeConsumingTaskEnd(csmart);        return;      }      SocietyComponent societyCopy =         (SocietyComponent)originalSociety.copy(copyName);      JFrame tool =         (JFrame)new PropertyBuilder(csmart, societyCopy, originalSociety,                                    experimentToEdit);      addTool(CONFIGURATION_BUILDER, societyCopy.getShortName(), tool);      GUIUtils.timeConsumingTaskEnd(csmart);    }  }