/** @generated */
  public boolean performFinish() {
    LinkedList<IFile> affectedFiles = new LinkedList<IFile>();
    IFile diagramFile = myFileCreationPage.createNewFile();
    edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part.StateMachine_MAVODiagramEditorUtil
        .setCharset(diagramFile);
    affectedFiles.add(diagramFile);
    URI diagramModelURI = URI.createPlatformResourceURI(diagramFile.getFullPath().toString(), true);
    ResourceSet resourceSet = myEditingDomain.getResourceSet();
    final Resource diagramResource = resourceSet.createResource(diagramModelURI);
    AbstractTransactionalCommand command =
        new AbstractTransactionalCommand(
            myEditingDomain,
            edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part.Messages
                .StateMachine_MAVONewDiagramFileWizard_InitDiagramCommand,
            affectedFiles) {

          protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
              throws ExecutionException {
            int diagramVID =
                edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
                    .StateMachine_MAVOVisualIDRegistry.getDiagramVisualID(
                    diagramRootElementSelectionPage.getModelElement());
            if (diagramVID
                != edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.edit.parts
                    .StateMachineEditPart.VISUAL_ID) {
              return CommandResult.newErrorCommandResult(
                  edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part.Messages
                      .StateMachine_MAVONewDiagramFileWizard_IncorrectRootError);
            }
            Diagram diagram =
                ViewService.createDiagram(
                    diagramRootElementSelectionPage.getModelElement(),
                    edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.edit.parts
                        .StateMachineEditPart.MODEL_ID,
                    edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
                        .StateMachine_MAVODiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
            diagramResource.getContents().add(diagram);
            return CommandResult.newOKCommandResult();
          }
        };
    try {
      OperationHistoryFactory.getOperationHistory()
          .execute(command, new NullProgressMonitor(), null);
      diagramResource.save(
          edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
              .StateMachine_MAVODiagramEditorUtil.getSaveOptions());
      edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
          .StateMachine_MAVODiagramEditorUtil.openDiagram(diagramResource);
    } catch (ExecutionException e) {
      edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
          .StateMachine_MAVODiagramEditorPlugin.getInstance()
          .logError("Unable to create model and diagram", e); // $NON-NLS-1$
    } catch (IOException ex) {
      edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
          .StateMachine_MAVODiagramEditorPlugin.getInstance()
          .logError("Save operation failed for: " + diagramModelURI, ex); // $NON-NLS-1$
    } catch (PartInitException ex) {
      edu.toronto.cs.se.modelepedia.statemachine_mavo.diagram.part
          .StateMachine_MAVODiagramEditorPlugin.getInstance()
          .logError("Unable to open editor", ex); // $NON-NLS-1$
    }
    return true;
  }