private IFolder createNewExperiment(@NonNull String experimentName) {
   final IFolder[] experimentFolders = new IFolder[1];
   final TmfExperimentFolder root = fExperimentFolderRoot;
   if (root == null) {
     return null;
   }
   WorkspaceModifyOperation operation =
       new WorkspaceModifyOperation() {
         @Override
         public void execute(IProgressMonitor monitor)
             throws InterruptedException, InvocationTargetException {
           NewExperimentOperation createOperation =
               new NewExperimentOperation(root, experimentName);
           createOperation.run(monitor);
           IStatus status = createOperation.getStatus();
           if (!status.isOK()) {
             if (status.getSeverity() == IStatus.CANCEL) {
               throw new OperationCanceledException();
             }
             Throwable exception = status.getException();
             if (exception != null) {
               throw new InvocationTargetException(exception);
             }
             return;
           }
           experimentFolders[0] = createOperation.getExperimentFolder();
         }
       };
   try {
     PlatformUI.getWorkbench().getProgressService().busyCursorWhile(operation);
   } catch (InterruptedException | RuntimeException exception) {
     return null;
   } catch (InvocationTargetException exception) {
     TraceUtils.displayErrorMsg(
         "",
         NLS.bind("", exception.getTargetException().getMessage())); // $NON-NLS-1$ //$NON-NLS-2$
     return null;
   }
   return experimentFolders[0];
 }