public static void closeAndDisposeProjectAndCheckThatNoOpenProjects(
     @NotNull Project projectToClose, @NotNull List<Throwable> exceptions) {
   try {
     ProjectManagerEx projectManager = ProjectManagerEx.getInstanceEx();
     if (projectManager instanceof ProjectManagerImpl) {
       for (Project project : projectManager.closeTestProject(projectToClose)) {
         exceptions.add(
             new IllegalStateException(
                 "Test project is not disposed: "
                     + project
                     + ";\n created in: "
                     + getCreationPlace(project)));
         try {
           ((ProjectManagerImpl) projectManager).closeProject(project, false, true, false);
         } catch (Throwable e) {
           exceptions.add(e);
         }
       }
     }
   } catch (Throwable e) {
     exceptions.add(e);
   } finally {
     AccessToken token = WriteAction.start();
     try {
       Disposer.dispose(projectToClose);
     } catch (Throwable e) {
       exceptions.add(e);
     } finally {
       token.finish();
     }
   }
 }