Bug 15277 Recreate test suite allows you to add the suite to itself
If you have a test suite that is also a test case (done to allow cascading tests), and recreate the test suite, you're allowed to add the suite to itself. This results in a recursive call to .suite(), which ends up causing a stack overflow when run. I'm not too sure on this, but I believe previously in this situtation the suite was added to itself a test case (new Suite(class) as opposed to class.suite()), which prevented this from happening. I do prefer this new behaviour, as it makes chaining suites together much easier (now if it only searched sub-packages for suites). This one special case just needs to be handled better.
org.eclipse.jdt.junit/src/org/eclipse/jdt/internal/junit/wizards/NewTestSuiteCreationWizardPage.java
updateExistingClass(monitor);
				} catch (CoreException e) {
					throw new InvocationTargetException(e);
				} 				
			}
		};
	}
	
	protected void updateExistingClass(IProgressMonitor monitor) throws CoreException, InterruptedException {
		try {
			IPackageFragment pack= getPackageFragment();
			ICompilationUnit cu= pack.getCompilationUnit(getTypeName() + ".java"); 
	
			if (!cu.exists()) {
				createType(monitor);
				fUpdatedExistingClassButton= false;
				return;
			}
			
			IType suiteType= cu.getType(getTypeName());
			monitor.beginTask(WizardMessages.getString("NewTestSuiteWizPage.createType.beginTask"), 10); 
			IMethod suiteMethod= suiteType.getMethod("suite", new String[] {}); 
			monitor.worked(1);
			
			String lineDelimiter= JUnitStubUtility.getLineDelimiterUsed(cu);
			if (suiteMethod.exists()) {
				ISourceRange range= suiteMethod.getSourceRange();
				if (range != null) {
					IBuffer buf= cu.getBuffer();
					String originalContent= buf.getText(range.getOffset(), range.getLength());