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
StringBuffer suite= new StringBuffer();
		suite.append(START_MARKER+"\n"); 
		for (int i= 0; i < selectedClasses.length; i++) {
			if (selectedClasses[i] instanceof IType) {
				IType testType= (IType) selectedClasses[i];
				IMethod suiteMethod= testType.getMethod("suite", new String[] {}); 
				if (!suiteMethod.exists()) {
					suite.append("suite.addTest(new TestSuite("+testType.getElementName()+".class));"); 
				} else {
					suite.append("suite.addTest("+testType.getElementName()+".suite());"); 
				}
			}
		}
		suite.append("\n"+END_MARKER); 
		return suite.toString();
	}
	
	private String getUpdatableString() throws JavaModelException {
		return getUpdatableString(fClassesInSuiteTable.getCheckedElements());
	}
	/**
	 * Runnable for replacing an existing suite() method.
	 */
	public IRunnableWithProgress getRunnable() {
		return new IRunnableWithProgress() {
			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
				try {
					if (monitor == null) {
						monitor= new NullProgressMonitor();
					}