diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpStressTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpStressTest.java
index e55fb1c..f05f336 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpStressTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpStressTest.java
@@ -352,8 +352,7 @@
         buf.append("                return test;\n");
         buf.append("            }\n");
         buf.append("        } catch (final InvocationTargetException e) {\n");
-        buf.append("            this\n");
-        buf.append("                    .runFailed(\"Failed to invoke suite():\" + e.getTargetException().toString()); //$NON-NLS-1$\n");
+        buf.append("            this.runFailed(\"Failed to invoke suite():\" + e.getTargetException().toString()); //$NON-NLS-1$\n");
         buf.append("            return null;\n");
         buf.append("        } catch (final IllegalAccessException e) {\n");
         buf.append("            this.runFailed(\"Failed to invoke suite():\" + e.toString()); //$NON-NLS-1$\n");
@@ -475,18 +474,13 @@
         buf.append("        pwin.println(\"    at java.lang.reflect.Method.invoke(Native Method)\"); //$NON-NLS-1$\n");
         buf.append("        pwin.println(\"    at junit.framework.TestCase.runTest(TestCase.java:156)\"); //$NON-NLS-1$\n");
         buf.append("        pwin.println(\"    at junit.framework.TestCase.runBare(TestCase.java:130)\"); //$NON-NLS-1$\n");
-        buf.append("        pwin\n");
-        buf.append("                .println(\"    at junit.framework.TestResult$1.protect(TestResult.java:100)\"); //$NON-NLS-1$\n");
-        buf.append("        pwin\n");
-        buf.append("                .println(\"    at junit.framework.TestResult.runProtected(TestResult.java:118)\"); //$NON-NLS-1$\n");
+        buf.append("        pwin.println(\"    at junit.framework.TestResult$1.protect(TestResult.java:100)\"); //$NON-NLS-1$\n");
+        buf.append("        pwin.println(\"    at junit.framework.TestResult.runProtected(TestResult.java:118)\"); //$NON-NLS-1$\n");
         buf.append("        pwin.println(\"    at junit.framework.TestResult.run(TestResult.java:103)\"); //$NON-NLS-1$\n");
         buf.append("        pwin.println(\"    at junit.framework.TestCase.run(TestCase.java:121)\"); //$NON-NLS-1$\n");
-        buf.append("        pwin\n");
-        buf.append("                .println(\"    at junit.framework.TestSuite.runTest(TestSuite.java:157)\"); //$NON-NLS-1$\n");
-        buf.append("        pwin\n");
-        buf.append("                .println(\"    at junit.framework.TestSuite.run(TestSuite.java, Compiled Code)\"); //$NON-NLS-1$\n");
-        buf.append("        pwin\n");
-        buf.append("                .println(\"    at junit.swingui.TestRunner$17.run(TestRunner.java:669)\"); //$NON-NLS-1$\n");
+        buf.append("        pwin.println(\"    at junit.framework.TestSuite.runTest(TestSuite.java:157)\"); //$NON-NLS-1$\n");
+        buf.append("        pwin.println(\"    at junit.framework.TestSuite.run(TestSuite.java, Compiled Code)\"); //$NON-NLS-1$\n");
+        buf.append("        pwin.println(\"    at junit.swingui.TestRunner$17.run(TestRunner.java:669)\"); //$NON-NLS-1$\n");
         buf.append("        this.fUnfiltered = swin.toString();\n");
         buf.append("\n");
         buf.append("        final StringWriter swout = new StringWriter();\n");
@@ -2088,9 +2082,8 @@
         buf.append("            TestSuite.getTestConstructor(theClass); // Avoid generating multiple\n");
         buf.append("                                                    // error messages\n");
         buf.append("        } catch (final NoSuchMethodException e) {\n");
-        buf.append("            this\n");
-        buf.append("                    .addTest(TestSuite\n");
-        buf.append("                            .warning(\"Class \" + theClass.getName() + \" has no public constructor TestCase(String name) or TestCase()\")); //$NON-NLS-1$ //$NON-NLS-2$\n");
+        buf.append("            this.addTest(TestSuite\n");
+        buf.append("                    .warning(\"Class \" + theClass.getName() + \" has no public constructor TestCase(String name) or TestCase()\")); //$NON-NLS-1$ //$NON-NLS-2$\n");
         buf.append("            return;\n");
         buf.append("        }\n");
         buf.append("\n");
@@ -2379,9 +2372,7 @@
         buf.append("     */\n");
         buf.append("    static public void assertEquals(final String message,\n");
         buf.append("            final boolean expected, final boolean actual) {\n");
-        buf.append("        Assert\n");
-        buf.append("                .assertEquals(message, new Boolean(expected), new Boolean(\n");
-        buf.append("                        actual));\n");
+        buf.append("        Assert.assertEquals(message, new Boolean(expected), new Boolean(actual));\n");
         buf.append("    }\n");
         buf.append("    /**\n");
         buf.append("     * Asserts that two bytes are equal. If they are not an AssertionFailedError\n");
@@ -2446,9 +2437,7 @@
         buf.append("     */\n");
         buf.append("    static public void assertEquals(final String message, final int expected,\n");
         buf.append("            final int actual) {\n");
-        buf.append("        Assert\n");
-        buf.append("                .assertEquals(message, new Integer(expected), new Integer(\n");
-        buf.append("                        actual));\n");
+        buf.append("        Assert.assertEquals(message, new Integer(expected), new Integer(actual));\n");
         buf.append("    }\n");
         buf.append("    /**\n");
         buf.append("     * Asserts that two longs are equal. If they are not an AssertionFailedError\n");
@@ -3504,16 +3493,12 @@
         buf.append("\n");
         buf.append("    public void testComparisonErrorWithActualNull() {\n");
         buf.append("        final ComparisonFailure failure = new ComparisonFailure(null, \"a\", null); //$NON-NLS-1$\n");
-        buf.append("        Assert\n");
-        buf.append("                .assertEquals(\n");
-        buf.append("                        \"expected:<a> but was:<null>\", failure.getMessage()); //$NON-NLS-1$\n");
+        buf.append("        Assert.assertEquals(\"expected:<a> but was:<null>\", failure.getMessage()); //$NON-NLS-1$\n");
         buf.append("    }\n");
         buf.append("\n");
         buf.append("    public void testComparisonErrorWithExpectedNull() {\n");
         buf.append("        final ComparisonFailure failure = new ComparisonFailure(null, null, \"a\"); //$NON-NLS-1$\n");
-        buf.append("        Assert\n");
-        buf.append("                .assertEquals(\n");
-        buf.append("                        \"expected:<null> but was:<a>\", failure.getMessage()); //$NON-NLS-1$\n");
+        buf.append("        Assert.assertEquals(\"expected:<null> but was:<a>\", failure.getMessage()); //$NON-NLS-1$\n");
         buf.append("    }\n");
         buf.append("}\n");
         buf.append("");
@@ -3633,8 +3618,7 @@
         buf.append("        if (result.wasSuccessful()) {\n");
         buf.append("            this.getWriter().println();\n");
         buf.append("            this.getWriter().print(\"OK\"); //$NON-NLS-1$\n");
-        buf.append("            this\n");
-        buf.append("                    .getWriter()\n");
+        buf.append("            this.getWriter()\n");
         buf.append("                    .println(\n");
         buf.append("                            \" (\"    + result.runCount() + \" test\" + (result.runCount() == 1 ? \"\" : \"s\") + \")\"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$\n");
         buf.append("\n");
@@ -3863,9 +3847,8 @@
         buf.append("        // This test wins the award for twisted snake tail eating while\n");
         buf.append("        // writing self tests. And you thought those weird anonymous\n");
         buf.append("        // inner classes were bad...\n");
-        buf.append("        Assert\n");
-        buf.append("                .assertEquals(\n");
-        buf.append("                        \"testCaseToString(junit.tests.framework.TestCaseTest)\", this.toString()); //$NON-NLS-1$\n");
+        buf.append("        Assert.assertEquals(\n");
+        buf.append("                \"testCaseToString(junit.tests.framework.TestCaseTest)\", this.toString()); //$NON-NLS-1$\n");
         buf.append("    }\n");
         buf.append("    public void testError() {\n");
         buf.append("        final TestCase error = new TestCase(\"error\") { //$NON-NLS-1$\n");
