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
}
			} else {
				suiteType.createMethod(getSuiteMethodString(), null, true, monitor);
				ISourceRange range= cu.getSourceRange();
				IBuffer buf= cu.getBuffer();
				String originalContent= buf.getText(range.getOffset(), range.getLength());
				monitor.worked(2);
				String formattedContent=
					JUnitStubUtility.codeFormat(originalContent, 0, lineDelimiter);
				buf.replace(range.getOffset(), range.getLength(), formattedContent);
				monitor.worked(1);
				cu.save(new SubProgressMonitor(monitor, 1), false);
			}
			monitor.done();
			fUpdatedExistingClassButton= true;
		} catch (JavaModelException e) {
			String title= WizardMessages.getString("NewTestSuiteWizPage.error_tile"); 
			String message= WizardMessages.getString("NewTestSuiteWizPage.error_message"); 
			ExceptionHandler.handle(e, getShell(), title, message);
		}
	}
	/**
	 * Returns true iff an existing suite() method has been replaced.
	 */
	public boolean hasUpdatedExistingClass() {
		return fUpdatedExistingClassButton;
	}
	
	private IStatus classesInSuiteChanged() {
		JUnitStatus status= new JUnitStatus();