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(); } } }