[testng] 01/02: removed everything

Eugene Zhukov eugene-guest at alioth.debian.org
Wed Sep 11 10:20:23 UTC 2013


This is an automated email from the git hooks/post-receive script.

eugene-guest pushed a commit to branch master
in repository testng.

commit 4696cae2ed327acd40f8847de0c3d07385f636ed
Author: Eugene Zhukov <jevgeni.zh at gmail.com>
Date:   Wed Sep 11 08:54:52 2013 +0000

    removed everything
---
 ANNOUNCEMENT.txt                                   |  110 -
 CHANGES.txt                                        |  719 -------
 FILES                                              |   11 -
 LICENSE.txt                                        |  201 --
 NOTES                                              |   38 -
 README                                             |   11 -
 README.template                                    |   11 -
 TODO.txt                                           |  160 --
 bin/junitconverter.bat                             |    6 -
 bin/master.bat                                     |    1 -
 bin/run-tests.sh                                   |   14 -
 bin/slave.bat                                      |    1 -
 bin/testng.bat                                     |    5 -
 bin/testng.sh                                      |    6 -
 build.properties                                   |   56 -
 build.xml                                          |  330 ---
 bundle-pom.xml                                     |   58 -
 debian/README.source                               |   57 -
 debian/ant.properties                              |    6 -
 debian/changelog                                   |   78 -
 debian/compat                                      |    1 -
 debian/control                                     |   44 -
 debian/copyright                                   |  269 ---
 debian/maven.rules                                 |    3 -
 debian/orig-tar.exclude                            |    7 -
 debian/orig-tar.sh                                 |   22 -
 .../patches/debian/disable-broken-qdox-tests.diff  |   59 -
 .../debian/disable-broken-threading-tests.diff     |   71 -
 debian/patches/debian/exclude-3rdparty-jars.diff   |  138 --
 debian/patches/debian/junitconvertor-test-fix.diff |   52 -
 debian/patches/debian/stop-on-test-failure.diff    |   22 -
 debian/patches/features/build-without-dtddoc.diff  |   26 -
 debian/patches/features/qdox-1.9.diff              |   50 -
 debian/patches/features/scope-qdox-bsh.diff        |   31 -
 .../features/threadsafe-collections-in-tests.diff  |   35 -
 debian/patches/series                              |    9 -
 debian/rules                                       |   67 -
 debian/source.lintian-overrides                    |    4 -
 debian/source/format                               |    1 -
 debian/testng-doc.dirs                             |    1 -
 debian/testng-doc.doc-base                         |    9 -
 debian/testng-doc.docs                             |    1 -
 debian/testng-doc.examples                         |    1 -
 debian/testng.dirs                                 |    1 -
 debian/testng.docs                                 |    1 -
 debian/testng.poms                                 |    1 -
 debian/watch                                       |    3 -
 doc/ant.html                                       |  347 ----
 doc/banner.js                                      |   50 -
 doc/book-toc.html                                  | 1609 --------------
 doc/book.html                                      |   52 -
 doc/documentation-main.html                        | 2190 --------------------
 doc/download.html                                  |   64 -
 doc/eclipse.html                                   |  180 --
 doc/idea.html                                      |   77 -
 doc/index.html                                     |  232 ---
 doc/maven.html                                     |  304 ---
 doc/migrating.html                                 |  100 -
 doc/misc.html                                      |  184 --
 doc/pics/chronological-methods.png                 |  Bin 16567 -> 0 bytes
 doc/pics/parameters.png                            |  Bin 5156 -> 0 bytes
 doc/pics/show-output1.png                          |  Bin 3055 -> 0 bytes
 doc/pics/show-output2.png                          |  Bin 3353 -> 0 bytes
 doc/prettify.css                                   |   34 -
 doc/prettify.js                                    | 1314 ------------
 doc/samplereport/css/maven-base.css                |  147 --
 doc/samplereport/css/maven-classic.css             |  881 --------
 doc/samplereport/css/maven-theme.css               |  125 --
 doc/samplereport/css/print.css                     |    7 -
 doc/samplereport/images/add.gif                    |  Bin 207 -> 0 bytes
 doc/samplereport/images/collapsed.gif              |  Bin 53 -> 0 bytes
 doc/samplereport/images/expanded.gif               |  Bin 52 -> 0 bytes
 doc/samplereport/images/external-classic.png       |  Bin 956 -> 0 bytes
 doc/samplereport/images/external.png               |  Bin 230 -> 0 bytes
 doc/samplereport/images/file.gif                   |  Bin 152 -> 0 bytes
 doc/samplereport/images/fix.gif                    |  Bin 181 -> 0 bytes
 doc/samplereport/images/folder-closed.gif          |  Bin 220 -> 0 bytes
 doc/samplereport/images/folder-open.gif            |  Bin 229 -> 0 bytes
 doc/samplereport/images/help_logo.gif              |  Bin 2113 -> 0 bytes
 doc/samplereport/images/icon_alert.gif             |  Bin 1120 -> 0 bytes
 doc/samplereport/images/icon_alertsml.gif          |  Bin 154 -> 0 bytes
 doc/samplereport/images/icon_arrowfolder1_sml.gif  |  Bin 1082 -> 0 bytes
 doc/samplereport/images/icon_arrowfolder2_sml.gif  |  Bin 1080 -> 0 bytes
 .../images/icon_arrowfolderclosed1_sml.gif         |  Bin 441 -> 0 bytes
 .../images/icon_arrowfolderopen2_sml.gif           |  Bin 664 -> 0 bytes
 doc/samplereport/images/icon_arrowmembers1_sml.gif |  Bin 1073 -> 0 bytes
 doc/samplereport/images/icon_arrowmembers2_sml.gif |  Bin 1072 -> 0 bytes
 .../images/icon_arrowusergroups1_sml.gif           |  Bin 1072 -> 0 bytes
 .../images/icon_arrowusergroups2_sml.gif           |  Bin 1076 -> 0 bytes
 doc/samplereport/images/icon_arrowwaste1_sml.gif   |  Bin 606 -> 0 bytes
 doc/samplereport/images/icon_arrowwaste2_sml.gif   |  Bin 609 -> 0 bytes
 doc/samplereport/images/icon_confirmsml.gif        |  Bin 94 -> 0 bytes
 doc/samplereport/images/icon_doc_lrg.gif           |  Bin 1335 -> 0 bytes
 doc/samplereport/images/icon_doc_sml.gif           |  Bin 355 -> 0 bytes
 doc/samplereport/images/icon_error_lrg.gif         |  Bin 1531 -> 0 bytes
 doc/samplereport/images/icon_error_sml.gif         |  Bin 1010 -> 0 bytes
 doc/samplereport/images/icon_folder_lrg.gif        |  Bin 1548 -> 0 bytes
 doc/samplereport/images/icon_folder_sml.gif        |  Bin 634 -> 0 bytes
 doc/samplereport/images/icon_help_lrg.gif          |  Bin 1418 -> 0 bytes
 doc/samplereport/images/icon_help_sml.gif          |  Bin 1019 -> 0 bytes
 doc/samplereport/images/icon_info_lrg.gif          |  Bin 1383 -> 0 bytes
 doc/samplereport/images/icon_info_sml.gif          |  Bin 606 -> 0 bytes
 doc/samplereport/images/icon_infosml.gif           |  Bin 77 -> 0 bytes
 doc/samplereport/images/icon_members_lrg.gif       |  Bin 1570 -> 0 bytes
 doc/samplereport/images/icon_members_sml.gif       |  Bin 1023 -> 0 bytes
 doc/samplereport/images/icon_sortdown.gif          |  Bin 117 -> 0 bytes
 doc/samplereport/images/icon_sortleft.gif          |  Bin 121 -> 0 bytes
 doc/samplereport/images/icon_sortright.gif         |  Bin 122 -> 0 bytes
 doc/samplereport/images/icon_sortup.gif            |  Bin 117 -> 0 bytes
 doc/samplereport/images/icon_success_lrg.gif       |  Bin 1492 -> 0 bytes
 doc/samplereport/images/icon_success_sml.gif       |  Bin 990 -> 0 bytes
 doc/samplereport/images/icon_usergroups_lrg.gif    |  Bin 1520 -> 0 bytes
 doc/samplereport/images/icon_usergroups_sml.gif    |  Bin 1026 -> 0 bytes
 doc/samplereport/images/icon_warning_lrg.gif       |  Bin 1491 -> 0 bytes
 doc/samplereport/images/icon_warning_sml.gif       |  Bin 576 -> 0 bytes
 doc/samplereport/images/icon_waste_lrg.gif         |  Bin 780 -> 0 bytes
 doc/samplereport/images/icon_waste_sml.gif         |  Bin 562 -> 0 bytes
 doc/samplereport/images/logos/maven-feather.png    |  Bin 2907 -> 0 bytes
 doc/samplereport/images/newwindow-classic.png      |  Bin 951 -> 0 bytes
 doc/samplereport/images/newwindow.png              |  Bin 220 -> 0 bytes
 doc/samplereport/images/none.png                   |  Bin 946 -> 0 bytes
 doc/samplereport/images/nw_maj.gif                 |  Bin 49 -> 0 bytes
 doc/samplereport/images/nw_maj_hi.gif              |  Bin 51 -> 0 bytes
 doc/samplereport/images/nw_maj_rond.gif            |  Bin 51 -> 0 bytes
 doc/samplereport/images/nw_med.gif                 |  Bin 48 -> 0 bytes
 doc/samplereport/images/nw_med_hi.gif              |  Bin 47 -> 0 bytes
 doc/samplereport/images/nw_med_rond.gif            |  Bin 46 -> 0 bytes
 doc/samplereport/images/nw_min.gif                 |  Bin 51 -> 0 bytes
 doc/samplereport/images/nw_min_036.gif             |  Bin 45 -> 0 bytes
 doc/samplereport/images/nw_min_hi.gif              |  Bin 46 -> 0 bytes
 doc/samplereport/images/pdf.gif                    |  Bin 950 -> 0 bytes
 doc/samplereport/images/poweredby_036.gif          |  Bin 808 -> 0 bytes
 doc/samplereport/images/product_logo.gif           |  Bin 680 -> 0 bytes
 doc/samplereport/images/remove.gif                 |  Bin 227 -> 0 bytes
 doc/samplereport/images/se_maj_rond.gif            |  Bin 50 -> 0 bytes
 doc/samplereport/images/strich.gif                 |  Bin 43 -> 0 bytes
 doc/samplereport/images/sw_maj_rond.gif            |  Bin 51 -> 0 bytes
 doc/samplereport/images/sw_med_rond.gif            |  Bin 46 -> 0 bytes
 doc/samplereport/images/sw_min.gif                 |  Bin 45 -> 0 bytes
 doc/samplereport/images/update.gif                 |  Bin 192 -> 0 bytes
 doc/samplereport/index.html                        |   87 -
 doc/testng.css                                     |  163 --
 eclipse-projects/beust.com/.project                |   17 -
 eclipse-projects/beust.com/index.html              |   60 -
 eclipse-projects/beust.com/site.xml                |    7 -
 eclipse-projects/beust.com/web/site.css            |   12 -
 eclipse-projects/beust.com/web/site.xsl            |  214 --
 eclipse-projects/org.testng.eclipse/.project       |   17 -
 .../org.testng.eclipse/build.properties            |    1 -
 eclipse-projects/org.testng.eclipse/feature.xml    |  230 --
 examples/.cvsignore                                |    4 -
 examples/build.xml                                 |  146 --
 examples/src/example1/Test1.java                   |   85 -
 examples/src/priority/Priority.java                |   13 -
 examples/src/priority/PriorityInterceptor.java     |   46 -
 examples/src/priority/PriorityTest.java            |   31 -
 examples/testng.xml                                |   32 -
 gigaspaces/.classpath                              |   12 -
 gigaspaces/.project                                |   17 -
 gigaspaces/build.xml                               |  101 -
 .../src/org/testng/gigaspaces/ResultEntry.java     |   44 -
 .../org/testng/gigaspaces/SpaceMasterAdapter.java  |  153 --
 .../org/testng/gigaspaces/SpaceWorkerAdapter.java  |  113 -
 .../src/org/testng/gigaspaces/SuiteEntry.java      |   59 -
 .../test/src/test/gigaspaces/DistributedTest.java  |  171 --
 gigaspaces/test/src/test/gigaspaces/Test1.java     |   15 -
 gigaspaces/test/src/test/gigaspaces/Test2.java     |   14 -
 maven/plugin-resources/junitRpt-failed.jsl         |  307 ---
 maven/plugin-resources/junitRpt.jsl                |  375 ----
 maven/plugin.jelly                                 |   88 -
 maven/plugin.properties                            |    5 -
 maven/project.properties                           |    3 -
 maven/project.xml                                  |   97 -
 resources/testng.css                               |    9 -
 sandbox/src/org/testng/DefaultTestContext.java     |  131 --
 sandbox/src/org/testng/ITestResult.java            |   82 -
 sandbox/src/org/testng/TestClass.java              |  240 ---
 .../src/org/testng/internal/BaseTestMethod.java    |  612 ------
 .../org/testng/internal/TestNGMethodFinder.java    |  257 ---
 .../testng/internal/mix/RequiresConfiguration.java |   14 -
 .../org/testng/internal/mix/TestConfiguration.java |   13 -
 .../testng/internal/DefaultInstanceFactory.java    |  178 --
 .../test/org/testng/internal/IInstanceFactory.java |   19 -
 .../testng/internal/mix/ConfigurationMixin.java    |   32 -
 .../internal/mix/InjectConfigurationMixinTest.java |   22 -
 spring/.classpath                                  |   15 -
 spring/.cvsignore                                  |    3 -
 spring/.project                                    |   17 -
 spring/LICENSE.txt                                 |  201 --
 spring/README.TXT                                  |   23 -
 spring/build.xml                                   |   94 -
 ...tractDependencyInjectionSpringContextTests.java |  259 ---
 .../spring/test/AbstractSpringContextTests.java    |  140 --
 ...tTransactionalDataSourceSpringContextTests.java |  175 --
 .../AbstractTransactionalSpringContextTests.java   |  328 ---
 .../src/common/org/testng/spring/test/package.html |   14 -
 .../test/AbstractSingleSpringContextTests.java     |  192 --
 .../AbstractAnnotationAwareTransactionalTests.java |   67 -
 .../test/AbstractSingleSpringContextTests.java     |  194 --
 src/com/beust/testng/TestNG.java                   |   12 -
 src/com/beust/testng/TestNGAntTask.java            |   11 -
 src/org/testng/Assert.java                         |  639 ------
 src/org/testng/AssertJUnit.java                    |  371 ----
 src/org/testng/ClassMethodMap.java                 |   72 -
 src/org/testng/FileAssert.java                     |  329 ---
 src/org/testng/IAnnotationTransformer.java         |   31 -
 src/org/testng/IAnnotationTransformer2.java        |   46 -
 src/org/testng/IAttributes.java                    |   32 -
 src/org/testng/IClass.java                         |   35 -
 src/org/testng/IExtraOutput.java                   |   24 -
 src/org/testng/IHookCallBack.java                  |   24 -
 src/org/testng/IHookable.java                      |   30 -
 src/org/testng/IInstanceInfo.java                  |   23 -
 src/org/testng/IInvokedMethod.java                 |   28 -
 src/org/testng/IInvokedMethodListener.java         |   12 -
 src/org/testng/IInvokedMethodListener2.java        |   22 -
 src/org/testng/IMethodInstance.java                |   13 -
 src/org/testng/IMethodInterceptor.java             |   34 -
 src/org/testng/IMethodSelector.java                |   37 -
 src/org/testng/IMethodSelectorContext.java         |   33 -
 src/org/testng/IObjectFactory.java                 |   13 -
 src/org/testng/IReporter.java                      |   21 -
 src/org/testng/IResultMap.java                     |   21 -
 src/org/testng/IRetryAnalyzer.java                 |   18 -
 src/org/testng/ISuite.java                         |   95 -
 src/org/testng/ISuiteListener.java                 |   22 -
 src/org/testng/ISuiteResult.java                   |   24 -
 src/org/testng/ITest.java                          |   15 -
 src/org/testng/ITestClass.java                     |  132 --
 src/org/testng/ITestClassFinder.java               |   24 -
 src/org/testng/ITestContext.java                   |  115 -
 src/org/testng/ITestListener.java                  |   67 -
 src/org/testng/ITestMethodFinder.java              |   72 -
 src/org/testng/ITestNGListener.java                |   10 -
 src/org/testng/ITestNGMethod.java                  |  230 --
 src/org/testng/ITestResult.java                    |   86 -
 src/org/testng/ITestRunnerFactory.java             |   14 -
 src/org/testng/JUnitConverter.java                 |  187 --
 src/org/testng/JUnitConverterTask.java             |   80 -
 src/org/testng/Reporter.java                       |  149 --
 src/org/testng/ReporterConfig.java                 |  136 --
 src/org/testng/SkipException.java                  |   71 -
 src/org/testng/SuiteResult.java                    |   91 -
 src/org/testng/SuiteRunState.java                  |   22 -
 src/org/testng/SuiteRunner.java                    |  603 ------
 src/org/testng/TestClass.java                      |  236 ---
 src/org/testng/TestException.java                  |   22 -
 src/org/testng/TestListenerAdapter.java            |  164 --
 src/org/testng/TestNG.java                         | 1353 ------------
 src/org/testng/TestNGAntTask.java                  | 1075 ----------
 src/org/testng/TestNGCommandLineArgs.java          |  759 -------
 src/org/testng/TestNGException.java                |   28 -
 src/org/testng/TestNGUtils.java                    |   16 -
 src/org/testng/TestRunner.java                     | 1494 -------------
 src/org/testng/TimeBombSkipException.java          |  228 --
 src/org/testng/annotations/AfterClass.java         |   66 -
 src/org/testng/annotations/AfterGroups.java        |   75 -
 src/org/testng/annotations/AfterMethod.java        |   72 -
 src/org/testng/annotations/AfterSuite.java         |   66 -
 src/org/testng/annotations/AfterTest.java          |   66 -
 src/org/testng/annotations/BeforeClass.java        |   66 -
 src/org/testng/annotations/BeforeGroups.java       |   75 -
 src/org/testng/annotations/BeforeMethod.java       |   71 -
 src/org/testng/annotations/BeforeSuite.java        |   66 -
 src/org/testng/annotations/BeforeTest.java         |   66 -
 src/org/testng/annotations/Configuration.java      |  142 --
 src/org/testng/annotations/DataProvider.java       |   31 -
 src/org/testng/annotations/ExpectedExceptions.java |   22 -
 src/org/testng/annotations/Factory.java            |   30 -
 src/org/testng/annotations/IAnnotation.java        |   11 -
 .../annotations/IConfigurationAnnotation.java      |   82 -
 .../annotations/IDataProviderAnnotation.java       |   21 -
 .../annotations/IExpectedExceptionsAnnotation.java |   14 -
 src/org/testng/annotations/IFactoryAnnotation.java |   12 -
 .../annotations/IObjectFactoryAnnotation.java      |   10 -
 src/org/testng/annotations/IParameterizable.java   |   18 -
 .../testng/annotations/IParametersAnnotation.java  |   27 -
 src/org/testng/annotations/ITestAnnotation.java    |   87 -
 .../testng/annotations/ITestOrConfiguration.java   |   52 -
 src/org/testng/annotations/Listeners.java          |   27 -
 src/org/testng/annotations/ObjectFactory.java      |   18 -
 src/org/testng/annotations/Optional.java           |   28 -
 src/org/testng/annotations/Parameters.java         |   35 -
 src/org/testng/annotations/Test.java               |  177 --
 src/org/testng/annotations/TestInstance.java       |   19 -
 src/org/testng/collections/Lists.java              |   15 -
 src/org/testng/collections/Maps.java               |   11 -
 src/org/testng/internal/AnnotationTypeEnum.java    |  147 --
 src/org/testng/internal/Attributes.java            |   32 -
 src/org/testng/internal/BaseClassFinder.java       |   64 -
 src/org/testng/internal/BaseTestMethod.java        |  657 ------
 src/org/testng/internal/ClassHelper.java           |  412 ----
 src/org/testng/internal/ClassImpl.java             |  113 -
 src/org/testng/internal/ClonedMethod.java          |  277 ---
 src/org/testng/internal/Configuration.java         |   25 -
 .../testng/internal/ConfigurationGroupMethods.java |  141 --
 src/org/testng/internal/ConfigurationMethod.java   |  396 ----
 src/org/testng/internal/Constants.java             |   96 -
 src/org/testng/internal/DataProviderHolder.java    |   19 -
 src/org/testng/internal/DefaultGuiceModule.java    |   33 -
 .../internal/DefaultMethodSelectorContext.java     |   30 -
 src/org/testng/internal/DynamicGraph.java          |  178 --
 .../testng/internal/ExpectedExceptionsHolder.java  |   16 -
 src/org/testng/internal/ExtraOutput.java           |   23 -
 src/org/testng/internal/FactoryMethod.java         |   90 -
 src/org/testng/internal/Graph.java                 |  422 ----
 src/org/testng/internal/IConfiguration.java        |   10 -
 .../testng/internal/IConfigurationListener.java    |   17 -
 src/org/testng/internal/IInvoker.java              |   57 -
 src/org/testng/internal/IMethodWorker.java         |   20 -
 src/org/testng/internal/IResultListener.java       |   12 -
 src/org/testng/internal/ITestResultNotifier.java   |   37 -
 src/org/testng/internal/IWorkerFactory.java        |   11 -
 src/org/testng/internal/InstanceInfo.java          |   22 -
 src/org/testng/internal/InvokeMethodRunnable.java  |   72 -
 src/org/testng/internal/InvokedMethod.java         |   74 -
 src/org/testng/internal/Invoker.java               | 1742 ----------------
 src/org/testng/internal/MapList.java               |   69 -
 src/org/testng/internal/MethodHelper.java          |  852 --------
 src/org/testng/internal/MethodInheritance.java     |  161 --
 src/org/testng/internal/MethodInstance.java        |   51 -
 .../testng/internal/MethodSelectorDescriptor.java  |   53 -
 src/org/testng/internal/NoOpTestClass.java         |  172 --
 src/org/testng/internal/ObjectFactoryImpl.java     |   38 -
 src/org/testng/internal/PackageUtils.java          |  253 ---
 src/org/testng/internal/ParameterHolder.java       |   27 -
 src/org/testng/internal/Parameters.java            |  472 -----
 src/org/testng/internal/PoolService.java           |  166 --
 src/org/testng/internal/PropertiesFile.java        |   50 -
 src/org/testng/internal/PropertyUtils.java         |   89 -
 src/org/testng/internal/ResultMap.java             |   54 -
 src/org/testng/internal/RunInfo.java               |   69 -
 src/org/testng/internal/Tarjan.java                |   82 -
 .../TestMethodWithDataProviderMethodWorker.java    |  148 --
 src/org/testng/internal/TestMethodWorker.java      |  301 ---
 src/org/testng/internal/TestNGClassFinder.java     |  257 ---
 src/org/testng/internal/TestNGGuiceModule.java     |   38 -
 src/org/testng/internal/TestNGMethod.java          |  193 --
 src/org/testng/internal/TestNGMethodFinder.java    |  239 ---
 src/org/testng/internal/TestNGProperty.java        |   53 -
 src/org/testng/internal/TestResult.java            |  258 ---
 src/org/testng/internal/Utils.java                 |  666 ------
 src/org/testng/internal/XmlMethodSelector.java     |  429 ----
 .../internal/annotations/AfterSuiteAnnotation.java |    5 -
 .../annotations/AnnotationConfiguration.java       |   54 -
 .../internal/annotations/AnnotationHelper.java     |  296 ---
 .../internal/annotations/BaseAnnotation.java       |   30 -
 .../internal/annotations/BaseBeforeAfter.java      |   68 -
 .../annotations/BeforeSuiteAnnotation.java         |    5 -
 .../annotations/ConfigurationAnnotation.java       |  163 --
 src/org/testng/internal/annotations/Converter.java |   81 -
 .../annotations/DataProviderAnnotation.java        |   33 -
 .../annotations/DefaultAnnotationTransformer.java  |   18 -
 .../annotations/ExpectedExceptionsAnnotation.java  |   24 -
 .../internal/annotations/FactoryAnnotation.java    |   34 -
 .../testng/internal/annotations/IAfterClass.java   |    5 -
 .../testng/internal/annotations/IAfterGroups.java  |    5 -
 .../testng/internal/annotations/IAfterMethod.java  |    5 -
 .../testng/internal/annotations/IAfterSuite.java   |    5 -
 .../testng/internal/annotations/IAfterTest.java    |    5 -
 .../testng/internal/annotations/IAfterTests.java   |    5 -
 .../internal/annotations/IAnnotationFinder.java    |   62 -
 .../annotations/IAnnotationTransformer.java        |    8 -
 .../internal/annotations/IBaseBeforeAfter.java     |   67 -
 .../testng/internal/annotations/IBeforeClass.java  |    5 -
 .../testng/internal/annotations/IBeforeGroups.java |    5 -
 .../testng/internal/annotations/IBeforeMethod.java |    4 -
 .../testng/internal/annotations/IBeforeSuite.java  |    5 -
 .../testng/internal/annotations/IBeforeTest.java   |    5 -
 src/org/testng/internal/annotations/ITest.java     |    7 -
 .../annotations/JDK15AnnotationFinder.java         |  265 ---
 .../internal/annotations/JDK15TagFactory.java      |  492 -----
 .../annotations/ObjectFactoryAnnotation.java       |   10 -
 .../internal/annotations/ParametersAnnotation.java |   26 -
 src/org/testng/internal/annotations/Sets.java      |   12 -
 .../internal/annotations/TestAnnotation.java       |  178 --
 .../internal/annotations/TestOrConfiguration.java  |   72 -
 src/org/testng/internal/remote/SlavePool.java      |   62 -
 .../internal/remote/SocketLinkedBlockingQueue.java |   16 -
 .../internal/thread/AtomicIntegerAdapter.java      |   30 -
 .../testng/internal/thread/CountDownAdapter.java   |   36 -
 .../testng/internal/thread/ExecutorAdapter.java    |   58 -
 .../internal/thread/FutureResultAdapter.java       |   27 -
 .../internal/thread/GroupThreadPoolExecutor.java   |  143 --
 src/org/testng/internal/thread/IAtomicInteger.java |   22 -
 src/org/testng/internal/thread/ICountDown.java     |   14 -
 src/org/testng/internal/thread/IExecutor.java      |   18 -
 src/org/testng/internal/thread/IFutureResult.java  |   10 -
 .../testng/internal/thread/IPooledExecutor.java    |   22 -
 src/org/testng/internal/thread/IThreadFactory.java |   17 -
 .../internal/thread/PooledExecutorAdapter.java     |   36 -
 src/org/testng/internal/thread/TestNGThread.java   |   16 -
 .../internal/thread/ThreadExecutionException.java  |   14 -
 .../internal/thread/ThreadTimeoutException.java    |   22 -
 src/org/testng/internal/thread/ThreadUtil.java     |  151 --
 src/org/testng/internal/version/VersionInfo.java   |   28 -
 src/org/testng/junit/IJUnitTestRunner.java         |   21 -
 src/org/testng/junit/JUnitDirectoryConverter.java  |  126 --
 src/org/testng/junit/JUnitMethodFinder.java        |  200 --
 src/org/testng/junit/JUnitTestConverter.java       |  388 ----
 src/org/testng/junit/JUnitTestRunner.java          |  264 ---
 src/org/testng/junit/JUnitUtils.java               |  592 ------
 src/org/testng/log/TextFormatter.java              |   25 -
 src/org/testng/log4testng/Logger.java              |  723 -------
 src/org/testng/remote/ConnectionInfo.java          |   35 -
 src/org/testng/remote/RemoteSuiteWorker.java       |   36 -
 src/org/testng/remote/RemoteTestNG.java            |  163 --
 src/org/testng/remote/RemoteWorker.java            |   42 -
 src/org/testng/remote/SuiteDispatcher.java         |  176 --
 src/org/testng/remote/SuiteSlave.java              |  105 -
 .../remote/adapter/DefaultMastertAdapter.java      |   85 -
 .../remote/adapter/DefaultWorkerAdapter.java       |   85 -
 src/org/testng/remote/adapter/IMasterAdapter.java  |   40 -
 src/org/testng/remote/adapter/IWorkerApadter.java  |   41 -
 .../remote/adapter/RemoteResultListener.java       |   64 -
 .../AbstractRemoteTestRunnerClient.java            |  215 --
 .../testng/remote/strprotocol/GenericMessage.java  |   66 -
 src/org/testng/remote/strprotocol/IMessage.java    |   10 -
 .../remote/strprotocol/IRemoteSuiteListener.java   |   33 -
 .../remote/strprotocol/IRemoteTestListener.java    |   25 -
 .../testng/remote/strprotocol/IStringMessage.java  |   11 -
 .../testng/remote/strprotocol/MessageHelper.java   |  236 ---
 .../RemoteMessageSenderTestListener.java           |  105 -
 .../strprotocol/StringMessageSenderHelper.java     |  212 --
 .../testng/remote/strprotocol/SuiteMessage.java    |   55 -
 src/org/testng/remote/strprotocol/TestMessage.java |  106 -
 .../remote/strprotocol/TestResultMessage.java      |  304 ---
 src/org/testng/reporters/DotTestListener.java      |   31 -
 src/org/testng/reporters/EmailableReporter.java    |  486 -----
 src/org/testng/reporters/ExitCodeListener.java     |   19 -
 src/org/testng/reporters/FailedReporter.java       |  227 --
 src/org/testng/reporters/HtmlHelper.java           |   29 -
 src/org/testng/reporters/JUnitXMLReporter.java     |  265 ---
 src/org/testng/reporters/JUnitXMLReporter2.java    |  225 --
 src/org/testng/reporters/SuiteHTMLReporter.java    |  733 -------
 src/org/testng/reporters/TestHTMLReporter.java     |  367 ----
 src/org/testng/reporters/TextReporter.java         |  181 --
 src/org/testng/reporters/XMLConstants.java         |   68 -
 src/org/testng/reporters/XMLReporter.java          |  224 --
 src/org/testng/reporters/XMLReporterConfig.java    |  195 --
 src/org/testng/reporters/XMLStringBuffer.java      |  301 ---
 src/org/testng/reporters/XMLSuiteResultWriter.java |  262 ---
 src/org/testng/reporters/XMLUtils.java             |  118 --
 src/org/testng/reporters/util/StackTraceTools.java |   44 -
 src/org/testng/util/RetryAnalyzerCount.java        |   48 -
 src/org/testng/xml/ClassSuite.java                 |   57 -
 src/org/testng/xml/LaunchSuite.java                |  432 ----
 src/org/testng/xml/Parser.java                     |  306 ---
 src/org/testng/xml/SuiteGenerator.java             |   95 -
 src/org/testng/xml/TestNGContentHandler.java       |  628 ------
 src/org/testng/xml/XmlClass.java                   |  183 --
 src/org/testng/xml/XmlInclude.java                 |   27 -
 src/org/testng/xml/XmlMethodSelector.java          |  104 -
 src/org/testng/xml/XmlPackage.java                 |  114 -
 src/org/testng/xml/XmlSuite.java                   |  565 -----
 src/org/testng/xml/XmlTest.java                    |  536 -----
 src/pom.xml                                        |   45 -
 src/testng-1.0.dtd                                 |  185 --
 src/testng-1.0.dtd.html                            |  203 --
 src/testngtasks                                    |    2 -
 test/.cvsignore                                    |    9 -
 test/ant/DontOverrideSuiteNameTest.java            |   12 -
 test/ant/MultipleThreadTest.java                   |  124 --
 test/ant/NoPackageTest.java                        |   20 -
 test/ant/build.xml                                 |   73 -
 test/ant/testng.xml                                |   10 -
 test/build-dogfood.xml                             |   30 -
 test/build-sample.xml                              |   30 -
 test/build.xml                                     |  144 --
 test/factory.xml                                   |   11 -
 test/global-result.txt                             |   64 -
 test/hosts.properties                              |    2 -
 test/reports.html                                  |   21 -
 test/src/ConverterSample2.java                     |   33 -
 test/src/ConverterSample4.java                     |   83 -
 test/src/NoPackageTest.java                        |   20 -
 test/src/org/testng/AssertTest.java                |   32 -
 .../internal/conflistener/FailingAfterClass.java   |   17 -
 .../internal/conflistener/FailingAfterSuite.java   |   19 -
 .../internal/conflistener/FailingAfterTest.java    |   23 -
 .../internal/conflistener/FailingBeforeClass.java  |   17 -
 .../internal/conflistener/FailingBeforeSuite.java  |   19 -
 .../internal/conflistener/FailingBeforeTest.java   |   24 -
 .../org/testng/internal/conflistener/testng.xml    |   30 -
 test/src/test/BaseDistributedTest.java             |   51 -
 test/src/test/BaseTest.java                        |  530 -----
 test/src/test/ClassConfigurations.java             |   50 -
 test/src/test/CommandLineTest.java                 |  108 -
 test/src/test/CtorCalledOnce.java                  |   37 -
 test/src/test/DynamicGraphTest.java                |   67 -
 test/src/test/Exclude.java                         |   51 -
 test/src/test/GraphTest.java                       |  196 --
 test/src/test/IndividualMethodsTest.java           |   30 -
 .../test/InvocationAndSuccessPercentageTest.java   |  101 -
 test/src/test/JUnitTest1.java                      |  125 --
 test/src/test/MethodTest.java                      |   51 -
 test/src/test/Misc.java                            |   32 -
 test/src/test/ParameterConstructorTest.java        |   53 -
 test/src/test/SampleInheritance.java               |   45 -
 test/src/test/SimpleBaseTest.java                  |   24 -
 test/src/test/Test1.java                           |  137 --
 test/src/test/Test2.java                           |   89 -
 test/src/test/TestHelper.java                      |   71 -
 .../BasePrivateAccessConfigurationMethods.java     |   24 -
 .../access/PrivateAccessConfigurationMethods.java  |   52 -
 test/src/test/alwaysrun/AlwaysRunAfter1.java       |   29 -
 test/src/test/alwaysrun/AlwaysRunAfter2.java       |   24 -
 test/src/test/alwaysrun/AlwaysRunBefore1.java      |   56 -
 test/src/test/alwaysrun/AlwaysRunTest.java         |   51 -
 ...tationTransformerClassInvocationSampleTest.java |   11 -
 .../AnnotationTransformerClassSampleTest.java      |   30 -
 ...nnotationTransformerDataProviderSampleTest.java |   20 -
 .../AnnotationTransformerFactorySampleTest.java    |   20 -
 .../AnnotationTransformerInTestngXml.java          |   19 -
 .../AnnotationTransformerSampleTest.java           |   60 -
 .../AnnotationTransformerTest.java                 |  165 --
 .../ConfigurationSampleTest.java                   |   32 -
 .../ConfigurationTransformer.java                  |   33 -
 .../DataProviderTransformer.java                   |   30 -
 .../annotationtransformer/FactoryTransformer.java  |   30 -
 .../MyTimeOutTransformer.java                      |   18 -
 .../test/annotationtransformer/MyTransformer.java  |   35 -
 .../src/test/annotationtransformer/SimpleTest.java |   17 -
 test/src/test/ant/TestCommandLineArgs.java         |   52 -
 test/src/test/asserttests/AssertTest.java          |   21 -
 test/src/test/attributes/AttributeTest.java        |   37 -
 test/src/test/classgroup/First.java                |   23 -
 test/src/test/classgroup/Second.java               |   13 -
 .../conffailure/ClassWithFailedBeforeSuite.java    |   12 -
 .../ClassWithFailedBeforeSuiteVerification.java    |   26 -
 .../ClassWithFailedBeforeTestClass.java            |   18 -
 ...ClassWithFailedBeforeTestClassVerification.java |   33 -
 .../src/test/conffailure/ConfigurationFailure.java |   51 -
 test/src/test/configuration/Base.java              |   26 -
 test/src/test/configuration/Base3.java             |   35 -
 .../test/configuration/BaseBeforeTestOrdering.java |    8 -
 .../test/configuration/BaseGroupsASampleTest.java  |   10 -
 .../test/configuration/BaseGroupsBSampleTest.java  |   10 -
 test/src/test/configuration/BaseGroupsTest.java    |   36 -
 test/src/test/configuration/BaseSuiteTest.java     |   22 -
 .../src/test/configuration/BeforeClassThreadA.java |   18 -
 .../src/test/configuration/BeforeClassThreadB.java |   18 -
 .../test/configuration/BeforeClassThreadTest.java  |   19 -
 test/src/test/configuration/BeforeMethodTest.java  |   29 -
 .../configuration/BeforeTestOrdering1Test.java     |   28 -
 .../configuration/BeforeTestOrdering2Test.java     |   28 -
 .../test/configuration/BeforeTestOrderingTest.java |   65 -
 .../ConfigurationGroupBothSampleTest.java          |   44 -
 .../ConfigurationGroupDataProviderSampleTest.java  |   44 -
 ...onfigurationGroupInvocationCountSampleTest.java |   38 -
 .../ConfigurationGroups1SampleTest.java            |   59 -
 .../ConfigurationGroups2SampleTest.java            |   70 -
 .../ConfigurationGroups3SampleTest.java            |   66 -
 .../ConfigurationGroups4SampleTest.java            |   56 -
 .../ConfigurationGroups5SampleTest.java            |   67 -
 .../ConfigurationGroups6SampleTest.java            |   65 -
 .../ConfigurationGroups7SampleTest.java            |   40 -
 .../ConfigurationGroups8SampleTest.java            |   53 -
 .../ConfigurationInheritGroupsSampleTest.java      |   23 -
 test/src/test/configuration/ConfigurationTest.java |  114 -
 .../configuration/ConfigurationWithParameters.java |   23 -
 .../configuration/ExternalConfigurationClass.java  |   53 -
 test/src/test/configuration/GroupsTest.java        |   56 -
 .../test/configuration/MethodCallOrderTest.java    |   71 -
 .../configuration/MultipleBeforeGroupTest.java     |   25 -
 ...tMethodParametrizedConfigurationMethodTest.java |   44 -
 .../configuration/SuiteFactoryOnceSample1Test.java |   25 -
 .../configuration/SuiteFactoryOnceSample2Test.java |   11 -
 .../test/configuration/SuiteFactoryOnceTest.java   |   23 -
 test/src/test/configuration/SuiteTest.java         |   22 -
 test/src/test/configuration/VerifySuiteTest.java   |   14 -
 test/src/test/convert/JUnitConverterTest.java      |   44 -
 test/src/test/converter/ConverterSample1.java      |   33 -
 test/src/test/converter/JUnitConverterTest.java    |  130 --
 test/src/test/cyclic/AbstractGenericTests.java     |   13 -
 test/src/test/cyclic/BaseIntegrationTest.java      |   18 -
 test/src/test/cyclic/HibernateConcreteTests.java   |   12 -
 test/src/test/cyclic/SomeConcreteTests.java        |   12 -
 test/src/test/dataprovider/BooleanTest.java        |   35 -
 test/src/test/dataprovider/ClassSampleTest.java    |   23 -
 test/src/test/dataprovider/ClassTest.java          |   20 -
 .../ConfigurationAndDataProvidersTest.java         |   69 -
 test/src/test/dataprovider/CreateDataTest.java     |   29 -
 test/src/test/dataprovider/DataProviderAsTest.java |   22 -
 .../src/test/dataprovider/DependentSampleTest.java |   22 -
 .../dataprovider/FailedDataProviderSample.java     |   24 -
 .../test/dataprovider/FailedDataProviderTest.java  |   51 -
 .../src/test/dataprovider/FailingDataProvider.java |   21 -
 .../test/dataprovider/FailingDataProviderTest.java |   24 -
 .../dataprovider/FailingIterableDataProvider.java  |   35 -
 .../FailingIterableDataProviderTest.java           |   31 -
 test/src/test/dataprovider/InheritanceATest.java   |   15 -
 test/src/test/dataprovider/InheritanceBTest.java   |   10 -
 .../InheritedDataProviderBaseSampleTest.java       |    9 -
 .../InheritedDataProviderSample1Test.java          |   13 -
 .../dataprovider/InheritedDataProviderTest.java    |   11 -
 .../test/dataprovider/InnexistentDataProvider.java |   15 -
 .../InstanceDataProviderSampleTest.java            |   40 -
 .../dataprovider/InstanceDataProviderTest.java     |   15 -
 test/src/test/dataprovider/IterableTest.java       |   54 -
 test/src/test/dataprovider/MethodTest.java         |   56 -
 test/src/test/dataprovider/MyIterator.java         |   34 -
 test/src/test/dataprovider/Sample1Test.java        |   38 -
 .../dataprovider/StaticDataProviderSampleTest.java |   12 -
 test/src/test/dataprovider/StaticProvider.java     |   13 -
 .../test/dataprovider/TestContextSampleTest.java   |   50 -
 test/src/test/dataprovider/TestContextTest.java    |   46 -
 .../src/test/dataprovider/TestInstanceFactory.java |   15 -
 test/src/test/dataprovider/TestInstanceTest.java   |   43 -
 .../test/dataprovider/UnnamedDataProviderTest.java |   34 -
 test/src/test/dependent/BaseOrderMethodTest.java   |   47 -
 test/src/test/dependent/ClassDependsOnGroups.java  |   24 -
 test/src/test/dependent/ClassWide1Test.java        |   22 -
 test/src/test/dependent/ClassWide2Test.java        |   19 -
 test/src/test/dependent/DepBugSampleTest.java      |   49 -
 test/src/test/dependent/DepBugVerifyTest.java      |   20 -
 .../src/test/dependent/DependentAlwaysRunTest.java |   62 -
 .../DependentOnGroup1AlwaysRunSampleTest.java      |   30 -
 .../DependentOnGroup2AlwaysRunSampleTest.java      |   34 -
 .../DependentOnMethod1AlwaysRunSampleTest.java     |   30 -
 test/src/test/dependent/DependentTest.java         |   95 -
 .../dependent/DependsOnProtectedMethodTest.java    |   29 -
 test/src/test/dependent/DepthDependencyTest.java   |   21 -
 .../DifferentClassDependsOnGroupsTest1.java        |   17 -
 .../DifferentClassDependsOnGroupsTest2.java        |   11 -
 .../ImplicitGroupInclusion2SampleTest.java         |   37 -
 .../ImplicitGroupInclusion3SampleTest.java         |   19 -
 .../ImplicitGroupInclusion4SampleTest.java         |   43 -
 .../ImplicitGroupInclusionSampleTest.java          |   21 -
 .../test/dependent/ImplicitGroupInclusionTest.java |  100 -
 .../ImplicitMethodInclusionSampleTest.java         |   20 -
 .../src/test/dependent/MissingGroupSampleTest.java |   29 -
 test/src/test/dependent/MissingGroupTest.java      |   28 -
 .../test/dependent/MissingMethodSampleTest.java    |   29 -
 test/src/test/dependent/MissingMethodTest.java     |   28 -
 test/src/test/dependent/MultiGroup1SampleTest.java |   16 -
 test/src/test/dependent/MultiGroup2SampleTest.java |   10 -
 test/src/test/dependent/MultiGroupTest.java        |   27 -
 test/src/test/dependent/OrderMethodTest.java       |   35 -
 test/src/test/dependent/SampleDependent1.java      |   23 -
 .../SampleDependentConfigurationMethods.java       |   26 -
 .../src/test/dependent/SampleDependentMethods.java |   71 -
 .../test/dependent/SampleDependentMethods2.java    |   68 -
 .../test/dependent/SampleDependentMethods3.java    |   54 -
 .../test/dependent/SampleDependentMethods4.java    |   25 -
 .../test/dependent/SampleDependentMethods5.java    |   19 -
 .../test/dependent/SampleDependentMethods6.java    |   18 -
 test/src/test/dependent/Test1.java                 |    5 -
 test/src/test/dependent/functionality1/Config.java |   11 -
 test/src/test/dependent/functionality1/Test1.java  |   14 -
 test/src/test/dependent/functionality1/Test2.java  |   15 -
 .../test/dependsongroup/DependsOnGroupsTest.java   |   32 -
 test/src/test/dependsongroup/FirstSampleTest.java  |   19 -
 test/src/test/dependsongroup/SecondSampleTest.java |   18 -
 test/src/test/dependsongroup/TestFixture1.java     |   11 -
 test/src/test/dependsongroup/TestFixture2.java     |   15 -
 test/src/test/dependsongroup/ZeroSampleTest.java   |   19 -
 test/src/test/dependsongroup/suite.xml             |   15 -
 test/src/test/distributed/DistributedTest.java     |  171 --
 test/src/test/distributed/Test1.java               |   15 -
 test/src/test/distributed/Test2.java               |   14 -
 .../expectedexceptions/ExpectedExceptionsTest.java |   27 -
 .../ParametersExceptionTest.java                   |   31 -
 .../test/expectedexceptions/SampleExceptions.java  |   45 -
 .../test/expectedexceptions/SampleExceptions2.java |   46 -
 .../WrappedExpectedException.java                  |   13 -
 test/src/test/factory/Factory2Test.java            |   23 -
 test/src/test/factory/FactoryBase.java             |   13 -
 test/src/test/factory/FactoryBaseSampleTest.java   |    9 -
 test/src/test/factory/FactoryChild.java            |    5 -
 .../src/test/factory/FactoryFailureSampleTest.java |   16 -
 test/src/test/factory/FactoryFailureTest.java      |   25 -
 test/src/test/factory/FactoryInSeparateClass.java  |   45 -
 test/src/test/factory/FactoryInSuperClassTest.java |   21 -
 .../test/factory/FactoryInterleavingSampleA.java   |   44 -
 .../factory/FactoryInterleavingSampleFactory.java  |   19 -
 test/src/test/factory/FactoryInterleavingTest.java |   33 -
 test/src/test/factory/FactoryOrderMainTest.java    |   27 -
 test/src/test/factory/FactoryOrderSampleTest.java  |   44 -
 test/src/test/factory/FactoryOrderTest.java        |   26 -
 test/src/test/factory/FactoryTest.java             |   35 -
 test/src/test/factory/FactoryTest2.java            |   44 -
 test/src/test/factory/FactoryWithDataProvider.java |   33 -
 .../test/factory/FactoryWithDataProviderTest.java  |   29 -
 .../test/factory/FactoryWithInstanceInfoTest.java  |   39 -
 .../test/factory/FactoryWithInstanceInfoTest2.java |   39 -
 test/src/test/factory/MyTest.java                  |   30 -
 test/src/test/factory/NestedFactoryTest.java       |   47 -
 test/src/test/factory/NestedStaticFactoryTest.java |   47 -
 test/src/test/factory/OddTest.java                 |   21 -
 test/src/test/factory/Sample2.java                 |   85 -
 test/src/test/factory/TestClassAnnotationTest.java |   44 -
 test/src/test/factory/VerifyFactoryTest.java       |   20 -
 .../factory/VerifyFactoryWithInstanceInfoTest.java |   20 -
 .../factory/classconf/XClassOrderWithFactory.java  |   37 -
 .../classconf/XClassOrderWithFactoryTest.java      |   24 -
 .../failedreporter/FailedReporter2SampleTest.java  |   20 -
 .../failedreporter/FailedReporterSampleTest.java   |   23 -
 .../test/failedreporter/FailedReporterTest.java    |   58 -
 test/src/test/failures/Base0.java                  |   12 -
 test/src/test/failures/Base1.java                  |   15 -
 test/src/test/failures/BaseFailuresTest.java       |   87 -
 test/src/test/failures/Child.java                  |   16 -
 test/src/test/failures/DependentTest.java          |   16 -
 test/src/test/failures/FailuresTest.java           |   69 -
 test/src/test/groupinvocation/DummyTest.java       |   48 -
 test/src/test/groupinvocation/DummyTest2.java      |   23 -
 .../groupinvocation/FailingBeforeGroupMethod.java  |   14 -
 .../test/groupinvocation/GroupConfiguration.java   |   20 -
 test/src/test/groupinvocation/testng.xml           |   33 -
 test/src/test/hook/HookFailureTest.java            |   35 -
 test/src/test/hook/HookSuccessTest.java            |   43 -
 test/src/test/inheritance/BaseClassScope.java      |    7 -
 test/src/test/inheritance/Child_1.java             |   26 -
 test/src/test/inheritance/ClassScopeTest.java      |   18 -
 test/src/test/inheritance/DChild_2.java            |   40 -
 test/src/test/inheritance/VerifyTest.java          |   33 -
 test/src/test/inheritance/ZBase_0.java             |   40 -
 .../InjectAfterMethodWithTestResultSampleTest.java |   47 -
 .../InjectAfterMethodWithTestResultTest.java       |   18 -
 ...oreAndAfterMethodsWithTestResultSampleTest.java |   53 -
 test/src/test/inject/InjectBeforeMethodTest.java   |   38 -
 test/src/test/inject/InjectDataProviderTest.java   |   59 -
 test/src/test/inject/InjectTestContextTest.java    |   27 -
 test/src/test/inject/InjectTestResultTest.java     |   18 -
 test/src/test/inject/Sample.java                   |   18 -
 test/src/test/interleavedorder/BaseTestClass.java  |   25 -
 .../InterleavedInvocationTest.java                 |   52 -
 test/src/test/interleavedorder/TestChild1.java     |   25 -
 test/src/test/interleavedorder/TestChild2.java     |   26 -
 test/src/test/interleavedorder/testng-order.xml    |   11 -
 test/src/test/invocationcount/Base.java            |   33 -
 .../src/test/invocationcount/DataProviderBase.java |   20 -
 .../DataProviderFalseFalseTest.java                |   16 -
 .../invocationcount/DataProviderFalseTrueTest.java |   17 -
 .../invocationcount/DataProviderTrueFalseTest.java |   16 -
 .../invocationcount/DataProviderTrueTrueTest.java  |   17 -
 .../invocationcount/FailedInvocationCount.java     |   21 -
 .../invocationcount/FailedInvocationCount2.java    |   30 -
 .../invocationcount/FailedInvocationCountTest.java |   50 -
 .../test/invocationcount/FirstAndLastTimeTest.java |   85 -
 test/src/test/invocationcount/InvocationBase.java  |    9 -
 .../InvocationCountFalseFalseTest.java             |   16 -
 .../InvocationCountFalseTrueTest.java              |   16 -
 .../InvocationCountTrueFalseTest.java              |   16 -
 .../InvocationCountTrueTrueTest.java               |   16 -
 test/src/test/invokedmethodlistener/Base.java      |   50 -
 test/src/test/invokedmethodlistener/Failure.java   |    8 -
 .../InvokedMethodListenerTest.java                 |   31 -
 .../src/test/invokedmethodlistener/MyListener.java |   28 -
 test/src/test/invokedmethodlistener/Success.java   |    8 -
 test/src/test/jar/A.java                           |    9 -
 test/src/test/jar/B.java                           |    9 -
 test/src/test/jar/JarTest.java                     |   68 -
 test/src/test/jar/build                            |    9 -
 test/src/test/jar/test/jar/A.class                 |  Bin 300 -> 0 bytes
 test/src/test/jar/test/jar/B.class                 |  Bin 300 -> 0 bytes
 test/src/test/jar/testng-override.xml              |   13 -
 test/src/test/jar/testng.xml                       |   12 -
 test/src/test/jar/withouttestngxml.jar             |  Bin 1215 -> 0 bytes
 test/src/test/jar/withtestngxml.jar                |  Bin 1474 -> 0 bytes
 test/src/test/jarpackages/JarPackagesTest.java     |   49 -
 test/src/test/jarpackages/testng.xml               |   10 -
 test/src/test/jarpackages/tests/A.java             |    9 -
 test/src/test/jarpackages/tests/B.java             |    9 -
 test/src/test/junit/BaseTest.java                  |   41 -
 test/src/test/junit/JUnitConstructorTest.java      |   52 -
 test/src/test/junit/JUnitEmptyTest.java            |   17 -
 test/src/test/junit/MainSuite.java                 |   17 -
 test/src/test/junit/SetNameTest.java               |   36 -
 test/src/test/junit/SetUpExceptionSampleTest.java  |   19 -
 test/src/test/junit/SetUpExceptionTest.java        |   24 -
 test/src/test/junit/Suite1.java                    |   17 -
 test/src/test/junit/Suite2.java                    |   14 -
 test/src/test/junit/Suite3.java                    |   12 -
 test/src/test/junit/Suite4.java                    |   13 -
 test/src/test/junit/TestAa.java                    |   10 -
 test/src/test/junit/TestAb.java                    |   10 -
 test/src/test/junit/TestAc.java                    |   10 -
 test/src/test/junit/TestAd.java                    |   10 -
 test/src/test/junit/TestAe.java                    |   10 -
 test/src/test/junit/TestAf.java                    |   10 -
 test/src/test/junit/testsetup/ATest.java           |   13 -
 test/src/test/junit/testsetup/Data.java            |    6 -
 test/src/test/junit/testsetup/LayerATestSuite.java |   17 -
 .../src/test/junit/testsetup/LoggingTestSuite.java |   26 -
 test/src/test/junit/testsetup/SmokeSuite.java      |   31 -
 .../junit/testsetup/TestSuiteContainerWrapper.java |   36 -
 test/src/test/justin/BaseTestCase.java             |   53 -
 test/src/test/justin/MonthTest.java                |   27 -
 .../test/mannotation/MAnnotation2SampleTest.java   |  129 --
 .../test/mannotation/MAnnotationSampleTest.java    |  262 ---
 test/src/test/mannotation/MBase.java               |   11 -
 test/src/test/mannotation/MBaseCapture.java        |   18 -
 test/src/test/mannotation/MChildCaptureTest.java   |   11 -
 test/src/test/mannotation/MTest1.java              |   84 -
 test/src/test/mannotation/MTest2.java              |    8 -
 test/src/test/mannotation/MTest3.java              |   37 -
 .../FastTestsFirstInterceptor.java                 |   34 -
 test/src/test/methodinterceptors/FooTest.java      |   15 -
 .../methodinterceptors/MethodInterceptorTest.java  |  118 --
 .../methodinterceptors/NullMethodInterceptor.java  |   14 -
 test/src/test/methods/SampleMethod1.java           |   52 -
 test/src/test/methods/VerifyMethod1.java           |   24 -
 .../methodselectors/AllTestsMethodSelector.java    |   27 -
 test/src/test/methodselectors/BeanShellTest.java   |   26 -
 .../test/methodselectors/MethodSelectorTest.java   |   85 -
 test/src/test/methodselectors/NoTest.java          |    4 -
 test/src/test/methodselectors/NoTestSelector.java  |   24 -
 .../test/methodselectors/PrioritySampleTest.java   |   21 -
 test/src/test/methodselectors/PriorityTest.java    |   55 -
 test/src/test/methodselectors/SampleTest.java      |   28 -
 .../test/methodselectors/Test2MethodSelector.java  |   29 -
 test/src/test/morten/SampleTest.java               |   37 -
 test/src/test/morten/SampleTestFactory.java        |   13 -
 test/src/test/multiple/Test1.java                  |   28 -
 test/src/test/multiple/TestMultiple.java           |   25 -
 test/src/test/multiple/ThisFactory.java            |   25 -
 test/src/test/nested/GarfTest.java                 |   17 -
 test/src/test/nested/foo/AccountTypeEnum.java      |    7 -
 .../objectfactory/BadMethodFactoryFactory.java     |   17 -
 .../CombinedTestAndObjectFactorySample.java        |   36 -
 .../CombinedTestAndObjectFactoryTest.java          |   24 -
 .../objectfactory/ContextAwareFactoryFactory.java  |   20 -
 test/src/test/objectfactory/CustomFactoryTest.java |   66 -
 .../test/objectfactory/LoggingObjectFactory.java   |   21 -
 test/src/test/objectfactory/MyFactoryFactory.java  |   17 -
 test/src/test/objectfactory/Simple.java            |   16 -
 test/src/test/parameters/BeforeSampleTest.java     |   27 -
 test/src/test/parameters/ParameterSample.java      |   52 -
 test/src/test/parameters/ParameterTest.java        |   48 -
 test/src/test/parameters/SuiteSampleTest.java      |   17 -
 test/src/test/pholser/Captor.java                  |   33 -
 test/src/test/pholser/Demo.java                    |   61 -
 test/src/test/pholser/Saboteur.java                |   38 -
 test/src/test/pkg/PackageTest.java                 |  103 -
 test/src/test/pkg2/Test1.java                      |   17 -
 test/src/test/pkg2/Test2.java                      |   13 -
 test/src/test/pkg2/Test3.java                      |   13 -
 test/src/test/priority/BaseSample.java             |   48 -
 test/src/test/priority/PriorityTest.java           |   32 -
 test/src/test/priority/WithPrioritySampleTest.java |   17 -
 .../test/priority/WithoutPrioritySampleTest.java   |   16 -
 test/src/test/privatemethod/PrivateMethodTest.java |   24 -
 .../src/test/regression/BeforeTestFailingTest.java |   22 -
 test/src/test/regression/MyTestngTest.java         |   17 -
 test/src/test/regression/MyTestngTest2.java        |   21 -
 test/src/test/regression/groupsordering/A.java     |   12 -
 test/src/test/regression/groupsordering/B.java     |   12 -
 test/src/test/regression/groupsordering/Base.java  |   28 -
 test/src/test/regression/groupsordering/testng.xml |   21 -
 test/src/test/reports/A.java                       |   10 -
 test/src/test/reports/B.java                       |   10 -
 test/src/test/reports/EmailableReportDriver.java   |   38 -
 test/src/test/reports/ReportTest.java              |  136 --
 test/src/test/reports/ReporterSampleTest.java      |   30 -
 test/src/test/retryAnalyzer/RetryAnalyzerTest.java |   83 -
 test/src/test/sample/AfterClassCalledAtEnd.java    |   50 -
 test/src/test/sample/AllJUnitTests.java            |   19 -
 .../src/test/sample/BaseAfterClassCalledAtEnd.java |   12 -
 test/src/test/sample/BaseSample1.java              |   16 -
 test/src/test/sample/BaseSampleInheritance.java    |   50 -
 test/src/test/sample/Basic1.java                   |   30 -
 test/src/test/sample/Basic2.java                   |   34 -
 test/src/test/sample/ConverterSample3.java         |   95 -
 test/src/test/sample/InvocationCountTest.java      |   75 -
 test/src/test/sample/JUnitSample1.java             |   52 -
 test/src/test/sample/JUnitSample2.java             |   32 -
 test/src/test/sample/JUnitSample3.java             |   28 -
 test/src/test/sample/PartialGroupTest.java         |   45 -
 test/src/test/sample/PartialGroupVerification.java |   18 -
 test/src/test/sample/README.txt                    |    2 -
 test/src/test/sample/Sample1.java                  |   76 -
 test/src/test/sample/Sample2.java                  |   30 -
 test/src/test/sample/Scope.java                    |   23 -
 test/src/test/sample/SetUpWithParameterTest.java   |   21 -
 .../test/simple/IncludedExcludedSampleTest.java    |   50 -
 test/src/test/simple/IncludedExcludedTest.java     |   92 -
 test/src/test/simple/SimpleTest.java               |   15 -
 .../skipex/ConfigurationSkippedExceptionTest.java  |   22 -
 test/src/test/skipex/SkippedExceptionTest.java     |   49 -
 test/src/test/skipex/TestSkippedExceptionTest.java |   21 -
 test/src/test/superclass/Base1.java                |   27 -
 test/src/test/superclass/Base2.java                |   28 -
 test/src/test/superclass/BaseSampleTest3.java      |   11 -
 test/src/test/superclass/Child1Test.java           |   24 -
 test/src/test/superclass/Child2Test.java           |   24 -
 test/src/test/superclass/ChildSampleTest3.java     |   16 -
 test/src/test/superclass/MainTest.java             |   36 -
 test/src/test/superclass/Test3.java                |   23 -
 test/src/test/testng106/FailingSuiteFixture.java   |   24 -
 test/src/test/testng106/Test1.java                 |   16 -
 test/src/test/testng106/Test2.java                 |   21 -
 test/src/test/testng106/testng-106.xml             |   25 -
 .../SkippedTestWithExpectedException.java          |   27 -
 test/src/test/testng195/AfterMethodSampleTest.java |   28 -
 test/src/test/testng195/AfterMethodTest.java       |   17 -
 test/src/test/testng249/B.java                     |   10 -
 test/src/test/testng249/Base.java                  |    9 -
 test/src/test/testng249/VerifyTest.java            |   40 -
 test/src/test/testng285/BugBase.java               |   26 -
 test/src/test/testng285/Derived.java               |   16 -
 test/src/test/testng285/TestNG285Test.java         |   21 -
 test/src/test/testng317/ClassA.java                |   52 -
 test/src/test/testng317/ClassB.java                |   39 -
 test/src/test/testng317/VerifyTest.java            |   28 -
 test/src/test/testng37/NullParameterTest.java      |   18 -
 test/src/test/testng37/testng-37.xml               |   10 -
 test/src/test/testng56/ParallelTest.java           |   46 -
 test/src/test/testng56/testng-56.xml               |    8 -
 test/src/test/testng59/Test1.java                  |   23 -
 test/src/test/testng59/Test2.java                  |   23 -
 test/src/test/testng59/testng-59.xml               |   17 -
 test/src/test/testng93/SingleTestTest.java         |   25 -
 test/src/test/testng93/testng-93.xml               |   17 -
 test/src/test/thread/B.java                        |   25 -
 test/src/test/thread/BaseSequentialSample.java     |   26 -
 .../DataProviderThreadPoolSizeSampleTest.java      |   71 -
 .../thread/DataProviderThreadPoolSizeTest.java     |   35 -
 test/src/test/thread/FactorySampleTest.java        |   18 -
 test/src/test/thread/FactoryTest.java              |   61 -
 test/src/test/thread/Helper.java                   |   22 -
 .../thread/MultiThreadedDependentSampleTest.java   |  149 --
 .../test/thread/MultiThreadedDependentTest.java    |   81 -
 test/src/test/thread/ParallelTestTest.java         |   83 -
 test/src/test/thread/SequentialSample2Test.java    |   23 -
 test/src/test/thread/SequentialSample3Test.java    |   23 -
 test/src/test/thread/SequentialSampleTest.java     |   23 -
 test/src/test/thread/SequentialTest.java           |   76 -
 test/src/test/thread/SuiteThreadCountTest.java     |   34 -
 test/src/test/thread/Test1Test.java                |   20 -
 test/src/test/thread/Test2Test.java                |   20 -
 test/src/test/thread/TestThreadCountTest.java      |   39 -
 test/src/test/thread/ThreadPoolSizeTest.java       |   38 -
 test/src/test/thread/testng.xml                    |   13 -
 .../test/timeout/InvocationTimeOutSampleTest.java  |   24 -
 test/src/test/timeout/TestTimeOutSampleTest.java   |   16 -
 test/src/test/timeout/TimeOutFromXmlTest.java      |   97 -
 test/src/test/timeout/TimeOutSample2Test.java      |   19 -
 test/src/test/timeout/TimeOutSampleTest.java       |   29 -
 test/src/test/timeout/TimeOutTest.java             |   80 -
 test/src/test/tmp/A.java                           |  111 -
 test/src/test/tmp/AnnotationTransformer.java       |   56 -
 test/src/test/tmp/AssertEqualsTest.java            |   69 -
 test/src/test/tmp/B.java                           |   20 -
 test/src/test/tmp/Base.java                        |   10 -
 test/src/test/tmp/BeforeGroupTest.java             |   17 -
 test/src/test/tmp/C.java                           |   22 -
 test/src/test/tmp/ChildTest.java                   |   29 -
 test/src/test/tmp/ConcreteTest.java                |   21 -
 test/src/test/tmp/DataDrivenTest.java              |   41 -
 test/src/test/tmp/ExponentTest.java                |   41 -
 test/src/test/tmp/Fixturable.java                  |   14 -
 test/src/test/tmp/IgnoreUntil.java                 |   18 -
 test/src/test/tmp/ParamTest.java                   |   28 -
 test/src/test/tmp/ParentTest.java                  |   29 -
 test/src/test/tmp/RegisterCommandTest.java         |   24 -
 test/src/test/tmp/RetryAnalyzer.java               |   13 -
 test/src/test/tmp/StaticInitializerTest.java       |   19 -
 test/src/test/tmp/Sub.java                         |   31 -
 test/src/test/tmp/Test0.java                       |   23 -
 test/src/test/tmp/Test1.java                       |   12 -
 test/src/test/tmp/TestA.java                       |   37 -
 test/src/test/tmp/TestB.java                       |   37 -
 test/src/test/tmp/TestCaseFactory.java             |   20 -
 test/src/test/tmp/TestFixture.java                 |   26 -
 test/src/test/tmp/TestNGBug.java                   |   30 -
 test/src/test/tmp/Test_TestListenerAppender.java   |   18 -
 test/src/test/tmp/TimeBombTest.java                |   36 -
 test/src/test/tmp/Tmp.java                         |   25 -
 test/src/test/tmp/Tn.java                          |   24 -
 test/src/test/tmp/p1/ContainerTest.java            |   19 -
 test/src/test/tmp/p2/ServiceTest.java              |   12 -
 test/src/test/tmp/verify/Verify.java               |    9 -
 test/src/test/tmp/verify/VerifyInterceptor.java    |   75 -
 test/src/test/tmp/verify/VerifyTest.java           |   22 -
 test/src/test/triangle/Base.java                   |   31 -
 test/src/test/triangle/CheckCount.java             |   41 -
 test/src/test/triangle/Child1.java                 |   22 -
 test/src/test/triangle/Child2.java                 |   16 -
 test/src/test/triangle/CountCalls.java             |   18 -
 test/src/test/uniquesuite/BaseAfter.java           |   22 -
 test/src/test/uniquesuite/BaseBefore.java          |   23 -
 test/src/test/uniquesuite/TestAfter.java           |   31 -
 test/src/test/uniquesuite/TestAfter1.java          |   10 -
 test/src/test/uniquesuite/TestAfter2.java          |   10 -
 test/src/test/uniquesuite/TestBefore1.java         |   12 -
 test/src/test/uniquesuite/TestBefore2.java         |   12 -
 test/src/test/v6/A.java                            |   47 -
 test/src/test/v6/B.java                            |   35 -
 test/src/test/v6/C.java                            |   26 -
 test/src/test/verify/Verifier.java                 |   12 -
 test/src/test/verify/Verify.java                   |   12 -
 test/src/test/verify/VerifyMethodInterceptor.java  |   41 -
 .../test/verify/VerifyNoListenersSampleTest.java   |   33 -
 test/src/test/verify/VerifySampleTest.java         |   39 -
 test/src/test/verify/VerifyTest.java               |   30 -
 test/src/test/xml/XmlVerifyTest.java               |   21 -
 test/src/testhelper/OutputDirectoryPatch.java      |   47 -
 test/testng-annconv.xml                            |   14 -
 test/testng-single.xml                             |   59 -
 test/testng-single2.xml                            |   23 -
 test/testng.xml                                    |  568 -----
 test/testng_convert.xml                            |   10 -
 testng-1.0.dtd.html                                |    8 -
 testng-1.0.dtd.php                                 |   46 -
 testng.iml                                         |   71 -
 testng.ipr                                         |  330 ---
 update-beust.com                                   |   13 -
 upload-beta                                        |    1 -
 www/index.html                                     |    8 -
 1011 files changed, 72716 deletions(-)

diff --git a/ANNOUNCEMENT.txt b/ANNOUNCEMENT.txt
deleted file mode 100644
index abb2222..0000000
--- a/ANNOUNCEMENT.txt
+++ /dev/null
@@ -1,110 +0,0 @@
-javalobby.org
-testdriven.com
-opensourcetesting.org
-http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&f=68
-java.net
-comp.lang.java.programmer
-
-==========
-
-The TestNG team is happy to announce the immediate availability of TestNG 4.5. 
-
-This release contains a lot of bug fixes and a few new features.  It also 
-includes the first phase of Distributed TestNG, a work in progress designed 
-to transparently distribute tests on many machines and collect their results.
-
-Announcement:
-
-http://beust.com/weblog/archives/000361.html
-
-Details on Distributed TestNG:  
-
-http://beust.com/weblog/archives/000362.html
-
-
-==========
-
-The TestNG team is happy to announce the immediate availability of TestNG 4.0, with a lot of improvements and new features.
-
-The announcement, along with a few examples and summary of the new features, can be found here:
-
-    http://tinyurl.com/dxlbh
-
--- 
-C�dric
-http://testng.org
-
-================
-
-Announcing TestNG 2.3
-
-The TestNG team is happy to announce the availability of TestNG 2.3.
-
-The version is available at http://beust.com/testng as well as the new documentation, which has been considerably improved (highlighted code snippets, detailed DTD, ant task and description of all the new features).
-
-What's new:
-
-    * beforeSuite, afterSuite, beforeTest, afterTest
-    * Revamped ant task with haltonfailure and other helpful flags
-    * Better stack traces and improved level control for verbosity
-    * Better syntax for including and excluding methods in testng.xml
-    * Test classes can be invoked on the command line
-    * ... and many bug fixes.
-
-For Eclipse users, a new version (1.1.1) of the Eclipse plug-in that includes this new TestNG version is available on the remote update site or for direct download.
-
-Also, TestNG has joined OpenSymphony (big thanks to Patrick and Hani for setting this up).  As a consequence of this move, there is now a TestNG users forum as well as a Wiki and JIRA for issue tracking.
-
-The users mailing-list has been moved to Google Groups and is connected to the forum, so you only need to subscribe to one.
-
-Try it and let us know what you think!
-
-===
-
-I am happy to announce the availability of TestNG 2.1 (http://beust.com/testng).  
-
-TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use, such as:
-
-    * JSR 175 Annotations (JDK 1.4 is also supported with JavaDoc annotations).
-    * Flexible test configuration.
-    * Default JDK functions for runtime and logging (no dependencies).
-    * Powerful execution model (no more TestSuite).
-    * Supports dependent methods.
-
-Some of the new features in this version include:
-
-    * invocationCount and successPercentage, which I described in a previous entry (http://beust.com/weblog/archives/000236.html), and which allow you to invoke a test method a certain number of times while allowing some of these invocations to fail.  If the number of failures is under a certain threshold, the test is still considered a success.
-       
-    * timeOut is now applicable to all test methods.  Whether you are running your tests in parallel or not, you can specify a time-out for your test method and if it fails to complete within the given amount of time, TestNG will mark it as a failure.
-       
-    * dependsOnMethods was the most requested feature.  You can now specify dependencies on a method-based basis (no need to specify a group if your dependency graph is simple).  You can even mix dependsOnMethods and dependsOnGroups.
-       
-    * ... and of course, numerous bug fixes and other additions.
-
-A special thanks to Alexandru Popescu who has pulled all-nighters to make this release happen!
-
-We have an exciting list of new features lined up for our next version, among which a plug-in API, but in the meantime, enjoy TestNG 2.1.
-
-======
-
-Announcing TestNG for Eclipse
-
-The TestNG team is happy to announce the first release of the TestNG plug-in for Eclipse.
-
-http://beust.com/testng
-
-This first release covers the basic functionalities of TestNG, among which:
-
-    * Multiple ways to launch tests (from a method, from a class, groups or an entire suite).
-    * Convenient report view that lets you directly jump to failed tests.
-
-A more detailed overview can be found here:
-
-http://beust.com/weblog/archives/000261.html
-
-and the documentation and snapshots here:
-
-http://beust.com/testng/main.html#eclipse
-
--- 
-Cedric
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index dcfba1d..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,719 +0,0 @@
-Current:
-
-Removed: Javadoc annotation support
-
-Added: @Listeners
-Added: IAttributes#getAttributeNames and IAttributes#removeAttribute
-Added: testng-results.xml now includes test duration in the <suite> tag (Cosmin Marginean)
-Added: Injection now works for data providers
-Added: TestNG#setObjectFactory(IObjectFactory)
-Added: Priorities: @Test(priority = -1)
-Added: New attribute invocation-numbers in <include>
-Added: testng-failed.xml only contains the data provider invocations that failed
-Added: IInvokedMethodListener2 to have access to ITestContext in listeners (Karthik Krishnan)
-Fixed: @Before methods run from factories were not properly interleaved
-Fixed: The TextReporter reports skipped tests as PASSED (Ankur Agrawal)
-
-Eclipse:
-
-Added: New file wizard: can now create a class with annotations, including @DataProvider
-Added: You can now select multiple XML suites to be run in the launch dialog
-Fixed: @Test(groups = <constant>) was taking name of the constant instead of its value.
-Fixed: http://jira.codehaus.org/browse/GRECLIPSE-476 NPE with Groovy Tests (Andrew Eisenberg)
-Fixed: The custom XML file is now created in the temp directory instead of inside the project
-Fixed: In the launch dialog, now display an error if trying to pick groups when no project is selected
-Fixed: Was not setting the parallel attribute correctly on the temporary XML file
-
-===========================================================================
-5.11
-
-Added: Dependent methods can now run in their own thread
-Added: dataProviderThreadCount can be set from the command line and from ant (Adrian Grealish)
-Added: ITestAnnotation#setDataProvider
-Added: Assert#assertEquals() methods for Sets and Maps
-Fixed: The text reporter was no longer reporting stack traces for verbose >= 2
-Fixed: dataProviderClass was not respecting inheritance (like most attributes still)
-Fixed: @BeforeSuite/@AfterSuite would run multiple times when used in a @Factory
-Fixed: packages=".*" wasn't working properly (sandopolus)
-Fixed: TestResult#getName now returns the description instead of the method
-Fixed: @DataProvider and dependent methods were not skipping correctly (Francois Reynaud)
-Fixed: TESTNG-347 suite with parallel="tests" and test with parallel="classes" doesn't work correctly (Rob Allen)
-Fixed: TESTNG-67: @Configuration/@Factory methods in base class being ignored
-Fixed: Inner test classes were not excluded properly (Carsten Gubernator)
-Fixed: threadPoolSize without invocationCount was causing reporters not to be invoked
-Fixed: A @Factory throwing an exception did not cause any error
-Fixed: <classfilesetref> was not working properly in the ant task (Ed Randall)
-Fixed: @BeforeClass methods were not running in parallel (Aidan Short)
-Fixed: Test class with @ObjectFactory doesn't get instantiated via the factory
-Fixed: Allow IObjectFactory to load from non-standard classloader (for PowerMock support)
-
-Eclipse 5.11.0.19:
-Added: New "parallel" preference setting (Windows / Preferences / TestNG)
-Fixed: IIinvokedMethodListeners were not invoked
-
-===========================================================================
-5.10
-
-Added: The output in the testng-results.xml is now sorted by the starting timestamp (Daniel Rudman)
-Added: Better display of the test name and method description in the default and Emailable report
-Added: If both -testjar and an XML file are provided on the command line, the latter will be used
-Added: @Before and @After methods can be injected with the current XmlTest
-Added: Methods that time out now display the stack trace showing where the time out occurred
-Added: ITestResult#getAttribute and ITestResult#setAttribute
-Added: @After methods can now be injected with an ITestResult
-Added: @BeforeMethod and @AfterMethod methods can now be injected an ITestResult
-Added: ISuite#getAttribute and ISuite#setAttribute to share data within a suite
-Added: @Test(expectedExceptionsMessageRegExp = ".*foo.*")
-Added: @DataProvider(parallel=true)
-Fixed: @Test(dataProvider) was not working at the class level
-Fixed: Display a better error message if the wrong exception is thrown with an expectedExceptions
-Fixed: Classes created by factories were not run in the order they were created
-Fixed: Dependent methods are now run closer to methods within their class
-Fixed: xmlFileSet in ant was not working correctly (Sean Shou)
-Fixed: Various oversights in the DTD (Will McQueen)
-Fixed: XMLUtils was not escaping XML attribute values
-Fixed: TESTNG-317: Sequence order mis-calculation: testing using suite in sequence for classes and same method names creates non-sequential order
-Fixed: Test names (classes that implement org.testng.ITest) now appear more prominently in the HTML reports
-Fixed: expectedExceptions=RuntimeException.class was not failing when no exception was throw
-Fixed: TESTNG-291: Exceptions thrown by Iterable DataProviders are not caught, no failed test reported (Roberto Tyley)
-Fixed: TESTNG-301: Need to include parameters in testNG report for test created by @Factory
-Fixed: testng-failed.xml now includes skipped tests
-Fixed: TestNG couldn't find Groovy files (Haw-Bin)
-
-Eclipse
-
-Fixed: TESTNG-313: Provide extension point to contribute test and report listeners (Erik Putrycz)
-Fixed: Quick fixes no longer introduce deprecated annotations (Greg Turnquist)
-
-===========================================================================
-5.9
-
-Added: New ant task boolean flag: delegateCommandSystemProperties (Justin) 
-Added: skipfailedinvocations under <suite> in testng-1.0.dtd (Gael Marziou / Stevo Slavic) 
-Added: -testrunfactory on the command line and in the ant task (Vitalyi Pamajonkov)
-Added: TESTNG-298: parallel="classes", which allows entire classes to be run in the same thread
-Added: @BeforeMethod can now declare Object[] as a parameter, which will be filled by the parameters of the test method
-Added: IAnnotationTransformer2
-Added: @Test(invocationTimeOut), which lets you set a time out for the total time taken by invocationCount
-Added: IInvokedMethodListener
-Added: -testjar supports jar file with no testng.xml file
-Fixed: IInvokedMethodListener wasn't properly recognized from the command line (Leonardo Rafaeli)
-Fixed: TESTNG-309 Illegal default value for attribute in DTD file
-Fixed: TESTNG-192: JUnit XML output includes wrong tests (Aleksandar Borojevic)
-Fixed: Set a generated suite to default to non-parallel (Mark Derricutt)
-Fixed: -testJar command line parsing bug
-Fixed: testng-failed.xml didn't include the listeners
-Fixed: annotation transformers were not run when specified in testng.xml
-Fixed: TESTNG-192: JUnit XML output includes wrong tests (Borojevic)
-Fixed: @Parameters was not working correctly on @BeforeMethods with @DataProvider used on @Test methods
-Fixed: testng-failed.xml was sometimes incorrectly generated (Borojevic)
-Fixed: TestNG-228: Assert.assertEqualsNoOrder
-Fixed: TestNG-229: Assert.assertEquals does not behave properly when arguments are sets
-Fixed: TESTNG-36: assertEquals(Collection actual, Collection expected, String message) may have bug
-Fixed: TESTNG-296: Malformed jar URLs breaking -testJar
-Fixed: TESTNG-297: TestNG seemingly never stops running while building failed test suite (Gregg Yost)
-Fixed: TESTNG-285: @Test(sequential=true) works incorrectly for classes with inheritance
-Fixed: TESTNG-254: XMLSuite toXML() ignores listeners
-Fixed: TESTNG-276: Thread safety problem in Reporter class
-Fixed: TESTNG-277: Make Reporter.getCurrentTestResult() public
-Fixed: Potential NPE in XmlTest#getVerbose (Ryan Morgan)
-Fixed: EmailableReporter only displayed the first group for each test method
-Fixed: time-outs were not working in <test> and <suite>
-Fixed: @BeforeTest failing in a base class would not cause subsequent test methods to be skipped
-Fixed: TESTNG-195: @AfterMethod has no way of knowing if the current test failed
-Fixed: TESTNG-249: Overridden test methods were shadowing each other if specified with <include>
-Fixed: DataProviders from @Factory-created tests were all invoked from the same instance
-Fixed: enabled was not working on configuration methods
-Fixed: IIinvokedMethodListener was not correctly added in TestNG
-Fixed: NPE in XmlSuite#toXml
-Fixed: TESTNG-231: NullPointerException thrown converting a suite to XML (Mark)
-
-Doc:
-Added: 5.20: IInvokedMethodListener
-Added: -testjar
-
-===========================================================================
-5.8
-
-Fixed: TestNG-220: Ignore class definition/loader issues when scanning classpath for implicit classes
-Fixed: TestNG-224: Fix for relative suite filenames in XML file
-Added: TestNG-213: @Optional on a method parameter to allow optional @Parameters
-Fixed: TestNG-214: SkipException and TimeBombSkipException should accept nested exceptions
-Fixed: TestNG-211: new Parser(inputStream) doesn't work
-Added: Methods that form a cycle are now shown when the cycle is detected
-Added: Support for <listeners> in testng.xml
-Added: IMethodInterceptor
-Added: @TestInstance on a data provider method parameter
-Fixed: @AfterMethod(lastTimeOnly) didn't work properly with data providers
-Added: antlib.xml to allow autodiscovery of Ant task definition
-Fixed: name attribute on <test> is required
-
-Doc:
-Added: Method Interceptor
-Added: @Optional
-Added: Doc for IMethodInterceptor (5.16) and TestNG listeners (5.18)
-Added: 5.19: Dependency injection
-
-===========================================================================
-5.7
-
-Added: @BeforeMethod(firstTimeOnly) and @AfterMethod(lastTimeOnly)
-Added: @BeforeMethods can now take a Method and ITestContext parameters (like @DataProvider)
-Fixed: logging about abstract classes moved to level 5
-Added: if @Parameter is missing from testng.xml then it is read from the System properties
-Fixed: Don't run a @DataProvider method as a test when a class-level @Test is present
-Added: Attribute @Test#skipFailedInvocations
-Fixed: TESTNG-169 Error message: <method> is depending on nonexistent method null ("null" is uninformative)
-Fixed: -listener takes comma-separated classes
-Added: RetryAnalyzer (experimental) (Jeremie)
-
-===========================================================================
-5.6
-
-Added: SkipException/TimeBombedSkipException for manual skipping
-Added: <tests> can now be disabled at xml level using <test enabled="false">
-Added: Suite files that only contain other suites do not get reported
-Fixed: @BeforeClass methods would incorrectly report cyclic graphs
-Added: get/setAttribute to ITestContext
-Added: plugging in factory objects to handle the actual instantiation of tests
-Added: dataProvider to @Factory
-Added: ISuite now gives access to the current XmlSuite
-Fixed: TESTNG-139 dependsOnMethods gets confused when dependency is "protected"
-Fixed: TESTNG-141 junit attribute set to false in testng-failed.xml when it should be true
-Fixed: TESTNG-142 Exceptions in DataProvider are not reported as failed test
-Added: Improved behavior for @Before/@AfterClass when using @Factory 
-(http://forums.opensymphony.com/thread.jspa?threadID=6594&messageID=122294#122294)
-Added: Support for concurrent execution for invocationCount=1 threadPoolSize>1 and @DataProvider
-(http://forums.opensymphony.com/thread.jspa?threadID=64738&tstart=0)
-Added: New TestNG specific XML report, generated by default in 'xml' subdirectory of test-output
-Added: support in strprotocol for passing the ITest.getTestName() information
-Fixed: TESTNG-152 If DataProvider is not found, the exception message should tell exactly what happened
-
-Eclipse plug-in
-
-Fixed: Bug that made group launch configurations unusable
-Fixed: The plugin doesn't create the correct launch configuration for @Factory
-Fixed: Method based launchers cannot be editted
-Fixed: Plugin hangs while executing test with dataprovider that sends \n, \r messages
-Added: display ITest.getTestName()
-
-IDEA plug-in
-
-Fixed: IDEA 7.0 compatibility
-Fixed: occasional 'illegal arguments exception'
-Fixed: TESTNG-151 Final passing test result is not properly hidden
-Added: Auto-completion for dependsOnMethods
-Added: Highlighting of invalid groups/methods in dependsOn*
-===========================================================================
-5.5
-
-Fixed: @BeforeGroup methods were run twice when in a base class
-Fixed: @BeforeGroup methods were run twice with a @Test at class level
-Fixed: parallel="tests" didn't work as advertised
-Added: Support for thread-count at test level
-Added: Method selectors receive a Context and can stop the chain with setStopped()
-Fixed: XmlMethodSelector was always run first regardless of its priority
-Added: @BeforeGroups/@AfterGroups can live in classes without @Test methods
-Added: DataProvider can now take an ITestContext parameter
-Fixed: Wasn't parsing <selector-class-name> correctly 
-Fixed: Annotation Transformers now work on class-level annotations
-Fixed: Some class-level @Test attributes were not always honored
-Added: Clean separation between @Test invocation events and @Configuration invocation events
-       (see also TESTNG-111)
-Added: Test instances created by @Factory now run in multiple threads in parallel mode
-Fixed: @Before/@AfterGroups invocation order
-Fixed: TESTNG-27: Parameters are not used on <test> level anymore
-Fixed: TESTNG-107 don't create an output directory if "outputDirectory" is null
-Fixed: TESTNG-127 UseDefaultListeners in Ant Task does not work
-Fixed: TESTNG-119 Running TestNG runner with invalid '-sourcedir' on JDK14 JavaDoc annotated test classes won't fail.
-Fixed: TESTNG-113 Dependent methods within the same static inner class are not found
-Fixed: TESTNG-125 TestNG failed for test classes under *.java*.* pakages
-
-Eclipse plug-in
-Fixed: issue with launch configuration
-Fixed: TESTNG-124: setting location of testng reports output
-
-===========================================================================
-5.4
-
-Fixed: Ant task issue with paths containing spaces
-Added: for @BeforeGroups and @AfterGroups specifying the groups() attribute will auto-include the method
-			 into those groups by default (previously you had to also provide the value() attribute).
-Added: the load @Tests (invocationCount + threadPoolSize) are triggered simultaneous
-Fixed: reports are correctly displaying the thread info
-Added: @DataProvider name defaults to method name
-Added: support for remote protocol to pass parameter information
-Fixed: TextReporter logs information about the parameters of the test methods
-Fixed: concurrency issue in JUnitXMLReporter
-Fixed: output of JUnitXMLReporter must be CDATA
-Fixed: XML unsupported annotations/parallel attribute values are reported
-
-Eclipse plug-in
-Fixed: groups with multi-attribute javadoc annotations
-Fixed: consistent behavior for dependsOnMethods
-Fixed: consistent behavior for tests with dependsOnGroups (a warning is emitted)
-Fixed: consistent merge of configuration arguments when an existing launch configuration exists 
-===========================================================================
-5.3
-
-Fixed: use a single instance of bsh.Interpreter
-Added: @Before/@AfterMethod can declare a java.lang.reflect.Method parameter to be informed about the @Test method
-Fixed: super classes must not be listed in testng-failures.xml
-Fixed: parallel attribute must not appear if empty or null in testng-failures.xml
-Fixed: parsing for javadoc annotations is done on request only
-Added: improved multiple suite summary page report
-Added: -target option deprecated in favor of -annotations javadoc|jdk
-Fixed: filesets in the ant task didn't work if the paths have spaces in them
-Fixed: Before/After Suite were behaving wrong in parallel execution
-Added: A generic/extensible RemoteTestNG was added to the core
-Fixed: Before/AfterGroup-s were behaving wrong when using invocationCount, dataProvider and threadPoolSize
-Fixed: improved support for running different annotation type tests in the same suite
-Fixed: testng-failed.xml was generated even if there were no failures/skipps
-Fixed: -usedefaultlisteners was wrongly passed to JVM instead of TestNG options
-Added: Attribute dataProviderClass for @Test and @testng.test
-Fixed: Forgot to account for cases where both invocationCount and DataProviders are present
-Fixed: AfterGroups were invoked out of order with invocationCount and DataProviders
-Fixed: Reporter.getOutput() returned an empty array if a timeOut was specified
-Added: testng.xml now supports <suite-files>
-Added: ant task can receive several listeners
-Fixed: TESTNG-109 Skipped tests with expected exceptions are reported as failures
-Added: ant task can now select the parallel mode for running tests
-Fixed: ant task correctly deals with empty groups and excludedgroups parameters
-Added: ant task can override default suite and test names
-Added: comand line support for setting parallel mode, suite and test names
-
-Eclipse plug-in
-Added: Support for configuring per project usedefaultlisteners
-Added: Contextual drop-down menu on failures tab of the TestNG view to enable running/debugging method failure only
-Added: Suppport for configuring per project TestNG jar usage (project provided one or plugin provided one)
-
-===========================================================================
-5.2
-
-Added: "-usedefaultlisteners true/false" to command line and ant
-Added: EmailableReporter (from Paul Mendelson)
-Added: parallel can now be "methods" or "tests". Boolean version deprecated
-Added: TestNGAntTask now uses the @ syntax to invoke TestNG
-Added: Command line understands @ syntax
-Added: JUnitConverter uses the new syntax
-Added: -groups to JUnitConverter
-Fixed: Throw proper exception when a DataProvider declares parameters
-Added: completely revamped JUnit support (should run all kind of JUnit tests)
-Fixed: TESTNG-40 (Bug in testng-failed.xml generation)
-Fixed: TESTNG-106 (Failed "@BeforeSuite" method just skipps the last test in xml-file)
-Fixed: Success on 0 tests (http://forums.opensymphony.com/thread.jspa?threadID=41213)
-
-Eclipse plug-in
-Added: TESTNG-105 Automaticaly define TESTNG_HOME classpath variable
-
-===========================================================================
-5.1
-
-Added: @Test(sequential = true)
-Fixed: TESTNG-102 (Incorrect ordering of @BeforeMethod calls when a dependency is specified)
-Fixed: TESTNG-101 (HTML output contains nested <P> tags and a missing <tr> tag)
-Added: support for specifying test-only classpath (http://forums.opensymphony.com/thread.jspa?messageID=78048&tstart=0)
-Fixed: TESTNG-93 (method selectors filtering @BeforeMethod)
-Fixed: TESTNG-81 (Assert.assertFalse() displays wrong expected, actual value)
-Fixed: TESTNG-59 (multiple method selectors usage results in no tests run)
-Fixed: TESTNG-56 (invocation of @Before/AfterClass methods in parallel/sequential scenarios)
-Fixed: TESTNG-40 (failures suite does not contain @Before/After Suite/Test methods)
-Fixed: TESTNG-37 (allow passing null parameter value from testng.xml)
-Fixed: TESTNG-7 (display classname when hovering method)
-
-
-Eclipse plug-in
-
-Added: run contextual test classes with parameters from suite definition files
-Added: TESTNG-100 (Show HTML reports after running tests)
-Added: TESTNG-97 (Double click top stack to raise comparison)
-Added: TESTNG-84 (plug-in UI for suite option should support absolute path)
-Added: TESTNG-20 (copy stack trace)
-
-Fixed: TESTNG-72 (display groups with non-array values)
-Fixed: TESTNG-64 (Eclipse plug-in applies added groups to all launch configurations)
-Fixed: TESTNG-28 (Cannot select groups from dependent eclipse projects)
-Fixed: TESTNG-25 (do not display fully qualified method name when running contextual test class)
-
-Improved behavior:
-	TESTNG-98 (temporary files have guaranteed fixed names)
-	TESTNG-95 (Assertion failed comparison trims trailing ">")
-	TESTNG-70 (TestNG prevents eclipse from opening an older CVS version of a java class)
-	display of test hierarchy information (TESTNG-29)
-
-===========================================================================
-
-5.0.1
-
-Eclipse plug-in
-
-Added: Output directory for the tests
-Added: Can now specify listener classes
-
-===========================================================================
-5.0.1
-
-Fixed: reports generated by SuiteHTMLReporter do not work with JDK1.4
-			 
-===========================================================================
-
-5.0
-
-Added: Ant task: support for JVM, workingDir, timeout
-Added: Stack traces can be interactively shown in the HTML reports
-Added: Link to testng.xml in the reports
-Added: New structure for reports, suites go in their individual directory
-Added: @Test(suiteName) and @Test(testName)
-Added: The stack traces in reports do not include TestNG frames (system property testng.exception)
-			 (see: http://groups.google.com/group/testng-dev/browse_thread/thread/9f4d46ade10b0fda)
-Fixed: Exit with error when no methods are run
-			 (see: http://groups.google.com/group/testng-dev/browse_thread/thread/3c26e8a5658f22ac)
-Added: List of methods in alphabetical order
-Fixed: Class-scoped annotations were not recognized when inherited
-Added: Deprecated @Configuration and introduced @BeforeSuite/Test/Class/TestMethod
-Added: Deprecated @ExpectedExceptions and moved it into @Test
-Added: expectedExceptions to @Test, deprecated @ExpectedExceptions
-Added: New annotations:  @BeforeSuite, @BeforeTest, etc...
-Fixed: Was returning an exit code of 0 if a cyclic graph was detected
-Added: Interface org.testng.ITest so that tests can declare a name
-Fixed: The Text reporter was reporting the square of the actual number of methods
-Fixed: Bug reported by Eran about dependencies with an afterClass method
-Added: IHookCallBack now receives the ITestResult in its run() method
-Added: Name of suite for command line can be set with -Dtestng.suite.name=xxx
-Fixed: TestNGAntTask was hardcoding m_haltOnFSP to true
-Fixed: Passing a null parameter caused an NPE in the reports
-Added: "listener" to the ant task (and documentation)
-Added: if patch-testng-sourcedir.properties is found in the classpath
-       with a property "sourcedir" containing a ; separated list of
-       directories, this list will override -sourcedir.
-
-===========================================================================
-
-
-4.7
-
-Added: Maven 2 plug-in
-Fixed: Message formattings in TestNG assertion utility class
-Fixed: @Factory methods were counted as @Test as well
-       http://jira.opensymphony.com/browse/TESTNG-51
-Fixed: All DataProvider parameters were shown in the HTML report
-Fixed: Bug in testng-failed.xml generation
-Fixed: <packages> bug when using a jar file to load the test classes
-Added: alwaysRun for before @Configuration methods
-       http://jira.opensymphony.com/browse/TESTNG-35
-Fixed: groupless @Configurations were not invoked if a method depends on a group
-       http://jira.opensymphony.com/browse/TESTNG-45
-Added: beforeGroups/afterGroups to @Configuration
-
-Eclipse plugin:
-
-Added: last contextual launch is available in Eclipse launcher lists
-Fixed: 3.2M5 integration (removed dependency on non-existing class)
-Fixed: testng-failures.xml generation
-
-===========================================================================
-
-4.6
-
-Added: Documentation contains the new reports
-Added: TestNG.setUseDefaultListeners(boolean)
-Added: Descriptions now appear in TextReporter (verbose>=2) and the HTML reports
-Added: description attribute to @Test and @Configuration
-Added: combined Reporter output in the reports
-Added: methods not run in the reports
-Added: org.testng.IReporter
-Added: threadPoolSize to @Test
-Added: Reports now show relative timings (start at 0)
-Added: Reports now show different colors depending on the methods' classes
-Added: Reports now show all parameters used to invoke the test method
-Added: org.testng.Reporter
-Added: DataProviders can accept a Method as first parameter
-Fixed: Extraneous implicit inclusion of a method
-
-Eclipse plugin:
-
-Added: Run/Debug as TestNG test from the editor contextual menu
-Fixed: TESTNG-24: 'Run as testng test' does not appear of the Test annotation does not have a group
-Fixed: TESTNG-18: Eclipse plugin ignores Factory annotation
-Fixed: TESTNG-21: Show differences when double clicking assertion exceptions
-Added: UI allows setting orientation (even more space)
-	   http://forums.opensymphony.com/thread.jspa?threadID=17225&messageID=33805#33805
-	   
-===========================================================================
-
-4.5
-
-Core:
-
-Fixed: Methods were not implicitly included, only groups
-Fixed: Bug with failed parent @Configuration don't skip child @Configuration/@Test invocations
-Fixed: Bug with overridding @Configuration methods (both parent and child were run)
-Fixed: Bug when overriding beforeClass methods in base class (cyclic graph)
-Added: Support for JAAS (see org.testng.IHookable)
-Fixed: Problem with nested classes inside <package name="foo.*"
-Fixed: If a group is not found, mark the method as a skip instead of aborting
-Fixed: testng-failed.xml was not respecting dependencies
-Fixed: class/include method in testng.xml didn't work on default package
-Fixed: DTD only allowed one <define>
-Fixed: ArrayIndexOutOfBoundsException for jMock
-Added: dependsOnMethods can contain methods from another class
-Fixed: JUnitConverter required -restore, not any more (option is now a no-op)
-Fixed: JUnit mode wasn't invoking setName() on test classes
-Added: Regular expressions for classes in <package>
-Added: Distributed TestNG
-Fixed: Command line parameters and testng.xml are now cumulative
-Fixed: Reports now work for multiple suites
-Fixed: Was ignoring abstract classes even if they have non-abstract instances
-Fixed: If setUp() failed, methods were not skipped
-Fixed: Was not clearly indicating when beforeSuite fails
-Added: @Configuration.inheritGroups
-Fixed: inconsistency between testng.xml and objects regarding method selectors
-
-Eclipse plug-in:
-
-New look for the progress view.
-
-===========================================================================
-
-4.4
-
-Core:
-
-Fixed: testng-failures.xml was not excluding methods from base classes
-Fixed: Bug in suites of suites for JUnit mode
-
-===========================================================================
-
-4.3
-
-Core:
-
-Fixed: testng-failures.xml was not excluding methods from base classes
-Fixed: Bug in suites of suites for JUnit mode
-Added: Excluded groups on command line and ant task
-Fixed: When including a group, implicitly include groups depended upon
-Fixed: When depending on several groups, wasn't skipped if one of them failed
-Fixed: Failures weren't reported accurately in the JUnitReports report
-Fixed: Wasn't throwing an exception if depending on a non-existing group
-
-===========================================================================
-
-4.2
-
-Core:
-
-Fixed: wasn't excluding methods in base classes
-Added: alwaysRun for tests (soft dependencies)
-Fixed: Class-level enabled=false were not honored
-Fixed: Bug with multiple dataproviders on same class
-Fixed: Bug with dataprovider defined in the parent class
-Fixed: Bug with dataprovider defined in a subclass
-Fixed: Bug with dataprovider defined in an abstract class
-Fixed: testng-failures generation was excluding the methods even if a failed test depended on it
-
-===========================================================================
-
-4.1
-
-Core:
-
-Added: @DataProviders can return Iterable<Object[]>
-Fixed: Superclass test methods were not called in the presence of a class @Test
-Added: Reporter class to log messages in the HTML reports
-
-===========================================================================
-
-4.0
-
-Core:
-
-Fixed: suite methods now invoked only once in a hierarchy
-Added: @DataProvider and @testng.data-provider
-Fixed: Interleave order now respected for before/afterClass methods
-Added: Can now invoke java -jar testng-2.6.jar <...>
-Added: Support for BeanShell
-Added: Method Selectors (IMethodSelector)
-Fixed: In the absence of dependencies, @Configuration methods respect inheritance
-Fixed: Bug in multithreaded dependencies on methods
-Fixed: dependsOnGroups wasn't working on regular expressions
-Fixed: Bug in <package> when directories contain spaces in their names
-Fixed: Introduced a JDK5 dependency in the JDK1.4 build (getEnclosingClass())
-Fixed: Output directory in ant task was not honored if it didn't exist
-Fixed: Problem with timeout according to 
-       http://forums.opensymphony.com/thread.jspa?threadID=6707
-
-Eclipse plug-in:
-
-Fixed: Wasn't handling linked directories correctly
-Fixed: Bug in QuickFix implementation
-Added: Quick Fix for JUnit conversion (Annotations and JavaDoc)
-Fixed: Methods Run as TestNG test
-Added: Package level Run as TestNG test
-Fixed: Resources from the linked directories are using a wrong path when 
-       passed to command line TestNG
-
-IDEA plug-in:
-
-Added: Support for JDK 1.4 (both projects and IDEA itself)
-Fixed: Classes that contained only configuration were ignored
-
-===========================================================================
-
-2.5
-
-Added: ITestListener.onTestStart(ITestResult)
-Added: Support for <packages>
-Added: Resource files for easier ant taskdefs
-Fixed: @Configuration methods were not invoked with individual test methods
-Fixed: Bug with ExpectedExceptions
-Fixed: Didn't support nested factory classes
-Fixed: NPE if -target is omitted with JDK 1.4
-Fixed: @Configuration failures in a class would cause other classes to fail
-Added: alwaysRun
-Fixed: beforeTestClass/afterTestClass were broken for a pathological case
-Added: @Configuration(alwaysRun)
-Added: JUnitConverter task
-Fixed: < and > characters in reports were not escaped
-
-Eclipse plug-in:
-
-Fixed: Class dialog wasn't showing @Factory classes
-
-IDEA plug-in:
-
-First release!
-
-Documentation:
-
-Added: Brand new look!!!
-Added: Section on testng.xml
-Fixed: Numbering of sections
-
-===========================================================================
-
-2.4
-Changed: New package:  testng.org
-Fixed: Bug with @ExpectedException occuring the parallel mode
-Fixed: Bug with parameters and beforeTest
-Added: IInstanceInfo support
-Fixed: methods were not excluded when included by groups
-Fixed: testng-failures.xml is now including also the beforeSuite/afterSuite methods
-Fixed: generating the testng-failures.xml is now working as expected
-Fixed: Factories call all the tests even if some of them fail along the way
-Fixed: Better JUnit support (wasn't creating individual instances)
-Fixed: dependsOnGroups didn't work across different classes
-Added: command line (and Ant) -groups option
-Added: @Parameters (and made parameters attribute deprecated)
-Added: Parameters for constructors
-Fixed: Better interleaving of before/afterTestMethods
-Fixed: Ant task
-Fixed: TestNGException thrown when TestNG conditions are not fulfilled
-
-Documentation:
-- New assert classes
-- New ways to launch 
-- JUnitConverter documentation
-- new beforeSuite/afterSuite
-
-===========================================================================
-
-2.3
-
-Fixed: Spaces are now legal in JavaDoc comments
-Added: documentation for @Factory
-Fixed: factories were called multiple times
-Added: beforeSuite and afterSuite
-Fixed: inheritance and scope now working properly for annotations
-Fixed: dependsOnMethods wasn't working for 1.4
-Added: Better stack traces
-Added: Better syntax for included/excluded methods
-Fixed: Better verbose support
-Fixed: Various fixes for the Eclipse plug-in
-Added: Can specify a class name on the command line
-Fixed: Default package bug in JUnitConverter
-Added: Regression tests for JUnitConverter
-Added: -quiet option to JUnitConverter
-
-===========================================================================
-
-2.2
-
-Fixed: Wasn't handling several testng.xml files correctly
-Fixed: Renamed -src to -sourcedir
-Fixed: Complains if no sourcedir is specified in 1.4
-Added: In 1.4, don't require annotations="javadoc"
-Fixed: If setUp fails, complain and mark test methods as skips
-Fixed: Dependent methods weren't working for 1.4
-
-===========================================================================
-
-2.1
-
-Added: Parser can accept an InputStream for testng.xml
-Fixed: expected-exceptions now fails if test passes
-Fixed: reports now use the suite name in HTML
-Added: invocationCount and successPercentage
-Added: dependsOnMethods
-Added: timeOut works in non-parallel mode
-
-===========================================================================
-
-2.0
-
-Added: port on JDK 1.4
-
-===========================================================================
-
-1.3
-
-Added: new view:  classes (still experimental)
-Added: timeout on methods
-Added: thread-count
-Added: TestNG is now multithread, see "parallel" in <suite>
-
-===========================================================================
-
-1.2
-
-Added: JUnitConverter
-Fixed: Bug with afterClasses (test: AfterClassCalledAtTheEnd)
-
-===========================================================================
-
-1.1
-
-Added: new links for methods and groups in the HTML report
-Added: <methods>
-Added: <fileset> to <testng>
-
-===========================================================================
-
-1.0
-
-Fixed: Updated to the new DTD
-Fixed: Suite table of contents displays failures first
-Fixed: Bug in afterTestClass
-Added: Validating testng.xml
-Added: Scoped parameters
-Added:  testng.xml
-Removed: Property quiet
-Changed: Verbose is now an integer
-Added:  Dependent methods
-
-===========================================================================
-
-0.9
-
-Added:  Groups of groups
-Added:  Groups for Configuration methods
-Added:  Parameters
-
-===========================================================================
-
-0.2
-
-Fixed:  Merged TestMethod and TestClass into Test
-Added: HTML report
-Added: Regexps for groups
-Fixed:  Inheritance of methods
-Fixed:  ExpectedException is now called ExpectedExceptions
diff --git a/FILES b/FILES
deleted file mode 100644
index 482af74..0000000
--- a/FILES
+++ /dev/null
@@ -1,11 +0,0 @@
-build.properties
-build.xml
-lib/DTDDoc.jar
-examples/build.xml
-examples/testng.properties
-examples/testng.xml
-examples/src/
-maven-testng-plugin-1.1.jar
-CHANGES.txt
-LICENSE.txt
-README
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/NOTES b/NOTES
deleted file mode 100644
index fbd875d..0000000
--- a/NOTES
+++ /dev/null
@@ -1,38 +0,0 @@
-Maven
-
-If you ran the full dist build, it should have generated a file on your hard drive called "testng-5.10-bundle.jar" ... you should be able to just upload that bundle here:
-
-http://jira.codehaus.org/secure/CreateIssue.jspa?pid=10367&issuetype=5
-
-Here's an example of the one we did for TestNG 5.9
-http://jira.codehaus.org/browse/MAVENUPLOAD-2502
-
-5.11:
-http://jira.codehaus.org/browse/MAVENUPLOAD-2689
-
-Summary: TestNG 5.10
-Bundle URL: Attached
-Attachment: (uploaded bundle)
-Project URL: http://www.testng.org
-Contributor URL: http://code.google.com/p/testng/
-
-Description: TestNG 5.9. I'm a developer of TestNG (DanFabulich)
-
-===
-Eclipse
-
-I ended up doing the launch configuration, and just for information, here are the parameters:
-
-Run Configuration / Eclipse application.
-
-Check "Run an application" in "Program to run", and select org.eclipse.equinox.p2.metadata.generator.EclipseGenerator
-
-The program arguments are (replace the update site directory appropriately):
-
-Linux:
--os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}    -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator -updateSite /usr/local/cbeust/java/testng-eclipse-update-site -site file:/usr/local/cbeust/java/testng-eclipse-update-site/site.xml  -metadataRepository file:/usr/local/cbeust/java/testng-eclipse-update-site/  -artifactRepository file:/usr/local/cbeust/java/testng-eclipse-update-site -artifactRepositoryName "Ganymede Artifacts" -compress  -app [...]
-
-Mac
--os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}    -application org.eclipse.equinox.p2.metadata.generator.EclipseGenerator -updateSite /Users/cbeust/java/testng-eclipse-update-site -site file:/Users/cbeust/java/testng-eclipse-update-site/site.xml  -metadataRepository file:/Users/cbeust/java/testng-eclipse-update-site/  -artifactRepository file:/Users/cbeust/java/testng-eclipse-update-site -artifactRepositoryName "Ganymede Artifacts" -compress  -append  -reusePack2 [...]
-
-This will generate the site in ~/java/testng-eclipse-update-site
diff --git a/README b/README
deleted file mode 100644
index 701e884..0000000
--- a/README
+++ /dev/null
@@ -1,11 +0,0 @@
-Welcome to TestNG
-
-Please note that even though the .zip distribution contains the TestNG sources,
-you will not be able to build the software with them because we decided
-not to include the external jar files in order to keep the size down.
-
-If you want to build TestNG, please sync to the Subversion depot (the exact information can be found at http://testng.org).
-
--- 
-Cedric
-
diff --git a/README.template b/README.template
deleted file mode 100644
index 727c381..0000000
--- a/README.template
+++ /dev/null
@@ -1,11 +0,0 @@
-Welcome to TestNG ${version}
-
-Please note that even though the .zip distribution contains the TestNG sources,
-you will not be able to build the software with them because we decided
-not to include the external jar files in order to keep the size down.
-
-If you want to build TestNG, please sync to the Subversion depot (the exact information
-can be found at http://testng.org).
-
--- 
-The TestNG team
diff --git a/TESTNG-5.11beta b/TESTNG-5.11beta
deleted file mode 100644
index e69de29..0000000
diff --git a/TODO.txt b/TODO.txt
deleted file mode 100644
index 1013ce5..0000000
--- a/TODO.txt
+++ /dev/null
@@ -1,160 +0,0 @@
-                                       TODO for TestNG
-
-* Pass the XmlTest in @Before/@After methods
-* Allow a testng.xml file to be passed when -testjar is used
-* Add onStart to IConfigurationListener (create a new interface, actually)
-* Add timeout to @Before/@After
-* Pass parameters from ant
-* Make it possible to specify groups on command line and classes in testng.xml
-(and any combinations thereof:  command line, ant, testng.xml)
-* DataProvider index in testng.xml
-* Create a servlet for remote driving
-* Add time-outs at the testng.xml.  Also:  test and suite time-outs? http://tinyurl.com/kbwxq
-* Add working dir to the ant task
-* Add a servlet so TestNG can be invoked from a web browser
-* Make it possible to add listeners from the Eclipse plug-in
-
-Doc:
-
-* Document the fact that @Test methods with return values are ignored.
-
-===========================================================================
-Older TODO's:
-
-* Show enabled=false methods in the reports, as well as methods
-in groups that were not run
-* Multi-threading for invocationCount and maybe for <test> too
-* Annotation to specify that a method should be called concurrently by n threads 
-(on second thought, we should do that for an entire group)
-* more thread ideas: http://www.theserverside.com/news/thread.tss?thread_id=38922
-* package support for command line and ant
-* Parameters for classes (to be passed as parameters to constructors)
-* testng-dist.zip should contain a top-level directory
-* For dependent methods, if the user is trying to run an incomplete graph
-(A depends on B but B is being excluded from the run), what to do?  Ignore
-the exclusion on B and run it anyway, or abort with an exception explaining
-what's happening?)
-* Make timeOut() work with milliseconds (but keep seconds for backward
-compatibility)
-* Improve the plug-in API so people can add listeners without having to
-modify TestRunner
-* Use factories for the programmatic API.
-* Add dynamic generation of tests
-* Make Javadoc comments over methods appear in the final report
-
-Documentation:
-* IHookable
-* List<IReporter>
-
-
-DONE
-
-* Retry patch
-* If a method with invocationCount fails, don't run the others
-* Allow multiple listeners in ant task
-* Add working dir to the ant task
-* Introduce "test" and "suite" parameters to @Test at the class level to
-avoid having to use testng.xml
-* Remove TestNG stack traces from the report
-* When 0 tests were run, exit with an error http://tinyurl.com/ftng6
-* Show all the extra output for all methods in a single 
-dedicated page
-* report API
-* Show parameters used to invoke a specific test
-* show skipped groups/methods in HTML report
-* beforeTestGroups
-* <testng classfileset> doesn't add to classpath
-* threadPoolSize
-* Parameter logging
-* JavaDoc for org.testng.TestNG
-* org.testng.Reporter in the HTML report (screenshot ready)
-* Document @Parameters only works for @Test (should mention @Factory and @Configuration)
-* Document: <testng classfileset> doesn't add to classpath
-* Document org.testng.Reporter in the HTML report (screenshot ready)
-* Document parameter logging
-* JavaDoc for org.testng.TestNG
-* Document threadPoolSize
-* Make sure it can run several times in the same JVM
-* Implement invocationCount and successPercentage
-* Support multiple testng.xml (TestNG allows it but not the reporters
-yet)
-* The HTML reporter collapses all the suites into one report, we should
-create one HTML report per suite
-* testng-failed.xml should contain the parameters of testng.xml (if any)
-* Create a testng-failed.xml that includes dependent methods
-* Generic reported with compare(ITestResult, ITestResult) for
-easier reporter for "slowest method first" or generate testng-failed.xml
-* Iterator factories
-* configuration methods don't respect inheritance
-- build.xml should issue a clear error message if trying to build with JDK1.4
-- Implement <tasdkdef resource="testnganttasks"> so we can define
-ant tasks for TestNG and JUnitConverter automatically
-- Write documentation to declare ant task in section 3.2.8
-- Documentation for alwaysRun
-- Allow to specify packages or prefix in the <classes> tag:
-   <classes prefix="com.beust.testng"><class name="A"><class name="B"> />
-- New assert classes
-- New ways to launch 
-- JUnitConverter documentation
-- new beforeSuite/afterSuite
-
-* in testng-failures.xml include the beforeSuite/afterSuite methods (very tricky)
-* Provide log.properties configuration (not using log any more)
-* Make @ExpectedExceptions fail if no exception is thrown
-* Make timeOut() work in non-parallel mode (the default mode needs to become
-parallel=true thread-count=1
-* The exception thrown when a test passes with a @ExpectedExceptions is not 
-available via the TestNG API: ITestResult.getThrowable().
-* Add assert API for arrays and collections (undecided yet:  partial asserting)
-* dependsOnMethods
-Allow to specify <groups> at the <suite> level
-Make TestNG run on class files and not just on testng.xml
-Make TestNG run on a jar file that has a testng.xml file in its root or just on all
-  the classes inside that jar file.
-
-Implement parameter passing of tests:  define a property in the properties
-file and pass it to the test method:
-
- at Test(params = { "${fn}", "${ln}" }
-public void testNames(String firstName, String lastName) {
-}
-
-Run groups of groups
-List all tests that will be run, or show methods per group
-HTML generation
-Make test and class methods discoverable
-  JUnit adapter
-Multiple ExpectedException
-Inheritance
-Test listeners
-Group regexps for launching
-
-====
-
-A new comment has been posted on your blog Otaku, Cedric's weblog, on entry
-#149 (The poor shape of Unit Testing).
-http://beust.com/weblog/archives/000149.html
-
-IP Address: 68.72.49.189
-Name: Curt Cox
-Email Address: curtcox at gmail.com
-URL: 
-
-Comments:
-
-For whatever its worth, here are my problems with JUnit.  I've largely developed work-arounds.
-
-1. Interface-based testing is awkward.
-2. Only fast-fail tests are supported.
-3. The design is brittle, poorly documented, and thus hard to extend.
-
-How should interface-based testing be handled in TestNG?  A nice feature would be bundled tests for interfaces in the java* namespace that are automatically applied.  In other words:
-- all classes will fail a (supressible) test if they violate the contract for equals() and hashCode()
-- classes that implement Comparable will fail a test if they fail to implement Comparable
-- and likewise for java.io.Serializable, java.util.Map, java.util.List, etc...
-
-When I say all tests are fast-fail in JUnit, what I mean is that the first failed assertion in a method causes the test to exit.  While this is usually desirable, a more conversational style of tests can sometimes be much easier to read and write.  Such a conversational test doesn't generate a simple failure, but rather a score.  The score could be either x of y passed or x percent passed.  The important part is that the first failure doesn't terminate the test.
-
-As I said, I've largely developed work-arounds for doing these in JUnit, but developing tools for conversational tests that play nice with the various JUnit runners was a real challenge.  The exact contract that Eclipse expects of JUnit tests turns out to be different than what either of the bundled runners or the Ant task expect.  Anyone who considers either the JUnit code or interfaces well-documented has a much different concept of well-documented than I do.
-
-
diff --git a/bin/junitconverter.bat b/bin/junitconverter.bat
deleted file mode 100644
index 0abcd0b..0000000
--- a/bin/junitconverter.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-set ROOT=c:\java\TestNG
-set JAR=%ROOT%\testng-4.5-jdk15.jar;%ROOT%\test\build
-	rem set JAR=%ROOT%\testng-4.5-jdk14.jar;%ROOT%\test-14\build
-
-java -ea -classpath %ROOT%\3rdparty\junit.jar;%JAVA_HOME%\lib\tools.jar;%JAR%;%CLASSPATH% org.testng.JUnitConverter -restore -overwrite -annotation -srcdir src
-
diff --git a/bin/master.bat b/bin/master.bat
deleted file mode 100644
index a4040d8..0000000
--- a/bin/master.bat
+++ /dev/null
@@ -1 +0,0 @@
-testng -hostfile test\hosts.properties -d test\test-output %1 %2 %3 %4 %5 test\testng.xml
\ No newline at end of file
diff --git a/bin/run-tests.sh b/bin/run-tests.sh
deleted file mode 100755
index 32792e1..0000000
--- a/bin/run-tests.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-ROOT=~/java/testng
-VERSION=5.0
-JAR14=$ROOT/testng-$VERSION-jdk14.jar
-JAR15=$ROOT/testng-$VERSION-jdk15.jar
-
-java -ea -classpath test/build:$ROOT/3rdparty/junit.jar:$JAVA_HOME/lib/tools.jar:$JAR15:$CLASSPATH org.testng.TestNG test/testng.xml
-
-java -ea -classpath test/v4/build:$ROOT/3rdparty/junit.jar:$JAVA_HOME/lib/tools.jar:$JAR15:$CLASSPATH org.testng.TestNG test/v4/testng.xml
-
-java -ea -classpath test-14/build:$ROOT/3rdparty/junit.jar:$JAVA_HOME/lib/tools.jar:$JAR14:$CLASSPATH org.testng.TestNG -sourcedir test-14/src test-14/testng.xml
-
-java -ea -classpath test-14/v4/build:$ROOT/3rdparty/junit.jar:$JAVA_HOME/lib/tools.jar:$JAR14:$CLASSPATH org.testng.TestNG -sourcedir test-14/v4/src test-14/v4/testng.xml
-
-
diff --git a/bin/slave.bat b/bin/slave.bat
deleted file mode 100644
index 24d2fb1..0000000
--- a/bin/slave.bat
+++ /dev/null
@@ -1 +0,0 @@
-testng -d client-output -slave %1 %2 %3
diff --git a/bin/testng.bat b/bin/testng.bat
deleted file mode 100644
index 8ea1edf..0000000
--- a/bin/testng.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-set ROOT=c:\java\TestNG
-set JAR=%ROOT%\testng-5.2beta-jdk15.jar;%ROOT%\test\build
-	rem set JAR=%ROOT%\testng-4.5-jdk14.jar;%ROOT%\test-14\build
-
-java -ea -classpath %ROOT%\3rdparty\junit.jar;%JAVA_HOME%\lib\tools.jar;%JAR%;%CLASSPATH% org.testng.TestNG %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/bin/testng.sh b/bin/testng.sh
deleted file mode 100755
index af8bbb9..0000000
--- a/bin/testng.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-ROOT=~/java/testng
-VERSION=5.0
-JAR14=$ROOT/testng-$VERSION-jdk14.jar
-JAR15=$ROOT/testng-$VERSION-jdk15.jar
-
-java -ea -classpath $ROOT/test/build:$ROOT/3rdparty/junit.jar:$JAVA_HOME/lib/tools.jar:$JAR15:$CLASSPATH org.testng.TestNG $*
diff --git a/build.properties b/build.properties
deleted file mode 100644
index 201fba9..0000000
--- a/build.properties
+++ /dev/null
@@ -1,56 +0,0 @@
-root.dir=${basedir}
-
-build.dir=${root.dir}/build
-build.3rdparty.dir=${root.dir}/build3rdparty
-build.maven-bundle.dir=${build.dir}/maven-bundle
-
-#classes=${build.dir}
-
-lib.dir=${basedir}/3rdparty
-src.dir=${basedir}/src
-example.dir=${basedir}/examples
-
-#
-# Jar files
-#
-beanshell.jar=bsh-2.0b4.jar
-guice.jar=guice-2.0.jar
-
-#
-# Names of distributions
-#
-testng.basename=testng
-testng.version=5.12
-testng.jar=${testng.basename}-${testng.version}.jar
-sources.testng.jar=${testng.basename}-${testng.version}-sources.jar
-other.jars.dir=other-jars
-testng.nobsh.jar=${testng.basename}-${testng.version}-nobsh.jar
-
-testng.ibiblio.jar=${testng.basename}-${testng.version}-bundle.jar
-
-testng.zip=${testng.basename}-${testng.version}.zip
-
-testng.maven-bundle=${testng.basename}-${testng.version}-bundle.jar
-
-#
-# Test locations
-#
-test.location.msg=Test results can be found in\n\
-test/test-output/index.html
-
-#
-# Eclipse plug-in
-#
-testng-eclipse.dir=../testng-eclipse
-
-#
-# Maven plug-in version
-# Note, this version number is appended to the resulting plug-in jar
-#
-testng-maven.version=1.2
-
-#
-# JDK 1.4 for sanity checking before a distribution
-#
-java14.home=jdk-1.5.0_04
-#java14.home=c:/java/jdk-1.4.2_08
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 29f863d..0000000
--- a/build.xml
+++ /dev/null
@@ -1,330 +0,0 @@
-<project name="testng" default="dev" basedir=".">
-  
-  <!-- ====================================================================== -->
-  <!-- TestNG build file                                                      -->
-  <!-- Created cbeust, April 26th, 2004                                       -->
-  <!-- ====================================================================== -->
-
-  <property file="build.properties" />
-  <property name="optimize" value="false" />
-  <property name="build.compiler" value="javac1.5" />
-
-  <!-- ====================================================================== -->
-  <!-- PREPARE                                                                -->
-  <!-- ====================================================================== -->
-  <target name="prepare"
-          description="Performs all preparations required to build.">
-    <tstamp />
-    <mkdir dir="${build.dir}" />
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- DUMP                                                                   -->
-  <!-- ====================================================================== -->
-  <target name="dump" description="Dumps all properties." depends="prepare">
-    <echoproperties />
-  </target>
-
-  <!-- ====================================================================== -->
-  <!-- VALIDATE                                                               -->
-  <!-- ====================================================================== -->
-
-  <target name="validate" description="Validates the build environment.">
-    <!-- java greater than 1.5 required to build -->
-    <condition property="requiredJavaVersion">
-    	<or>
-   			<equals arg1="${ant.java.version}" arg2="1.5" />
-    		  <equals arg1="${ant.java.version}" arg2="1.6" />
-    	</or>
-    </condition>
-    <fail unless="requiredJavaVersion"
-          message="Java version 1.5 required." />
-    <!-- validate ant version too ... -->
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- COPY-RESOURCES                                                       -->
-  <!-- ==================================================================== -->
-
-  <target name="copy-resources" description="Copies resources.">
-    <copy verbose="false"
-          file="src/testng-1.0.dtd"
-          todir="${build.dir}" />
-    <copy verbose="false"
-          file="src/testngtasks"
-          todir="${build.dir}" />
-    <copy todir="${build.dir}">
-      <fileset dir="./resources">
-        <exclude name="**/.*" />
-        <exclude name="**/CVS/*" />
-      </fileset>
-    </copy>
-  </target>
-
-
-  <target name="dev"
-          depends="prepare,validate,copy-resources,build,tests" />
-
-  <target name="all"
-          depends="prepare,validate,copy-resources,build,dist,tests,test-ant,javadocs,dist" />
-
-  <target name="build" depends="compile,dist-bsh" />
-
-  <target name="single">
-    <ant antfile="test/build.xml" target="run:single"/>
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- Compile                                                              -->
-  <!-- ==================================================================== -->
-
-  <target name="compile"
-          depends="prepare,copy-resources"
-          description="Compiles sources">
-    <echo message="                                 -- Compiling sources --" />
-
-    <path id="compile2.cp">
-      <fileset dir="${lib.dir}">
-        <include name="junit.jar" />
-        <include name="${beanshell.jar}" />
-        <include name="${guice.jar}" />
-      </fileset>
-    </path>
-
-    <javac classpathref="compile2.cp"
-           verbose="false"
-           target="1.5"
-           debug="true"
-           optimize="${optimize}"
-           destdir="${build.dir}">
-      <src path="${src.dir}" />
-    </javac>
-  </target>
-
-  <target name="compile:all" depends="compile" />
-
-  <target name="examples">
-    <ant inheritall="no" antfile="examples/build.xml" />
-  </target>
-
-  <target name="tests" depends="compile" description="runs all JDK5 tests with JDK5 distro">
-  	<ant inheritall="no" antfile="test/build.xml" />
-<!--
-  	<ant inheritall="no" antfile="test/v4/build.xml" />
--->
-  </target>
-	
-  <target name="test-ant">
-    <echo message="                                 -- Testing ant testng task functionality --" />
-  	<ant inheritall="no" antfile="test/ant/build.xml" />
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- Documentation                                                        -->
-  <!-- ==================================================================== -->
-
-  <target name="javadocs">
-    <javadoc additionalparam="-quiet" destdir="javadocs" source="1.5" windowtitle="TestNG"
-        classpath="${testng.jar}:${lib.dir}/ant.jar:${guice.jar}">
-      <fileset dir="${src.dir}" defaultexcludes="yes">
-        <include name="org/testng/*.java" />
-      </fileset>
-      <fileset dir="${src.dir}" defaultexcludes="yes">
-        <include name="org/testng/xml/Xml*.java" />
-      </fileset>
-      <fileset dir="${src.dir}" defaultexcludes="yes">
-        <include name="org/testng/annotations/**" />
-      </fileset>
-    </javadoc>
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- Distribution                                                         -->
-  <!-- ==================================================================== -->
-
-  <target name="dist" depends="maven-plugin,dist-all-zip,dist-maven-bundle,eclipse,dtd" />
-
-  <target name="clean-unjar">
-    <delete quiet="true" dir="${build.3rdparty.dir}" includeemptydirs="true" />
-    <mkdir dir="${build.3rdparty.dir}" />
-  </target>
-
-  <target name="extract-beanshell-jar">
-    <unjar src="3rdparty/${beanshell.jar}"
-           dest="${build.3rdparty.dir}"
-           overwrite="true" />
-  </target>
-
-  <target name="extract-guice-jar">
-    <unjar src="3rdparty/${guice.jar}"
-           dest="${build.3rdparty.dir}"
-           overwrite="true" />
-  </target>
-
-  <target name="dist-bsh" depends="clean-unjar,extract-beanshell-jar,extract-guice-jar" >
-    <delete file="${testng.jar}" />
-    <jar destfile="${testng.jar}">
-      <manifest>
-        <attribute name="Main-Class" value="org.testng.TestNG" />
-      	<attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
-      </manifest>
-      <fileset dir="${build.dir}" />
-      <fileset dir="${build.3rdparty.dir}" />
-      <fileset file="TESTNG-${testng.version}" />
-    </jar>
-  </target>
-  
-  <target name="dist-nobsh"  depends="clean-unjar,extract-guice-jar" >
-    <delete file="${other.jars.dir}/${testng.nobsh.jar}" />
-    <jar destfile="${other.jars.dir}/${testng.nobsh.jar}">
-      <manifest>
-        <attribute name="Main-Class" value="org.testng.TestNG" />
-      	<attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
-      </manifest>
-      <fileset dir="${build.dir}" />
-      <fileset dir="${build.3rdparty.dir}" />
-      <fileset file="TESTNG-${testng.version}" />
-    </jar>
-  </target>
-
-  <target name="dist-all-zip" depends="dist-prepare,javadocs">
-  	<property name="zip.dir" value="testng-${testng.version}" />
-    <zip zipfile="${testng.zip}">
-      <zipfileset prefix="${zip.dir}" dir="${basedir}" includesfile="FILES" />
-      <zipfileset prefix="${zip.dir}" dir="${basedir}">
-        <include name="${testng.jar}" />
-      </zipfileset>
-      <zipfileset dir="${other.jars.dir}" prefix="${zip.dir}/${other.jars.dir}"/>
-      <zipfileset dir="javadocs" prefix="${zip.dir}/javadocs" />
-      <zipfileset dir="src" prefix="${zip.dir}/src" />
-      <zipfileset dir="spring" prefix="${zip.dir}/spring" />
-      <zipfileset dir="doc" prefix="${zip.dir}/doc" />
-      <zipfileset dir="resources"
-    	   		  prefix="${zip.dir}/resources" 
-    			  includes="**/*.css"/>
-      <zipfileset dir="test"
-                  prefix="${zip.dir}/test"
-                  includes="**/*.properties,**/*.java,build.xml,testng.xml"
-                  excludes="test-output/**,report/**" />
-      <zipfileset dir="3rdparty"
-                  prefix="${zip.dir}/3rdparty"
-                  includes="${beanshell.jar},${concurrent.jar},${guice.jar}" />
-    </zip>
-  </target>
-  
-  <target name="dist-maven-bundle" depends="dist-all-zip">
-    <mkdir dir="${build.maven-bundle.dir}" />
-    <copy file="bundle-pom.xml" tofile="${build.maven-bundle.dir}/pom.xml" overwrite="true">
-      <filterchain>
-        <expandproperties/>
-      </filterchain>
-    </copy>
-    <jar destfile="${build.maven-bundle.dir}/${sources.testng.jar}">
-      <fileset dir="src" />
-    </jar>
-    <jar destfile="${testng.maven-bundle}">
-      <fileset file="${build.maven-bundle.dir}/pom.xml" />
-      <fileset file="${testng.jar}" />
-      <fileset file="${build.maven-bundle.dir}/${sources.testng.jar}" />
-    </jar>
-  </target>
-  
-  <target name="dist-prepare" depends="update-readme">
-    <delete file="{other.jars.dir}/${testng.nobsh.jar}" />
-    <mkdir dir="${other.jars.dir}" />
-  </target>
-
-  <target name="update-readme">
-    <copy file="README.template" tofile="README" />
-    <replace file="README" token="${version}" value="${testng.version}" />
-    <touch file="TESTNG-${testng.version}" />
-  </target>
-      
-  <target name="eclipse" description="Used by Cedric to build distributions">
-    <property name="jdk15.jar"
-              value="${testng-eclipse.dir}/lib/testng.jar" />
-
-    <delete file="${jdk15.jar}" />
-    <copy file="${testng.jar}" tofile="${jdk15.jar}" />
-  </target>
-
-  <taskdef name="DTDDoc" classname="DTDDoc.DTDDocTask"
-     classpath="lib/DTDDoc.jar"/>
-
-  <target name="dtd">
-    <DTDDoc showHiddenTags="false"
-            showFixmeTags="false"
-            sourceDir="src"
-            destDir="dtd"
-            docTitle="TestNG DTD">
-        <include name="testng-1.0.dtd"/>
-    </DTDDoc>
-  </target>
-
-  <target name="ftp">
-    <!--
-          <ftp action="put"
-             server="beust.com"
-             remotedir="w/testng/test-output"
-             userid="${userid}"
-             password="${password}">
-              <fileset dir="c:\weblogic\dev\sandbox\cbeust\testng\test\test-output">
-                <include name="index.html" />
-                <include name="main.html" />
-                <include name="toc.html" />
-                <include name="*egression*" />
-             </fileset>
-        </ftp>
-      -->
-    <ftp action="put"
-         server="beust.com"
-         remotedir="w/testng"
-         userid="${userid}"
-         password="${password}">
-      <fileset dir="${root.dir}">
-        <include name="${testng.zip}" />
-        <include name="javadocs/**" />
-        <include name="testng-1.0.dtd" />
-      </fileset>
-      <fileset dir="${root.dir}/doc">
-        <include name="*.html" />
-      </fileset>
-    </ftp>
-
-  </target>
-
-  <target name="ftp2">
-    <ftp action="put"
-         server="beust.com"
-         remotedir="w/testng"
-         userid="${userid}"
-         password="${password}">
-      <fileset dir="${root.dir}/test">
-        <include name="test-output/*" />
-      </fileset>
-      <fileset dir="${root.dir}/test">
-        <include name="test-report/*" />
-      </fileset>
-    </ftp>
-  </target>
-
-  <target name="clean">
-    <delete dir="${build.dir}" />
-    <delete dir="${build.maven-bundle.dir}" />
-    <delete failonerror="false">
-      <fileset dir="." includes="*.jar,*.zip" />
-    </delete>
-    <ant antfile="test/build.xml" target="clean" />
-    <ant dir="examples" target="clean" />
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- Maven1/2 Distribution                                                -->
-  <!-- ==================================================================== -->
-
-  <target name="maven-plugin">
-    <jar destfile="maven-testng-plugin-${testng-maven.version}.jar"
-         basedir="./maven/" />
-  </target>
-  
-</project>
diff --git a/bundle-pom.xml b/bundle-pom.xml
deleted file mode 100644
index a803835..0000000
--- a/bundle-pom.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <!--
-    This POM cannot be used to build TestNG; it should only be used as part of a Maven
-    repository upload bundle.
-    
-    See the guide to creating a bundle here:
-    http://maven.apache.org/guides/mini/guide-central-repository-upload.html
-    -->
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.testng</groupId>
-    <artifactId>testng</artifactId>
-    <name>TestNG</name>
-    <version>${testng.version}</version>
-    <description>TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use.</description>
-    <url>http://testng.org</url>
-    
-    <licenses>
-        <license>
-            <name>Apache License, Version 2.0</name>
-            <url>http://apache.org/licenses/LICENSE-2.0</url>
-        </license>
-    </licenses>
-
-    <scm>
-        <connection>scm:svn:http://testng.googlecode.com/svn/trunk/</connection>
-        <developerConnection>scm:svn:http://testng.googlecode.com/svn/trunk/</developerConnection>
-        <url>http://testng.googlecode.com/svn/trunk</url>
-    </scm>
-    
-    <dependencies>
-        <dependency>
-            <groupId>ant</groupId>
-            <artifactId>ant</artifactId>
-            <version>1.6.5</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>3.8.1</version>
-        </dependency>
-        <dependency>
-            <groupId>qdox</groupId>
-            <artifactId>qdox</artifactId>
-            <version>1.6.1</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.beanshell</groupId>
-            <artifactId>bsh</artifactId>
-            <version>2.0b4</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>    
-    
-</project>
diff --git a/debian/README.source b/debian/README.source
deleted file mode 100644
index 4d9b4eb..0000000
--- a/debian/README.source
+++ /dev/null
@@ -1,57 +0,0 @@
-Building TestNG for Debian
---------------------------
-
-This package uses quilt to apply and remove its patches. Please refer
-to /usr/share/doc/quilt/README.source for information about how to use
-quilt for source packages.
-
-The quilt series is generated from the Git repository using
-TopGit. This process is documented in
-/usr/share/doc/topgit/HOWTO-tg2quilt.gz . The repository uses the
-branch layout described in the aforementioned document.
-
-
-Checking out the sources
-------------------------
-
-Use the "debcheckout" command to check out the git repository. This
-will set up the clone for TopGit properly.
-
-You can also track the upstream svn repository with git-svn. This is
-not necessary to build the package, but it is needed if you want to
-update the package for a new upstream version. In this case, the
-following steps are necessary:
-
-1. debcheckout testng
-2. cd testng
-3. git config --add remote.origin.fetch +refs/remotes/*:refs/remotes/*
-5. git fetch
-4. git svn init -s http://testng.googlecode.com/svn
-6. git svn fetch
-
-The last step will take a minute or so for git-svn to rebuild its index.
-
-
-Building the source tarball
----------------------------
-
-The source tarball was created from the upstream Subversion repository
-[1]. The following files and directories were removed because they are
-likely to contain non-free code:
-
-* gigaspaces/3rdparty/JSpaces.jar
-* gigaspaces/3rdparty/jini/jsk-lib.jar
-* gigaspaces/3rdparty/jini/jsk-platform.jar
-* reports/js/ext
-
-Also, these directories containing binary third-party libraries were removed:
-
- * 3rdparty
- * gigaspaces/3rdparty
- * lib
- * spring/3rdparty
-
-
-[1] http://testng.googlecode.com/svn
-
- -- Marcus Better <marcus at better.se>, Wed, 13 May 2009 10:49:17 +0200
diff --git a/debian/ant.properties b/debian/ant.properties
deleted file mode 100644
index 617e266..0000000
--- a/debian/ant.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-lib.dir=/usr/share/java
-beanshell.jar=bsh.jar
-qdox.jar=qdox.jar
-concurrent.jar=backport-util-concurrent.jar
-jdk15.testng.jar=testng-jdk15.jar
-jdk14.testng.jar=testng-jdk14.jar
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index c1ee6c1..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,78 +0,0 @@
-testng (5.14.10-2) unstable; urgency=low
-
-  * remove myself from the uploaders
-
- --
-
-testng (5.14.10-1) unstable; urgency=low
-
-  * New upstream release (the version 6.x has a lot of changes)
-  * Watch file added
-
- -- Sylvestre Ledru <sylvestre at debian.org>  Mon, 02 Apr 2012 11:46:35 +0200
-
-testng (5.11+dfsg-3) unstable; urgency=low
-
-  * Sync from Ubuntu (Closes: #605369, #639046)
-  * Standards-Version updated to version 3.9.2
-  * Package moved under the pkg-java team (thanks Marcus)
-  * Add myself as maintainer
-  * Fix a bad detection of the JVM path (LP: #888128)
-
- -- Sylvestre Ledru <sylvestre at debian.org>  Tue, 20 Dec 2011 00:39:49 +0100
-
-testng (5.11+dfsg-2ubuntu2) oneiric; urgency=low
-
-  * Fix FTBFS (LP: #829508):
-    - d/patches/debian/junitconvertor-test-fix.diff: Switch from use of 
-      deprecated parameters attribute in @Test to using @Parameters to 
-      ensure that JUnitConvertor Test passes.
-
- -- James Page <james.page at ubuntu.com>  Tue, 20 Sep 2011 12:15:27 +0100
-
-testng (5.11+dfsg-2ubuntu1) natty; urgency=low
-
-  * debian/rules: updated to use ant-nodeps to fix FTBFS (LP: #674382)
-
- -- James Page <james.page at canonical.com>  Fri, 12 Nov 2010 08:08:26 +0000
-
-testng (5.11+dfsg-2) unstable; urgency=low
-
-  * Fix non-threadsafe test. Thanks to Lucas Nussbaum. (Closes: #593040).
-
- -- Marcus Better <marcus at better.se>  Mon, 16 Aug 2010 10:52:51 +0200
-
-testng (5.11+dfsg-1) unstable; urgency=low
-
-  * New upstream version.
-  * Switch to source format 3.0 (quilt). Thanks to Raphael
-    Hertzog. (Closes: #538708)
-  * Disable tests that fail with qdox 1.11. Thanks to Daniel Schepler
-    (Closes: #577477).
-  * debian/control: Bump standards-version (no changed needed).
-
- -- Marcus Better <marcus at better.se>  Sun, 25 Apr 2010 09:42:04 +0200
-
-testng (5.10+dfsg-2) unstable; urgency=low
-
-  * Install Maven repository metadata. Thanks to Ludovic Claude.
-  * debian/control: Bump standards-version.
-
- -- Marcus Better <marcus at better.se>  Mon, 07 Sep 2009 10:33:28 +0200
-
-testng (5.10+dfsg-1) unstable; urgency=low
-
-  * Changed section to "java".
-  * debian/rules: Make it work with debhelper 7.3.5. (Closes: #538016)
-  * Use qdox 1.9 and add a patch for the API changes. Thanks to Ludovic
-    Claude.
-  * debian/control: Bump policy version to 3.8.2.
-  * debian/control: Build with default-jdk.
-
- -- Marcus Better <marcus at better.se>  Thu, 23 Jul 2009 12:11:17 +0200
-
-testng (5.9+dfsg-1) unstable; urgency=low
-
-  * Initial release. (Closes: #465326)
-
- -- Marcus Better <marcus at better.se>  Mon, 04 May 2009 10:47:43 +0200
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index 7f8f011..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/debian/control b/debian/control
deleted file mode 100644
index 8600ad3..0000000
--- a/debian/control
+++ /dev/null
@@ -1,44 +0,0 @@
-Source: testng
-Section: java
-Priority: optional
-Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
-Uploaders: Marcus Better <marcus at better.se>
-Build-Depends: debhelper (>= 7.3.5), ant
-Build-Depends-Indep: default-jdk, ant-optional, junit, bsh, libqdox-java (>= 1.9), libbackport-util-concurrent-java, maven-repo-helper
-Standards-Version: 3.9.4
-Homepage: http://testng.org
-Vcs-Git: git://git.debian.org/git/pkg-java/testng.git
-Vcs-Browser: http://git.debian.org/?p=pkg-java/testng.git
-
-Package: testng
-Architecture: all
-Depends: ${misc:Depends}, default-jre-headless | java2-runtime-headless, bsh, libqdox-java (>= 1.9)
-Recommends: libbackport-util-concurrent-java
-Suggests: ant, ant-optional, testng-doc
-Description: testing framework for Java
- TestNG is a testing framework inspired by JUnit and NUnit but
- introducing some new functionalities that make it more powerful and
- easier to use, such as:
- .
-     * JDK 5 annotations
-     * Flexible test configuration
-     * Support for data-driven testing
-     * Support for parameters
-     * Distribution of tests on slave machines
-     * Powerful execution model (no more TestSuite)
-     * Embeds BeanShell for further flexibility
- .
- TestNG is designed to cover all categories of tests, including unit,
- functional, end-to-end and integration tests.
-
-Package: testng-doc
-Section: doc
-Architecture: all
-Depends: ${misc:Depends}
-Suggests: testng
-Description: documentation for TestNG
- This package contains the API documentation and samples for TestNG.
- .
- TestNG is a testing framework inspired by JUnit and NUnit but
- introducing some new functionalities that make it more powerful and
- easier to use.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index 0d90ecf..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,269 +0,0 @@
-Format-Specification:
-    http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=428
-Upstream-Name: TestNG
-Upstream-Maintainer: http://groups-beta.google.com/group/testng-users/
-Upstream-Source: http://testng.org
-
-Files: *
-Copyright: Copyright 1999-2004 Taleo Corporation
-Copyright: Copyright 2001-2004 The Apache Software Foundation
-License: Apache-2.0
-
-Files: doc/prettify.js
-Copyright: Copyright 2005 Google, Inc.
-License: Apache-2.0
-
-Files: debian/*
-Copyright: Copyright 2008-2009 Marcus Better
-License: Apache-2.0
-
-Files: reports/js/sarissa/sarissa-debug.js
-License: GPL-2+ | LGPL-2.1+ | Apache-2.0+
-
-Files: src/main/org/testng/remote/adapter/RemoteResultListener.java
-Copyright: Copyright 2007 GigaSpaces Technologies Inc.
-License: Apache-2.0
-
-Files: src/main/org/testng/remote/strprotocol/AbstractRemoteTestRunnerClient.java
-Copyright: Copyright 2000, 2004 IBM Corporation
-License: CPL-1.0
-    Common Public License - v 1.0
-
-    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON 
-    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF 
-    THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-    1. DEFINITIONS
-
-    "Contribution" means:
-
-	  a) in the case of the initial Contributor, the initial code and 
-    documentation distributed under this Agreement, and
-	  b) in the case of each subsequent Contributor:
-
-	  i) changes to the Program, and
-
-	  ii) additions to the Program;
-
-	  where such changes and/or additions to the Program originate from 
-    and are distributed by that particular Contributor. A Contribution 
-    'originates' from a Contributor if it was added to the Program by such 
-    Contributor itself or anyone acting on such Contributor's behalf. 
-    Contributions do not include additions to the Program which: (i) are 
-    separate modules of software distributed in conjunction with the Program 
-    under their own license agreement, and (ii) are not derivative works of 
-    the Program. 
-
-    "Contributor" means any person or entity that distributes the Program.
-
-    "Licensed Patents " mean patent claims licensable by a Contributor which 
-    are necessarily infringed by the use or sale of its Contribution alone 
-    or when combined with the Program.
-
-    "Program" means the Contributions distributed in accordance with this 
-    Agreement.
-
-    "Recipient" means anyone who receives the Program under this Agreement, 
-    including all Contributors.
-
-    2. GRANT OF RIGHTS
-
-	  a) Subject to the terms of this Agreement, each Contributor hereby 
-    grants Recipient a non-exclusive, worldwide, royalty-free copyright 
-    license to reproduce, prepare derivative works of, publicly display, 
-    publicly perform, distribute and sublicense the Contribution of such 
-    Contributor, if any, and such derivative works, in source code and 
-    object code form.
-
-	  b) Subject to the terms of this Agreement, each Contributor hereby 
-    grants Recipient a non-exclusive, worldwide, royalty-free patent license 
-    under Licensed Patents to make, use, sell, offer to sell, import and 
-    otherwise transfer the Contribution of such Contributor, if any, in 
-    source code and object code form. This patent license shall apply to the 
-    combination of the Contribution and the Program if, at the time the 
-    Contribution is added by the Contributor, such addition of the 
-    Contribution causes such combination to be covered by the Licensed 
-    Patents. The patent license shall not apply to any other combinations 
-    which include the Contribution. No hardware per se is licensed 
-    hereunder. 
-
-	  c) Recipient understands that although each Contributor grants the 
-    licenses to its Contributions set forth herein, no assurances are 
-    provided by any Contributor that the Program does not infringe the 
-    patent or other intellectual property rights of any other entity. Each 
-    Contributor disclaims any liability to Recipient for claims brought by 
-    any other entity based on infringement of intellectual property rights 
-    or otherwise. As a condition to exercising the rights and licenses 
-    granted hereunder, each Recipient hereby assumes sole responsibility to 
-    secure any other intellectual property rights needed, if any. For 
-    example, if a third party patent license is required to allow Recipient 
-    to distribute the Program, it is Recipient's responsibility to acquire 
-    that license before distributing the Program.
-
-	  d) Each Contributor represents that to its knowledge it has 
-    sufficient copyright rights in its Contribution, if any, to grant the 
-    copyright license set forth in this Agreement. 
-
-    3. REQUIREMENTS
-
-    A Contributor may choose to distribute the Program in object code form 
-    under its own license agreement, provided that:
-
-	  a) it complies with the terms and conditions of this Agreement; 
-    and
-
-	  b) its license agreement:
-
-	  i) effectively disclaims on behalf of all Contributors all 
-    warranties and conditions, express and implied, including warranties or 
-    conditions of title and non-infringement, and implied warranties or 
-    conditions of merchantability and fitness for a particular purpose; 
-
-	  ii) effectively excludes on behalf of all Contributors all 
-    liability for damages, including direct, indirect, special, incidental 
-    and consequential damages, such as lost profits; 
-
-	  iii) states that any provisions which differ from this Agreement 
-    are offered by that Contributor alone and not by any other party; and
-
-	  iv) states that source code for the Program is available from such 
-    Contributor, and informs licensees how to obtain it in a reasonable 
-    manner on or through a medium customarily used for software exchange. 
-
-    When the Program is made available in source code form:
-
-	  a) it must be made available under this Agreement; and 
-
-	  b) a copy of this Agreement must be included with each copy of the 
-    Program. 
-
-    Contributors may not remove or alter any copyright notices contained 
-    within the Program.
-
-    Each Contributor must identify itself as the originator of its 
-    Contribution, if any, in a manner that reasonably allows subsequent 
-    Recipients to identify the originator of the Contribution.
-
-    4. COMMERCIAL DISTRIBUTION
-
-    Commercial distributors of software may accept certain responsibilities 
-    with respect to end users, business partners and the like. While this 
-    license is intended to facilitate the commercial use of the Program, the 
-    Contributor who includes the Program in a commercial product offering 
-    should do so in a manner which does not create potential liability for 
-    other Contributors. Therefore, if a Contributor includes the Program in 
-    a commercial product offering, such Contributor ("Commercial 
-    Contributor") hereby agrees to defend and indemnify every other 
-    Contributor ("Indemnified Contributor") against any losses, damages and 
-    costs (collectively "Losses") arising from claims, lawsuits and other 
-    legal actions brought by a third party against the Indemnified 
-    Contributor to the extent caused by the acts or omissions of such 
-    Commercial Contributor in connection with its distribution of the 
-    Program in a commercial product offering. The obligations in this 
-    section do not apply to any claims or Losses relating to any actual or 
-    alleged intellectual property infringement. In order to qualify, an 
-    Indemnified Contributor must: a) promptly notify the Commercial 
-    Contributor in writing of such claim, and b) allow the Commercial 
-    Contributor to control, and cooperate with the Commercial Contributor 
-    in, the defense and any related settlement negotiations. The Indemnified 
-    Contributor may participate in any such claim at its own expense.
-
-    For example, a Contributor might include the Program in a commercial 
-    product offering, Product X. That Contributor is then a Commercial 
-    Contributor. If that Commercial Contributor then makes performance 
-    claims, or offers warranties related to Product X, those performance 
-    claims and warranties are such Commercial Contributor's responsibility 
-    alone. Under this section, the Commercial Contributor would have to 
-    defend claims against the other Contributors related to those 
-    performance claims and warranties, and if a court requires any other 
-    Contributor to pay any damages as a result, the Commercial Contributor 
-    must pay those damages.
-
-    5. NO WARRANTY
-
-    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 
-    ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
-    EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES 
-    OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR 
-    A PARTICULAR PURPOSE. Each Recipient is solely responsible for 
-    determining the appropriateness of using and distributing the Program 
-    and assumes all risks associated with its exercise of rights under this 
-    Agreement, including but not limited to the risks and costs of program 
-    errors, compliance with applicable laws, damage to or loss of data, 
-    programs or equipment, and unavailability or interruption of operations.
-
-    6. DISCLAIMER OF LIABILITY
-
-    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR 
-    ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, 
-    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING 
-    WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF 
-    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
-    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR 
-    DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 
-    HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-    7. GENERAL
-
-    If any provision of this Agreement is invalid or unenforceable under 
-    applicable law, it shall not affect the validity or enforceability of 
-    the remainder of the terms of this Agreement, and without further action 
-    by the parties hereto, such provision shall be reformed to the minimum 
-    extent necessary to make such provision valid and enforceable.
-
-    If Recipient institutes patent litigation against a Contributor with 
-    respect to a patent applicable to software (including a cross-claim or 
-    counterclaim in a lawsuit), then any patent licenses granted by that 
-    Contributor to such Recipient under this Agreement shall terminate as of 
-    the date such litigation is filed. In addition, if Recipient institutes 
-    patent litigation against any entity (including a cross-claim or 
-    counterclaim in a lawsuit) alleging that the Program itself (excluding 
-    combinations of the Program with other software or hardware) infringes 
-    such Recipient's patent(s), then such Recipient's rights granted under 
-    Section 2(b) shall terminate as of the date such litigation is filed.
-
-    All Recipient's rights under this Agreement shall terminate if it fails 
-    to comply with any of the material terms or conditions of this Agreement 
-    and does not cure such failure in a reasonable period of time after 
-    becoming aware of such noncompliance. If all Recipient's rights under 
-    this Agreement terminate, Recipient agrees to cease use and distribution 
-    of the Program as soon as reasonably practicable. However, Recipient's 
-    obligations under this Agreement and any licenses granted by Recipient 
-    relating to the Program shall continue and survive.
-
-    Everyone is permitted to copy and distribute copies of this Agreement, 
-    but in order to avoid inconsistency the Agreement is copyrighted and may 
-    only be modified in the following manner. The Agreement Steward reserves 
-    the right to publish new versions (including revisions) of this 
-    Agreement from time to time. No one other than the Agreement Steward has 
-    the right to modify this Agreement. IBM is the initial Agreement 
-    Steward. IBM may assign the responsibility to serve as the Agreement 
-    Steward to a suitable separate entity. Each new version of the Agreement 
-    will be given a distinguishing version number. The Program (including 
-    Contributions) may always be distributed subject to the version of the 
-    Agreement under which it was received. In addition, after a new version 
-    of the Agreement is published, Contributor may elect to distribute the 
-    Program (including its Contributions) under the new version. Except as 
-    expressly stated in Sections 2(a) and 2(b) above, Recipient receives no 
-    rights or licenses to the intellectual property of any Contributor under 
-    this Agreement, whether expressly, by implication, estoppel or 
-    otherwise. All rights in the Program not expressly granted under this 
-    Agreement are reserved.
-
-    This Agreement is governed by the laws of the State of New York and the 
-    intellectual property laws of the United States of America. No party to 
-    this Agreement will bring a legal action under this Agreement more than 
-    one year after the cause of action arose. Each party waives its rights 
-    to a jury trial in any resulting litigation. 
-
-License: Apache-2.0
- On Debian systems the full text of the Apache License can be found
- in the `/usr/share/common-licenses/Apache-2.0' file.
-
-License: GPL-2+
- On Debian systems the full text of the GNU General Public License can be found
- in the `/usr/share/common-licenses/GPL' file.
-
-License: LGPL-2.1+
- On Debian systems the full text of the GNU Lesser General Public
- License can be found in the `/usr/share/common-licenses/LGPL-2.1' file.
diff --git a/debian/maven.rules b/debian/maven.rules
deleted file mode 100644
index 8dab587..0000000
--- a/debian/maven.rules
+++ /dev/null
@@ -1,3 +0,0 @@
-junit junit jar s/3\..*/3.x/
-s/ant/org.apache.ant/ * * s/.*/debian/
-s/qdox/com.thoughtworks.qdox/ * * s/.*/debian/
diff --git a/debian/orig-tar.exclude b/debian/orig-tar.exclude
deleted file mode 100644
index 7f9eab0..0000000
--- a/debian/orig-tar.exclude
+++ /dev/null
@@ -1,7 +0,0 @@
-ivy-*.jar
-commons-logging-*.jar
-spring*.jar
-guice-*.jar
-jarjar-issue-*.jar
-cobertura.jar
-gigaspaces/3rdparty/*
\ No newline at end of file
diff --git a/debian/orig-tar.sh b/debian/orig-tar.sh
deleted file mode 100755
index 7f3166a..0000000
--- a/debian/orig-tar.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh -e
-
-# called by uscan with '--upstream-version' <version> <file>
-DIR_ORIG=cbeust-testng-*/
-DIR_TARGET=testng-$2
-TAR=../testng_$2.orig.tar.gz
-
-# clean up the upstream tarball
-tar zxf $3
-mv $DIR_ORIG $DIR_TARGET
-tar -c -z -f $TAR -X debian/orig-tar.exclude $DIR_TARGET
-
-rm -rf $DIR_ORIG $DIR_TARGET $3
-
-# move to directory 'tarballs'
-if [ -r .svn/deb-layout ]; then
-    . .svn/deb-layout
-    mv $TAR $origDir
-    echo "moved $TAR to $origDir"
-fi
-
-exit 0
diff --git a/debian/patches/debian/disable-broken-qdox-tests.diff b/debian/patches/debian/disable-broken-qdox-tests.diff
deleted file mode 100644
index ee494ef..0000000
--- a/debian/patches/debian/disable-broken-qdox-tests.diff
+++ /dev/null
@@ -1,59 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: disable broken qdox tests
-
-Some tests were broken by an update of qdox in Debian to 1.11.
-
----
- .../test/converter/AnnotationConverterTest.java    |    6 +++---
- test/testng.xml                                    |    5 +++++
- 2 files changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/test/src/test/converter/AnnotationConverterTest.java b/test/src/test/converter/AnnotationConverterTest.java
-index c3f467f..eb452af 100644
---- a/test/src/test/converter/AnnotationConverterTest.java
-+++ b/test/src/test/converter/AnnotationConverterTest.java
-@@ -68,7 +68,7 @@ public class AnnotationConverterTest {
-     checkOutput(pkg, fileName, "@Parameters", expected[6]);
-   }
- 
--  @Test(parameters = { "source-directory" })
-+  @Test(groups = {"broken"}, parameters = { "source-directory" })
-   public void testAnnotations(String dir) {
-     runAnnotationTest(new File(dir), "test.sample", "ConverterSample3.java",
-       new List[] {
-@@ -77,7 +77,7 @@ public class AnnotationConverterTest {
-       });
-   }
- 
--  @Test(parameters = { "source-directory" })
-+  @Test(groups = {"broken"}, parameters = { "source-directory" })
-   public void testAnnotationsNoPackage(String dir) {
-     runAnnotationTest(new File(dir, "../../.."), "", "ConverterSample4.java",
-       new List[] {
-@@ -86,7 +86,7 @@ public class AnnotationConverterTest {
-       });
-   }
- 
--  @Test(parameters = { "source-directory" })
-+  @Test(groups = {"broken"}, parameters = { "source-directory" })
-   public void testQdoxExtractsLineNumbers(String dir) {
-     JavaDocBuilder builder = new JavaDocBuilder();
-     try {
-diff --git a/test/testng.xml b/test/testng.xml
-index 70a4d18..88003cd 100644
---- a/test/testng.xml
-+++ b/test/testng.xml
-@@ -496,6 +496,11 @@
-   </test>
- 
-   <test name="AnnotationConverter">
-+    <groups>
-+      <run>
-+        <exclude name="broken" />
-+      </run>
-+    </groups>
-     <parameter name="source-directory" value="test/src/test/sample" />
-     <classes>
-       <class name="test.converter.AnnotationConverterTest" />
--- 
-tg: (be9a7fb..) debian/disable-broken-qdox-tests (depends on: master)
diff --git a/debian/patches/debian/disable-broken-threading-tests.diff b/debian/patches/debian/disable-broken-threading-tests.diff
deleted file mode 100644
index a31cc92..0000000
--- a/debian/patches/debian/disable-broken-threading-tests.diff
+++ /dev/null
@@ -1,71 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: disable broken threading tests
-Bug: http://jira.opensymphony.com/browse/TESTNG-360
-
-The DataProviderThreadPoolSizeTest relies on broken assumptions about
-the thread pool of the ExecutorService. When a thread pool of fixed
-size is requested, it is not guaranteed that the maximum number of
-threads will ever be used. From the documentation of
-Executors.newFixedThreadPool():
-
-  "At any point, at most nThreads threads will be active processing tasks."
-
-In fact if each task finishes before the next one can be submitted,
-all the tasks could use a single thread.
-
----
- .../thread/DataProviderThreadPoolSizeTest.java     |    4 ++--
- .../test/thread/MultiThreadedDependentTest.java    |    2 +-
- test/src/test/thread/ThreadPoolSizeTest.java       |    2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/test/src/test/thread/DataProviderThreadPoolSizeTest.java b/test/src/test/thread/DataProviderThreadPoolSizeTest.java
-index a59da1f..356326b 100644
---- a/test/src/test/thread/DataProviderThreadPoolSizeTest.java
-+++ b/test/src/test/thread/DataProviderThreadPoolSizeTest.java
-@@ -8,7 +8,7 @@ import test.SimpleBaseTest;
- 
- public class DataProviderThreadPoolSizeTest extends SimpleBaseTest {
-   
--  @Test
-+  @Test(groups = {"broken"})
-   public void shouldUseDefaultDataProviderThreadCount() {
-     TestNG tng = create(DataProviderThreadPoolSizeSampleTest.class);
-     tng.setGroups("parallel");
-@@ -24,7 +24,7 @@ public class DataProviderThreadPoolSizeTest extends SimpleBaseTest {
-     Assert.assertEquals(DataProviderThreadPoolSizeSampleTest.m_threadIds.size(), 1);
-   }
- 
--  @Test
-+  @Test(groups = {"broken"})
-   public void shouldUseSpecifiedDataProviderThreadCount() {
-     TestNG tng = create(DataProviderThreadPoolSizeSampleTest.class);
-     tng.setGroups("parallel");
-diff --git a/test/src/test/thread/MultiThreadedDependentTest.java b/test/src/test/thread/MultiThreadedDependentTest.java
-index f311723..bb6bbe5 100644
---- a/test/src/test/thread/MultiThreadedDependentTest.java
-+++ b/test/src/test/thread/MultiThreadedDependentTest.java
-@@ -74,7 +74,7 @@ public class MultiThreadedDependentTest extends SimpleBaseTest {
-     Map<Long, Long> map = Helper.getMap(MultiThreadedDependentSampleTest.class.getName());
-     synchronized(map) {
-       tng.run();
--      Assert.assertEquals(map.size(), threadCount);
-+      Assert.assertTrue(map.size() <= threadCount, "used too many threads: " + map.size());
-       assertOrder(MultiThreadedDependentSampleTest.m_methods);
-     }
-   }
-diff --git a/test/src/test/thread/ThreadPoolSizeTest.java b/test/src/test/thread/ThreadPoolSizeTest.java
-index eef2764..5a8b2c4 100644
---- a/test/src/test/thread/ThreadPoolSizeTest.java
-+++ b/test/src/test/thread/ThreadPoolSizeTest.java
-@@ -23,7 +23,7 @@ public class ThreadPoolSizeTest {
-     m_threadIds.put(n,n);
-   }
-   
--  @Test(dependsOnMethods = {"f1"})
-+  @Test(dependsOnMethods = {"f1"}, groups = {"broken"})
-   public void verify() {
-     int expected = 3;
-     Assert.assertEquals(m_threadIds.size(), expected,  
--- 
-tg: (be9a7fb..) debian/disable-broken-threading-tests (depends on: master)
diff --git a/debian/patches/debian/exclude-3rdparty-jars.diff b/debian/patches/debian/exclude-3rdparty-jars.diff
deleted file mode 100644
index 6365b47..0000000
--- a/debian/patches/debian/exclude-3rdparty-jars.diff
+++ /dev/null
@@ -1,138 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: Do not include third-party libraries in the jar file
-Forwarded: not-needed
-
----
- build.xml          |   24 +++++++++---------------
- test/ant/build.xml |   16 +++++++++++++---
- 2 files changed, 22 insertions(+), 18 deletions(-)
-
-diff --git a/build.xml b/build.xml
-index d05c9a8..5c8ef96 100644
---- a/build.xml
-+++ b/build.xml
-@@ -134,6 +134,7 @@
- 
-     <javac classpathref="compile2.cp"
-            verbose="false"
-+           source="1.5"
-            target="1.5"
-            debug="true"
-            optimize="${optimize}"
-@@ -207,7 +208,7 @@
- 
-   <target name="dist-jar" depends="dist-14,dist-15" />
- 
--  <target name="dist-14" depends="compile-14,dist-14-bsh" >
-+  <target name="dist-14" depends="compile-14,dist-14-no3rdparty" >
-    </target>
- 
-   <target name="dist-14-bsh">
-@@ -227,15 +228,13 @@
-     </jar>
-   </target>
-   
--  <target name="dist-14-nobsh">
--    <antcall target="clean-unjar" />
--    <antcall target="extract-concurrent-jar" />
--    <jar destfile="${other.jars.dir}/${jdk14.testng.nobsh.jar}" update="true">
-+  <target name="dist-14-no3rdparty">
-+    <delete quiet="true" file="${jdk14.testng.jar}" />
-+    <jar destfile="${jdk14.testng.jar}">
-       <manifest>
-         <attribute name="Main-Class" value="org.testng.TestNG" />
-       	<attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
-       </manifest>
--      <fileset dir="${build.3rdparty.dir}" />
-       <fileset dir="${build.jdk14.dir}" />
-       <fileset file="TESTNG-${testng.version}" />
-     </jar>
-@@ -264,7 +263,7 @@
-            overwrite="true" />
-   </target>
- 
--  <target name="dist-15" depends="compile-15, dist-15-bsh">
-+  <target name="dist-15" depends="compile-15, dist-15-no3rdparty">
-   </target>
-     
-   <target name="dist-15-bsh">
-@@ -283,16 +282,14 @@
-     </jar>
-   </target>
-   
--  <target name="dist-15-nobsh">
--    <antcall target="clean-unjar" />
--    <antcall target="extract-qdox-jar" />
--    <jar destfile="${other.jars.dir}/${jdk15.testng.nobsh.jar}" update="true">
-+  <target name="dist-15-no3rdparty">
-+    <delete quiet="true" file="${jdk15.testng.jar}" />
-+    <jar destfile="${jdk15.testng.jar}">
-       <manifest>
-         <attribute name="Main-Class" value="org.testng.TestNG" />
-       	<attribute name="Implementation-Version" value="${testng.version}-${DSTAMP}${TSTAMP}" />
-       </manifest>
-       <fileset dir="${build.jdk15.dir}" />
--      <fileset dir="${build.3rdparty.dir}" />
-       <fileset file="TESTNG-${testng.version}" />
-     </jar>
-   </target>
-@@ -321,9 +318,6 @@
-                   prefix="${zip.dir}/test-14"
-                   includes="**/*.properties,**/*.java,build.xml,testng.xml"
-                   excludes="test-output/**,report/**,v4/**" />
--      <zipfileset dir="3rdparty"
--                  prefix="${zip.dir}/3rdparty"
--                  includes="${qdox.jar},${beanshell.jar},${concurrent.jar}" />
-     </zip>
-   </target>
-   
-diff --git a/test/ant/build.xml b/test/ant/build.xml
-index 15e78a5..acb495c 100644
---- a/test/ant/build.xml
-+++ b/test/ant/build.xml
-@@ -4,6 +4,16 @@
-   <property name="this.directory" value="test/ant" />
-   <property name="test-output" value="${this.directory}/test-output" />
- 
-+  <path id="run.cp">
-+      <fileset dir="${lib.dir}">
-+        <include name="${beanshell.jar}" />
-+        <include name="${qdox.jar}" />
-+      </fileset>
-+      <pathelement location="${this.directory}/build"/>
-+      <pathelement location="${jdk15.testng.jar}"/>
-+      <pathelement location="${java.home}/../lib/tools.jar"/>
-+  </path>
-+
-   <taskdef name="testng" classname="org.testng.TestNGAntTask" 
-   	classpath="${jdk15.testng.jar}" />
- 
-@@ -24,7 +34,7 @@
- 	<delete failonerror="false">
- 	<fileset dir="${test-output}" includes="**"/></delete>
-   	
--    <testng classpath="${this.directory}/build;${jdk15.testng.jar}"
-+    <testng classpathref="run.cp"
-             outputdir="${test-output}"
-   	    parallel="methods"
-   	    threadcount="5"
-@@ -42,7 +52,7 @@
-   	<fail unless="test.exists" 
-   		message="The appropriately named output should have been created"/>
-   	
--    <testng classpath="${this.directory}/build;${jdk15.testng.jar}"
-+    <testng classpathref="run.cp"
-             outputdir="${test-output}"
- 	   	listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
-     	haltonfailure="true"
-@@ -59,7 +69,7 @@
-   	<fail unless="test2.exists" message="The appropriately named output should have been created"/>
-   	
-   	<!-- Ensure standard tests get run -->
--    <testng classpath="${this.directory}/build;${jdk15.testng.jar}"
-+    <testng classpathref="run.cp"
-             outputdir="${test-output}"
-     	listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
-     	haltonfailure="true"
--- 
-tg: (7194ff8..) debian/exclude-3rdparty-jars (depends on: master)
diff --git a/debian/patches/debian/junitconvertor-test-fix.diff b/debian/patches/debian/junitconvertor-test-fix.diff
deleted file mode 100644
index 696e188..0000000
--- a/debian/patches/debian/junitconvertor-test-fix.diff
+++ /dev/null
@@ -1,52 +0,0 @@
-Description: Switches JUnitConverter test to use Parameters annotation to 
- pickup source-directory for tests.  This resolves a FTBFS seen in Ubuntu
- Oneiric but not in earlier releases and is present in the upstream release
- as well went build on Oneiric
- .
- This test is no longer executed in the next release of testng so not
- forwarding upstream. 
-Author: James Page <james.page at ubuntu.com>
-Forwarded: not-needed
-
-Index: testng/test/src/test/converter/JUnitConverterTest.java
-===================================================================
---- testng.orig/test/src/test/converter/JUnitConverterTest.java	2011-09-20 08:49:59.668342142 +0100
-+++ testng/test/src/test/converter/JUnitConverterTest.java	2011-09-20 08:51:09.178496996 +0100
-@@ -3,6 +3,7 @@
- import org.testng.Assert;
- import org.testng.JUnitConverter;
- import org.testng.annotations.Test;
-+import org.testng.annotations.Parameters;
- 
- import java.io.BufferedReader;
- import java.io.File;
-@@ -102,25 +103,25 @@
-     runTest(sourcePath, pkg, fileName, "@AfterMethod", "-annotation", expected[2]);
-   }
- 
--  @Test(parameters = { "source-directory" })
-+  @Parameters({ "source-directory" })
-   public void testAnnotations(String dir) {
-     runAnnotationTest(new File(dir),  "test.converter", "ConverterSample1.java", 
-         new List[] { Arrays.asList(23, 30, 35), Arrays.asList(9), Arrays.asList(18) });
-   }
-   
--  @Test(parameters = { "source-directory" })
-+  @Parameters({ "source-directory" })
-   public void testAnnotationsNoPackage(String dir) {
-     runAnnotationTest(new File(dir, "../../.."),  "", "ConverterSample2.java", 
-         new List[] { Arrays.asList(23, 30, 35), Arrays.asList(9), Arrays.asList(18) });
-   }
-   
--  @Test(parameters = { "source-directory" })
-+  @Parameters({ "source-directory" })
-   public void testJavaDoc(String dir) {
-     runJavaDocTest(new File(dir),  "test.converter", "ConverterSample1.java", 
-         new List[] { Arrays.asList(25, 34, 41), Arrays.asList(7), Arrays.asList(18) });
-   }
- 
--  @Test(parameters = { "source-directory" })
-+  @Parameters({ "source-directory" })
-   public void testJavaDocNoPackage(String dir) {
-     runJavaDocTest(new File(dir, "../../.."),  "", "ConverterSample2.java",
-         new List[] { Arrays.asList(25, 34, 41), Arrays.asList(7), Arrays.asList(18) });
diff --git a/debian/patches/debian/stop-on-test-failure.diff b/debian/patches/debian/stop-on-test-failure.diff
deleted file mode 100644
index 905ef29..0000000
--- a/debian/patches/debian/stop-on-test-failure.diff
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: Stop the build if there are any failed tests
-
----
- test/build.xml |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/test/build.xml b/test/build.xml
-index a0802ca..7f97bdf 100644
---- a/test/build.xml
-+++ b/test/build.xml
-@@ -85,7 +85,7 @@ TESTNG.REPORT.DIR=${testng.report.dir}
-   <target name="run" description="Run tests" depends="compile">
- 		<echo message="                                 -- Running JDK 1.5 tests --"/>
- 		<echo message="                                 -- ${jdk15.testng.jar} --" />
--		<testng classpathref="run.cp"
-+		<testng classpathref="run.cp" haltonfailure="true"
-             outputdir="${testng.report.dir}">
- 			<xmlfileset dir="${test15.dir}" includes="testng.xml"/>
- 		</testng>
--- 
-tg: (7194ff8..) debian/stop-on-test-failure (depends on: master)
diff --git a/debian/patches/features/build-without-dtddoc.diff b/debian/patches/features/build-without-dtddoc.diff
deleted file mode 100644
index fc932cf..0000000
--- a/debian/patches/features/build-without-dtddoc.diff
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: Allow building without DTDDoc
-
----
- build.xml |    4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/build.xml b/build.xml
-index d05c9a8..9df515a 100644
---- a/build.xml
-+++ b/build.xml
-@@ -375,10 +375,10 @@
-     <copy file="${jdk15.testng.jar}" tofile="${jdk15.jar}" />
-   </target>
- 
--  <taskdef name="DTDDoc" classname="DTDDoc.DTDDocTask"
-+  <target name="dtd">
-+    <taskdef name="DTDDoc" classname="DTDDoc.DTDDocTask"
-      classpath="lib/DTDDoc.jar"/>
- 
--  <target name="dtd">
-     <DTDDoc showHiddenTags="false"
-             showFixmeTags="false"
-             sourceDir="src/main"
--- 
-tg: (7194ff8..) features/build-without-dtddoc (depends on: master)
diff --git a/debian/patches/features/qdox-1.9.diff b/debian/patches/features/qdox-1.9.diff
deleted file mode 100644
index 6adc871..0000000
--- a/debian/patches/features/qdox-1.9.diff
+++ /dev/null
@@ -1,50 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: Upgrade to qdox 1.9
-Author: Ludovic Claude <ludovic.claude at laposte.net>
-Bug: http://code.google.com/p/testng/issues/detail?id=63
-
-Reviewed-by: Marcus Better <marcus at better.se>
-
----
- .../testng/internal/AnnotationTestConverter.java   |   12 ++++++++----
- 1 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/src/main/org/testng/internal/AnnotationTestConverter.java b/src/main/org/testng/internal/AnnotationTestConverter.java
-index adbbe99..59109f1 100644
---- a/src/main/org/testng/internal/AnnotationTestConverter.java
-+++ b/src/main/org/testng/internal/AnnotationTestConverter.java
-@@ -115,7 +115,7 @@ public class AnnotationTestConverter {
-     Class<IAnnotation> annotationClass= m_annotationMap.get(tag.getName());
-     if(annotationClass == null) {
-       ppp("Found unknown testng annotation " + tag.getName() + " in file "
--          + tag.getContext().getSource().getFile().getAbsolutePath() + " at line "
-+          + tag.getContext().getParent().getParentSource().getFile().getAbsolutePath() + " at line "
-           + tag.getLineNumber());
- 
-       // preserve the information - but it looks like an invalid tag
-@@ -128,7 +128,7 @@ public class AnnotationTestConverter {
-     }
-     catch(Exception e) {
-       ppp("Found unknown testng parameter " + key + " in annotation " + tag.getName() + " in file "
--          + tag.getContext().getSource().getFile().getAbsolutePath() + " at line "
-+          + tag.getContext().getParent().getParentSource().getFile().getAbsolutePath() + " at line "
-           + tag.getLineNumber());
- 
-       // preserve the information - but it looks like an invalid parameter
-@@ -278,8 +278,12 @@ public class AnnotationTestConverter {
-         List<String> finalLines= insertAnnotations(source, lines);
- 
-         if(finalLines.size() > lineCount) {
--          ppp("Writing file " + file.getAbsolutePath());
--          writeFile(file, source.getPackage(), finalLines);
-+          ppp("Writing file " + file.getAbsolutePath());
-+          if (source.getPackage() == null) {
-+            writeFile(file, null, finalLines);
-+          } else {
-+            writeFile(file, source.getPackage().getName(), finalLines);
-+          }
-           converted++;
-         }
-       }
--- 
-tg: (391649e..) features/qdox-1.9 (depends on: upstream)
diff --git a/debian/patches/features/scope-qdox-bsh.diff b/debian/patches/features/scope-qdox-bsh.diff
deleted file mode 100644
index beab494..0000000
--- a/debian/patches/features/scope-qdox-bsh.diff
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: Fix scope for qdox and bsh dependencies
-Bug: http://jira.opensymphony.com/browse/TESTNG-361
-
-bsh and qdox are runtime dependencies of TestNG, so they should not
-have "provided" scope.
-
----
- bundle-pom.xml |    2 --
- 1 files changed, 0 insertions(+), 2 deletions(-)
-
-diff --git a/bundle-pom.xml b/bundle-pom.xml
-index a803835..df2b98a 100644
---- a/bundle-pom.xml
-+++ b/bundle-pom.xml
-@@ -45,13 +45,11 @@
-             <groupId>qdox</groupId>
-             <artifactId>qdox</artifactId>
-             <version>1.6.1</version>
--            <scope>provided</scope>
-         </dependency>
-         <dependency>
-             <groupId>org.beanshell</groupId>
-             <artifactId>bsh</artifactId>
-             <version>2.0b4</version>
--            <scope>provided</scope>
-         </dependency>
-     </dependencies>    
-     
--- 
-tg: (7194ff8..) features/scope-qdox-bsh (depends on: master)
diff --git a/debian/patches/features/threadsafe-collections-in-tests.diff b/debian/patches/features/threadsafe-collections-in-tests.diff
deleted file mode 100644
index 9f47c6f..0000000
--- a/debian/patches/features/threadsafe-collections-in-tests.diff
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Marcus Better <marcus at better.se>
-Subject: use threadsafe collections in threaded tests
-Bug: http://jira.opensymphony.com/browse/TESTNG-404
-
-The ConfigurationGroupBothSampleTest modifies a non-threadsafe
-collection within a test method that is invoked concurrently from two
-threads. This can cause the test to fail.
-
----
- .../ConfigurationGroupBothSampleTest.java          |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git a/test/src/test/configuration/ConfigurationGroupBothSampleTest.java b/test/src/test/configuration/ConfigurationGroupBothSampleTest.java
-index 1d4e4d5..b919565 100644
---- a/test/src/test/configuration/ConfigurationGroupBothSampleTest.java
-+++ b/test/src/test/configuration/ConfigurationGroupBothSampleTest.java
-@@ -1,6 +1,7 @@
- package test.configuration;
- 
- import java.util.ArrayList;
-+import java.util.Collections;
- import java.util.List;
- 
- import org.testng.annotations.AfterGroups;
-@@ -9,7 +10,7 @@ import org.testng.annotations.DataProvider;
- import org.testng.annotations.Test;
- 
- public class ConfigurationGroupBothSampleTest {
--  static List<Integer> m_list = new ArrayList<Integer>();
-+  static List<Integer> m_list = Collections.synchronizedList(new ArrayList<Integer>());
-   
-   @BeforeGroups(groups={"twice"}, value={"twice"})
-   public void a(){
--- 
-tg: (6f1f2af..) features/threadsafe-collections-in-tests (depends on: master)
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 77b6b46..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,9 +0,0 @@
-debian/disable-broken-qdox-tests.diff -p1
-debian/disable-broken-threading-tests.diff -p1
-debian/exclude-3rdparty-jars.diff -p1
-debian/stop-on-test-failure.diff -p1
-debian/junitconvertor-test-fix.diff -p1
-features/build-without-dtddoc.diff -p1
-features/qdox-1.9.diff -p1
-features/scope-qdox-bsh.diff -p1
-features/threadsafe-collections-in-tests.diff -p1
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index adb4d87..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/make -f
-
--include /usr/share/quilt/quilt.make
--include /usr/share/topgit/tg2quilt.mk
-
-DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-
-JAVA_HOME := /usr/lib/jvm/default-java/
-
-
-DEB_JARS 	:= ant ant-launcher ant-junit ant-trax ant-nodeps com-sun-javadoc
-
-DEB_CLASSPATH = $(shell for jar in $(DEB_JARS:%=/usr/share/java/%.jar); do \
-				echo -n $${jar}:; done; \
-				echo -n $(JAVA_HOME)/lib/tools.jar)
-
-VERSION		:= $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2 | cut -d- -f1 | cut -d+ -f1)
-ANT_ARGS	:= -propertyfile debian/ant.properties -Dtestng.version=$(VERSION)
-ANT			:= $(JAVA_HOME)/bin/java -classpath $(DEB_CLASSPATH) \
-				org.apache.tools.ant.Main $(ANT_ARGS)
-
-PKG			:= testng
-INSTALL_DIR	:= $(CURDIR)/debian/$(PKG)
-JAVA_LIB_DIR := $(INSTALL_DIR)/usr/share/java
-
-build: build-stamp
-build-stamp:
-	dh build
-	touch build-stamp
-
-override_dh_auto_build:
-	$(ANT) dist-maven-bundle
-ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
-	$(ANT) test-15 test-15-jdk14 test-ant
-endif
-
-clean:
-	dh clean
-	rm -f build-stamp install-stamp
-	$(ANT) clean
-	rm -rf javadocs test-output build test/ant/build test/ant/test-output
-
-install: build install-stamp
-install-stamp:
-	dh install --before dh_compress
-	dh_compress -X.js
-	dh install --remaining
-	mh_installpoms -p$(PKG)
-	for jdk in 14 15; do \
-      install -m 644 $(PKG)-jdk$$jdk.jar $(JAVA_LIB_DIR)/$(PKG)-jdk$$jdk-$(VERSION).jar; \
-      ln -s $(PKG)-jdk$$jdk-$(VERSION).jar $(JAVA_LIB_DIR)/$(PKG)-jdk$$jdk.jar; \
-	  mh_linkjar -p$(PKG) --classifier=jdk$$jdk build/maven-bundle/pom.xml usr/share/java/$(PKG)-jdk$$jdk-$(VERSION).jar; \
-	done
-	ln -s $(PKG)-jdk15.jar $(JAVA_LIB_DIR)/$(PKG).jar
-	mv $(INSTALL_DIR)-doc/usr/share/doc/$(PKG)-doc/javadocs $(INSTALL_DIR)-doc/usr/share/doc/$(PKG)/api
-	mv $(INSTALL_DIR)-doc/usr/share/doc/$(PKG)-doc/examples $(INSTALL_DIR)-doc/usr/share/doc/$(PKG)
-	touch install-stamp
-
-binary-arch: install
-	dh binary-arch
-
-binary-indep: install
-	dh binary-indep
-
-binary: binary-indep binary-arch
-
-.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides
deleted file mode 100644
index c11b982..0000000
--- a/debian/source.lintian-overrides
+++ /dev/null
@@ -1,4 +0,0 @@
-# Our quilt patches are generated by topgit. The remaining changes
-# are from the "master" branch which is intentionally not managed
-# by topgit.
-testng source: patch-system-but-direct-changes-in-diff
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644
index 163aaf8..0000000
--- a/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/debian/testng-doc.dirs b/debian/testng-doc.dirs
deleted file mode 100644
index f60fdfe..0000000
--- a/debian/testng-doc.dirs
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/doc/testng
diff --git a/debian/testng-doc.doc-base b/debian/testng-doc.doc-base
deleted file mode 100644
index 8771473..0000000
--- a/debian/testng-doc.doc-base
+++ /dev/null
@@ -1,9 +0,0 @@
-Document: testng
-Title: API Javadoc for TestNG
-Author: TestNG developers
-Abstract: API documentation for the TestNG testing framework
-Section: Programming
-
-Format: HTML
-Index: /usr/share/doc/testng/api/index.html
-Files: /usr/share/doc/testng/api/*
diff --git a/debian/testng-doc.docs b/debian/testng-doc.docs
deleted file mode 100644
index aa8133c..0000000
--- a/debian/testng-doc.docs
+++ /dev/null
@@ -1 +0,0 @@
-javadocs
diff --git a/debian/testng-doc.examples b/debian/testng-doc.examples
deleted file mode 100644
index e39721e..0000000
--- a/debian/testng-doc.examples
+++ /dev/null
@@ -1 +0,0 @@
-examples/*
diff --git a/debian/testng.dirs b/debian/testng.dirs
deleted file mode 100644
index b67bc01..0000000
--- a/debian/testng.dirs
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/java
diff --git a/debian/testng.docs b/debian/testng.docs
deleted file mode 100644
index 30d29de..0000000
--- a/debian/testng.docs
+++ /dev/null
@@ -1 +0,0 @@
-doc/*
diff --git a/debian/testng.poms b/debian/testng.poms
deleted file mode 100644
index 6b6ff75..0000000
--- a/debian/testng.poms
+++ /dev/null
@@ -1 +0,0 @@
-build/maven-bundle/pom.xml --no-parent
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index fa998ed..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,3 +0,0 @@
-version=3
-https://github.com/cbeust/testng/tags .*/tarball/testng-(\d[\d\.]+) \
-debian debian/orig-tar.sh
diff --git a/doc/ant.html b/doc/ant.html
deleted file mode 100644
index d23b9f2..0000000
--- a/doc/ant.html
+++ /dev/null
@@ -1,347 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - Ant</title>
-
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-        <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-        <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-        <script type="text/javascript" src="banner.js"></script>
-
-        <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
-        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
-        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
-        <script type="text/javascript">
-          SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
-          SyntaxHighlighter.defaults['gutter'] = false;
-          SyntaxHighlighter.all();
-        </script>
-
-</head>
-
-<body onLoad="prettyPrint()">
-
-<script type="text/javascript">
-    displayMenu("ant.html")
-</script>
-
-<h2 align="center">TestNG Ant Task</h2>
-<p>You define the TestNG ant task as follows:</p>
-
-<pre class="brush: xml">
-<taskdef resource="testngtasks" classpath="testng.jar"/>
-</pre>
-
-This task runs TestNG tests and is always run in a forked JVM.  It 
-accepts the following attributes: <br>
- <table border="2" id="table1">
-	<tr>
-		<th>Attribute </th>
-		<th>Description </th>
-		<th>Required </th>
-	</tr>
-		<tr>
-		<td><tt>annotations</tt> </td>
-		<td>Either the string "JDK" or "Javadoc".  Defines which kind of annotations are used in these tests.
-		If you use "Javadoc", you will also need to specify "sourcedir".</td>
-		<td>No.  Defaults to "JDK" if you're using the JDK 5 jar and to "Javadoc" if you're using the JDK 1.4 jar.</td>
-	</tr>
-
-	<tr>
-		<td><tt>classfilesetref</tt> </td>
-		<td>A reference to a
-		<a href="http://ant.apache.org/manual/CoreTypes/fileset.html">FileSet</a> 
-		structure of the test classes to be run. </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td><tt>classpath</tt> </td>
-		<td>A PATH-like structure for the tests to be run. </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td><tt>classpathref</tt> </td>
-		<td>A reference to a PATH-like structure for the tests to be run. </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td><tt>dataProviderThreadCount</tt> </td>
-		<td>The number of threads to use for data providers
-		for this run. Ignored unless the parallel mode is also specified</td>
-		<td>1</td>
-	</tr>
-	<tr>
-		<td><tt>delegateCommandSystemProperties</tt> </td>
-		<td>Pass the command line properties as system properties.</td>
-		<td>No. Defaults to false </td>
-	</tr>
-	<tr>
-		<td><tt>dumpCommand</tt> </td>
-		<td>Print the TestNG launcher command. </td>
-		<td>No. Defaults to false </td>
-	</tr>
-	<tr>
-		<td><tt>enableAssert</tt> </td>
-		<td>Enables JDK 1.4 assertion. </td>
-		<td>No. Defaults to true </td>
-	</tr>
-	<tr>
-		<td><tt>failureProperty</tt> </td>
-		<td>The name of a property to set in the event of a failure. It is used 
-		only if the <tt>haltonfailure</tt> is not set. </td>
-		<td>No.</td>
-	</tr>
-	<tr>
-		<td><tt>haltonfailure</tt> </td>
-		<td>Stop the build process if a failure has occurred during the test 
-		run. </td>
-		<td>No. Defaults to false 
-		</td>
-		<td> </td>
-	</tr>
-	<tr>
-		<td><tt>haltonskipped</tt> </td>
-		<td>Stop the build process if there is at least on skipped test. </td>
-		<td>No. Default to false </td>
-	</tr>
-	<tr>
-	  <td><tt>groups</tt></td>
-	  <td>
-   	The list of groups to run, separated by spaces or commas.</td>
-	  <td>
-   	</td>
-	</tr>
-	<tr>
-	  <td><tt>excludedgroups</tt></td>
-	  <td>
-   	The list of groups to exclude, separated by spaces or commas</td>
-	  <td>
-   	</td>
-	</tr>
-	<tr>
-		<td><tt>jvm</tt></td>
-		<td>The JVM to use, which will be run by <tt>Runtime.exec()</tt></td>
-		<td><tt>java</tt></td>
-	</tr>
-	<tr>
-		<td><tt>listeners</tt></td>
-		<td>A comma or space-separated list of fully qualified classes that are TestNG listeners (for example<tt>
-		<a href="http://testng.org/javadocs/org/testng/ITestListener.html">
-		org.testng.ITestListener</a></tt> or <tt>
-		<a href="http://testng.org/javadocs/org/testng/IReporter.html">
-		org.testng.IReporter</a>)</tt></td>
-		<td>No.</td>
-	</tr>
-	<tr>
-		<td><tt>outputdir</tt> </td>
-		<td>Directory for reports output. 
-		</td>
-		<td>No. Defaults to <tt>test-output</tt>. </td>
-	</tr>
-	<tr>
-		<td><tt>skippedProperty</tt> </td>
-		<td>The name of a property to set in the event of a skipped test. It is 
-		used only if the <tt>haltonskipped</tt> is not set. </td>
-		<td>No. </td>
-	</tr>
-	<tr>
-		<td><tt>sourcedir</tt> </td>
-		<td>A PATH-like structure for JDK 1.4 tests (using JavaDoc-like 
-		annotations) 
-		</td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td><tt>sourcedirref</tt> 
-		</td>
-		<td>A reference to a PATH-like structure for JDK 1.4 tests (using 
-		JavaDoc-like annotations). </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td><tt>suiteRunnerClass</tt> </td>
-		<td>A fully qualified name of a TestNG starter. </td>
-		<td>
-		<p align="left">No.  Defaults to <tt>
-		<a href="http://testng.org/javadocs/org/testng/TestNG.html">org.testng.TestNG</a> </tt></td>
-	</tr>
-	
-	<tr>
-		<td><tt>parallel</tt> </td>
-		<td>The parallel mode to use for running the tests - either methods or tests</td>
-		<td>No - if not present, parallel mode will not be selected</td>
-	</tr>
-	<tr>
-		<td><tt>threadCount</tt> </td>
-		<td>The number of threads to use for this run. Ignored unless the parallel mode is also specified</td>
-		<td>1</td>
-	</tr>
-
-	<tr>
-		<td><tt>testJar</tt> </td>
-		<td>Path to a jar containing tests and a suite definition. </td>
-		<td> </td>
-	</tr>
-	<tr>
-		<td><tt>timeOut</tt></td>
-		<td>The maximum time out in milliseconds that all the tests should run 
-		under.</td>
-		<td> </td>
-	</tr>
-	<tr>
-		<td><tt>useDefaultListeners</tt></td>
-		<td>Whether the default listeners and reporters should be used.</td>
-		<td>Defaults to true.</td>
-	</tr>
-	<tr>
-		<td><tt>workingDir</tt></td>
-		<td>The directory where the ant task should change to before running 
-		TestNG.</td>
-		<td> </td>
-	</tr>
-	<tr>
-		<td><tt>xmlfilesetref</tt> </td>
-		<td>A reference to a
-		<a href="http://ant.apache.org/manual/CoreTypes/fileset.html">FileSet</a> 
-		structure for the suite definitions to be run. </td>
-		<td>  </td>
-	</tr>
-	<tr>
-		<td><tt>suitename</tt> </td>
-		<td>Sets the default name of the test suite, if one is not specified in a suite xml file or in the source code</td>
-		<td>No. Defaults to "Ant suite"</td>
-	</tr>
-	<tr>
-		<td><tt>testname</tt> </td>
-		<td>Sets the default name of the test, if one is not specified in a suite xml file or in the source code</td>
-		<td>No. defaults to "Ant test"</td>
-	</tr>
-</table>
-<br>
-One of attributes <tt>classpath</tt>, <tt>classpathref</tt> or nested <tt>
-<classpath></tt> must be used for providing the tests classpath. 
-<p>One of the attributes <tt>xmlfilesetref</tt>, <tt>classfilesetref</tt> or 
-nested <tt><xmlfileset></tt>, respectively <tt><classfileset></tt> must be used 
-for providing the tests. </p>
-<p><u>Note</u>: if using JDK 1.4 one of the attributes <tt>sourcedir</tt>, <tt>
-sourcedirref</tt> or the nested <tt><sourcedir></tt> must be provided. </p>
-<p><u>Note</u>: using <tt><classfileset></tt> doesn't automatically adds the 
-test classes to your classpath: you might need to repeat these classes in the 
-classpath for the task to work.</p>
-<h3><a name="nested">Nested Elements</a></h3>
-<h4>classpath</h4>
-<p>The <tt><testng></tt> task supports a nested <tt><classpath></tt> element 
-that represents a <em>PATH</em>-like structure. </p>
-<h4>bootclasspath</h4>
-<p>The location of bootstrap class files can be specified using this <em>
-PATH-like</em> structure - will be ignored if <tt>fork </tt>is not set. </p>
-<h4>xmlfileset</h4>
-<p>The suite definitions (<tt>testng.xml</tt>) can be passed to the task with a
-<tt><a href="http://ant.apache.org/manual/CoreTypes/fileset.html">FileSet</a></tt> 
-structure. </p>
-<h4>classfileset</h4>
-<p>TestNG can also run directly on classes, also supplied with a <tt>
-<a href="http://ant.apache.org/manual/CoreTypes/fileset.html">FileSet</a></tt> 
-structure.</p>
-<h4>sourcedir</h4>
-<p>A PATH-like structure for JDK 1.4 tests using Javadoc annotations. </p>
-<h4>jvmarg</h4>
-<p>Additional parameters may be passed to the new VM via nested <tt><jvmarg></tt> 
-elements. For example: </p>
-
-<pre class="brush: xml">
-<testng>
-   <jvmarg value="-Djava.compiler=NONE" />
-   <!-- ... -->
-</testng>
-</pre>
-
-<h4>sysproperty</h4>
-<p>Use nested <tt><sysproperty></tt> elements to specify system properties 
-required by the class. These properties will be made available to the virtual 
-machine during the execution of the test. The attributes for this element are 
-the same as for <em>environment variables</em>:</p>
-
-<pre class="brush: xml">
-<testng>
-   <sysproperty key="basedir" value="${basedir}"/>
-   <!-- ... -->
-</testng>
-</pre>
-
-<p>will run the test and make the <code>basedir</code> property 
-available to the test.</p>
-
-<h4>reporter</h4>
-<p>An inner <tt><reporter></tt> element is an alternative way to inject a
-custom report listener allowing the user to set custom properties in order to fine-tune
-the behavior of the reporter at run-time.
-<br>
-The element has one <tt>classname</tt> attribute which is mandatory, indicating
-the class of the custom listener. In order to set the properties of the reporter, the
-<tt><reporter></tt> element can contain several nested <tt><property></tt>
-elements which will provide the <tt>name</tt> and <tt>value</tt> attributes as seen below:
-</p>
-<pre class="brush: xml">
-<testng ...>
-   ...
-   <reporter classname="com.test.MyReporter">
-      <property name="methodFilter" value="*insert*"/>
-      <property name="enableFiltering" value="true"/>
-   </reporter>
-   ...
-</testng>
-</pre>
-<pre class="brush: java">
-public class MyReporter {
-
-  public String getMethodFilter() {...}
-  public void setMethodFilter(String methodFilter) {...}
-  public boolean isEnableFiltering() {...}
-  public void setEnableFiltering(boolean enableFiltering) {...}
-  ...
-}
-</pre>
-You have to consider though that for the moment only a limited set of property types are supported:
-<tt>String, int, boolean, byte, char, double, float, long, short</tt>.
-
-<h4>env</h4>
-<p>It is possible to specify environment variables to pass to the TestNG forked 
-virtual machine via nested <tt><env></tt> elements. For a description of the <tt>
-<env></tt> element's attributes, see the description in the <em>
-<a href="http://ant.apache.org/manual/CoreTasks/exec.html">exec</a></em> task.</p>
-<h3>Examples</h3>
-<h4>Suite xml</h4>
-
-<pre class="brush: text">
-<testng classpathref="run.cp"
-        outputDir="${testng.report.dir}"
-        sourcedir="${test.src.dir}"
-        haltOnfailure="true">
- 
-   <xmlfileset dir="${test14.dir}" includes="testng.xml"/>
-</testng>
-</pre>
-
-<h4>Class FileSet</h4>
-<pre class="brush: xml">
-<testng classpathref="run.cp"
-		outputDir="${testng.report.dir}"
-		haltOnFailure="true"M verbose="2">
-	<classfileset dir="${test.build.dir}" includes="**/*.class" />
-</testng>
-</pre>
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-</body>
-
-</html>
diff --git a/doc/banner.js b/doc/banner.js
deleted file mode 100644
index 7144925..0000000
--- a/doc/banner.js
+++ /dev/null
@@ -1,50 +0,0 @@
-//****************************************************************
-// Writes a table data element to the document. If pHRef equals
-// pCurrentPage then 'class="current"' is added to the td element.
-// For example:
-//    writeTD("a.html", "a.html", "b")
-// Would write
-//    <td class="current"><a href="a.html">b</a><td>
-//
-// @param pCurrentPage the current page. For example "index.html"
-// @param pHRef the string that should apear in the href
-// @param pValue the string that should apear as the value
-//****************************************************************
-function writeTD(pCurrentPage, pHRef, pValue)
-{
-   document.write('                <td')
-   document.write(pCurrentPage == pHRef ? ' class="current"' : '')
-   document.write('><a href="')
-   document.write(pHRef)
-   document.write('">')
-   document.write(pValue)
-   document.writeln('</a></td>')
-}
-
-//******************************************************************
-// Writes the main menu to the document.
-// @param pCurrentPage the current page. For example "index.html"
-//******************************************************************
-function displayMenu(pCurrentPage) {
-   document.writeln('<div id="topmenu">')
-   document.writeln('    <table width="100%">')
-   document.writeln('            <tr>')
-       writeTD(pCurrentPage,             "index.html", "Welcome")
-       writeTD(pCurrentPage,          "download.html", "Download")
-       writeTD(pCurrentPage,"documentation-main.html", "Documentation")
-       writeTD(pCurrentPage,         "migrating.html", "Migrating from JUnit")
-       writeTD(pCurrentPage, "../javadocs/index.html", "JavaDoc")
-       writeTD(pCurrentPage,              "book.html", "<em>Book (NEW!)</em>")
-   document.writeln('            </tr>')
-   document.writeln('            <tr>')
-       writeTD(pCurrentPage,           "eclipse.html", "Eclipse")
-       writeTD(pCurrentPage,              "idea.html", "IDEA")
-       writeTD(pCurrentPage,             "maven.html", "Maven")
-       writeTD(pCurrentPage,               "ant.html", "Ant")
-       writeTD(pCurrentPage,              "misc.html", "Miscellaneous")
-   document.writeln('            </tr>')
-   document.writeln('        </table>')
-   document.writeln('    </div>')
-
-}
-
diff --git a/doc/book-toc.html b/doc/book-toc.html
deleted file mode 100644
index 6894ce7..0000000
--- a/doc/book-toc.html
+++ /dev/null
@@ -1,1609 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css" media="print">.hide{display:none}</style></head>
-
-
-<body style="margin:0;padding:0"><div class="hide">
-
-
-
-
-
-<div bgcolor="#ffffff" vlink="blue" link="blue">
-<table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_1"><b>Page 1</b></a></font></td></tr></table><font size="3" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:1148;left:738">v</div>
-</span></font>
-<font size="6" face="Times"><span style="font-size:48px;font-family:Times">
-
-<div style="position:absolute;top:355;left:162"><b>Contents</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:512;left:270">Foreword</div>
-<div style="position:absolute;top:512;left:730">xiii</div>
-<div style="position:absolute;top:530;left:270">Preface</div>
-<div style="position:absolute;top:530;left:734">xv</div>
-<div style="position:absolute;top:548;left:270">Acknowledgments</div>
-<div style="position:absolute;top:548;left:730">xxi</div>
-<div style="position:absolute;top:566;left:270">About the Authors</div>
-
-<div style="position:absolute;top:566;left:723">xxiii</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:611;left:162">Chapter 1</div>
-<div style="position:absolute;top:611;left:270">Getting Started</div>
-<div style="position:absolute;top:611;left:736">1</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:640;left:270">Beyond JUnit 3</div>
-<div style="position:absolute;top:640;left:738">3</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:660;left:288">Stateful Classes</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:659;left:738">3</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:676;left:288">Parameters</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:675;left:738">4</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:693;left:288">Base Classes</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:692;left:738">4</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:709;left:288">Exceptions Are Not That Exceptional</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:708;left:738">4</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:726;left:288">Running Tests</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:725;left:738">5</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:743;left:288">Real-World Testing</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:741;left:738">6</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:759;left:288">Configuration Methods</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:758;left:738">6</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:775;left:288">Dependencies</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:774;left:738">6</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:792;left:288">Epiphanies</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:791;left:738">7</div>
-<div style="position:absolute;top:808;left:270">JUnit 4</div>
-<div style="position:absolute;top:808;left:738">7</div>
-<div style="position:absolute;top:828;left:270">Designing for Testability</div>
-<div style="position:absolute;top:828;left:738">8</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:847;left:288">Object-Oriented Programming and Encapsulation</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:846;left:738">8</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:864;left:288">The Design Patterns Revolution</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:863;left:738">9</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:880;left:288">Identifying the Enemy</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:879;left:729">10</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:897;left:288">Recommendations</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:896;left:729">16</div>
-<div style="position:absolute;top:913;left:270">TestNG</div>
-<div style="position:absolute;top:913;left:729">17</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:933;left:288">Annotations</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:932;left:729">17</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:950;left:288">Tests, Suites, and Configuration Annotations</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:948;left:729">18</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:966;left:288">Groups</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:965;left:729">20</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:983;left:288"><b>testng.xml</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:981;left:729">21</div>
-<div style="position:absolute;top:999;left:270">Conclusion</div>
-<div style="position:absolute;top:999;left:729">21</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:1045;left:162">Chapter 2</div>
-<div style="position:absolute;top:1045;left:270">Testing Design Patterns</div>
-
-<div style="position:absolute;top:1045;left:725">23</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1075;left:270">Testing for Failures</div>
-<div style="position:absolute;top:1075;left:729">23</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1094;left:288">Reporting Errors</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1093;left:729">24</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1111;left:288">Runtime and Checked Exceptions</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1110;left:729">25</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:202;left:90">Beust.book  Page v  Thursday, August 16, 2007  10:22 AM</div>
-</span></font>
-
-<div style="position:absolute;top:1282;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_2"><b>Page 2</b></a></font></td></tr></table></div><font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:1387;left:117">vi</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1390;left:189">Contents</div>
-<div style="position:absolute;top:1444;left:243">Testing Whether Your Code Handles Failures Gracefully</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1443;left:684">27</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1460;left:243">When Not to Use <b>expectedExceptions</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:1459;left:684">31</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1477;left:243"><b>testng-failed.xml</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1476;left:684">32</div>
-<div style="position:absolute;top:1493;left:225">Factories</div>
-<div style="position:absolute;top:1493;left:684">34</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1513;left:243"><b>@Factory</b></div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1512;left:684">35</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1530;left:243"><b>org.testng.ITest</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1528;left:684">38</div>
-<div style="position:absolute;top:1546;left:225">Data-Driven Testing</div>
-<div style="position:absolute;top:1546;left:684">39</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1565;left:243">Parameters and Test Methods</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1564;left:684">42</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1582;left:243">Passing Parameters with <b>testng.xml</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1581;left:684">44</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1598;left:243">Passing Parameters with <b>@DataProvider</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1597;left:684">47</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1615;left:243">Parameters for Data Providers</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1614;left:684">50</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1631;left:243">The <b>Method </b>Parameter</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1630;left:684">50</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1648;left:243">The <b>ITestContext </b>Parameter</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:1647;left:684">52</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1664;left:243">Lazy Data Providers</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1663;left:684">54</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1681;left:243">Pros and Cons of Both Approaches</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1680;left:684">59</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1697;left:243">Supplying the Data</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1696;left:684">60</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1714;left:243">Data Provider or Factory?</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1713;left:684">62</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1730;left:243">Tying It All Together</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1729;left:684">63</div>
-<div style="position:absolute;top:1747;left:225">Asynchronous Testing</div>
-<div style="position:absolute;top:1747;left:684">67</div>
-<div style="position:absolute;top:1766;left:225">Testing Multithreaded Code</div>
-<div style="position:absolute;top:1766;left:684">71</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:1786;left:243">Concurrent Testing</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1785;left:684">72</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1803;left:243"><b>threadPoolSize</b>, <b>invocationCount</b>, and <b>timeOut</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1801;left:684">75</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1819;left:243">Concurrent Running</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1818;left:684">79</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1835;left:243">Turning on the Parallel Bit</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1834;left:684">82</div>
-<div style="position:absolute;top:1852;left:225">Performance Testing</div>
-
-<div style="position:absolute;top:1852;left:684">83</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1871;left:243">Algorithm Complexity</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1870;left:684">84</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1888;left:243">Testing Complexity</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1887;left:684">87</div>
-
-<div style="position:absolute;top:1904;left:225">Mocks and Stubs</div>
-<div style="position:absolute;top:1904;left:684">90</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1924;left:243">Mocks versus Stubs</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1923;left:684">90</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1940;left:243">Designing for Mockability</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1939;left:684">95</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1957;left:243">Mock Libraries</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1956;left:684">96</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1973;left:243">Selecting the Right Strategy</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:1972;left:684">99</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:1990;left:243">Mock Pitfalls</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:1989;left:675">100</div>
-<div style="position:absolute;top:2006;left:225">Dependent Testing</div>
-<div style="position:absolute;top:2006;left:675">103</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2026;left:243">Dependent Code</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2025;left:675">104</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2042;left:243">Dependent Testing with TestNG</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2041;left:675">105</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2059;left:243">Deciding Whether to Depend on Groups or on Methods</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2058;left:675">106</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2075;left:243">Dependent Testing and Threads</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2074;left:675">110</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2092;left:243">Failures of Configuration Methods</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:2091;left:675">110</div>
-<div style="position:absolute;top:2108;left:225">Inheritance and Annotation Scopes</div>
-<div style="position:absolute;top:2108;left:675">113</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2128;left:243">The Problem</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2127;left:675">113</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2144;left:243">Pitfalls of Inheritance</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2143;left:675">116</div>
-<div style="position:absolute;top:2161;left:225">Test Groups</div>
-<div style="position:absolute;top:2161;left:675">119</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2180;left:243">Syntax</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2179;left:675">120</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2197;left:243">Groups and Runtime</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2196;left:675">122</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2213;left:243">Running Groups</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2212;left:675">125</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:2230;left:243">Using Groups Effectively</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2229;left:675">127</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:1309;left:90">Beust.book  Page vi  Thursday, August 16, 2007  10:22 AM</div>
-</span></font>
-
-<div style="position:absolute;top:2389;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_3"><b>Page 3</b></a></font></td></tr></table></div><font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2497;left:620">Contents</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:2494;left:729">vii</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2551;left:270">Code Coverage</div>
-<div style="position:absolute;top:2551;left:720">132</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2570;left:288">A Coverage Example</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2569;left:720">133</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2587;left:288">Coverage Metrics</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2586;left:720">134</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2603;left:288">Coverage Tools</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2602;left:720">136</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2620;left:288">Implementation</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2619;left:720">146</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2636;left:288">Beware!</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2635;left:720">147</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:2653;left:288">A Guide to Successful Coverage</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2652;left:720">147</div>
-<div style="position:absolute;top:2669;left:270">Conclusion</div>
-<div style="position:absolute;top:2669;left:720">150</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:2716;left:162">Chapter 3</div>
-<div style="position:absolute;top:2716;left:270">Enterprise Testing</div>
-<div style="position:absolute;top:2716;left:715">153</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2745;left:270">A Typical Enterprise Scenario</div>
-<div style="position:absolute;top:2745;left:720">154</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2764;left:288">Participants</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2763;left:720">155</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2781;left:288">Testing Methodology</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2780;left:720">155</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2797;left:288">Issues with the Current Approach</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2796;left:720">156</div>
-<div style="position:absolute;top:2814;left:270">A Concrete Example</div>
-<div style="position:absolute;top:2814;left:720">157</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2833;left:288">Goals</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2832;left:720">159</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2850;left:288">Nongoals</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2849;left:720">160</div>
-<div style="position:absolute;top:2866;left:270">Test Implementation</div>
-
-<div style="position:absolute;top:2866;left:720">160</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2886;left:288">Testing for Success</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2885;left:720">161</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2903;left:288">Building Test Data</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2901;left:720">163</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2919;left:288">Test Setup Issues</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2918;left:720">166</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2935;left:288">Error Handling</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2934;left:720">172</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2952;left:288">Emerging Unit Tests</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2951;left:720">175</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:2968;left:288">Coping with In-Container Components</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2967;left:720">177</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:2985;left:288">Putting It All Together</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:2984;left:720">178</div>
-<div style="position:absolute;top:3001;left:270">Exploring the Competing Consumers Pattern</div>
-<div style="position:absolute;top:3001;left:720">182</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3021;left:288">The Pattern</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3020;left:720">182</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3038;left:288">The Test</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3036;left:720">184</div>
-<div style="position:absolute;top:3054;left:270">The Role of Refactoring</div>
-<div style="position:absolute;top:3054;left:720">186</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3074;left:288">A Concrete Example</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3072;left:720">187</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3090;left:288">An In-Container Approach</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3089;left:720">193</div>
-<div style="position:absolute;top:3106;left:270">Conclusion</div>
-<div style="position:absolute;top:3106;left:720">194</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-
-<div style="position:absolute;top:3153;left:162">Chapter 4</div>
-<div style="position:absolute;top:3153;left:270">Java EE Testing</div>
-<div style="position:absolute;top:3153;left:715">197</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3182;left:270">In-Container versus Out-of-Container Testing</div>
-<div style="position:absolute;top:3182;left:720">198</div>
-<div style="position:absolute;top:3202;left:270">In-Container Testing</div>
-<div style="position:absolute;top:3202;left:720">200</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3221;left:288">Creating a Test Environment</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3220;left:720">200</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3238;left:288">Identifying Tests</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3237;left:720">201</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:3254;left:288">Registering Tests</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3253;left:720">203</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3271;left:288">Registering a Results Listener</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3270;left:720">204</div>
-<div style="position:absolute;top:3287;left:270">Java Naming and Directory Interface (JNDI)</div>
-<div style="position:absolute;top:3287;left:720">207</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3307;left:288">Understanding JNDI\u2019s Bootstrapping</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3306;left:720">207</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3323;left:288">Spring\u2019s <b>SimpleNamingContextBuilder</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3322;left:720">209</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3340;left:288">Avoiding JNDI</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3339;left:720">210</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:2416;left:90">Beust.book  Page vii  Thursday, August 16, 2007  10:22 AM</div>
-</span></font>
-
-<div style="position:absolute;top:3496;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_4"><b>Page 4</b></a></font></td></tr></table></div><font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:3601;left:117">viii</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3604;left:189">Contents</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3658;left:225">Java Database Connectivity (JDBC)</div>
-<div style="position:absolute;top:3658;left:675">210</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3677;left:243">c3p0</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3676;left:675">212</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3694;left:243">Commons DBCP</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3693;left:675">213</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3710;left:243">Spring</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3709;left:675">213</div>
-<div style="position:absolute;top:3727;left:225">Java Transaction API (JTA)</div>
-
-<div style="position:absolute;top:3727;left:675">215</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3746;left:243">Java Open Transaction Manager (JOTM)</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3745;left:675">217</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3763;left:243">Atomikos TransactionEssentials </div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3762;left:675">218</div>
-
-<div style="position:absolute;top:3779;left:225">Java Messaging Service (JMS)</div>
-<div style="position:absolute;top:3779;left:675">219</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3799;left:243">Creating a Sender/Receiver Test</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3798;left:675">219</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3815;left:243">Using ActiveMQ for Tests</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3814;left:675">221</div>
-<div style="position:absolute;top:3832;left:225">Java Persistence API (JPA)</div>
-<div style="position:absolute;top:3832;left:675">225</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3851;left:243">Configuring the Database</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3850;left:675">227</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:3868;left:243">Configuring the JPA Provider</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3867;left:675">227</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3884;left:243">Writing the Test</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3883;left:675">229</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3901;left:243">Simulating a Container</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3900;left:675">230</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3917;left:243">Using Spring as the Container</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3916;left:675">231</div>
-<div style="position:absolute;top:3934;left:225">Enterprise Java Beans 3.0 (EJB3)</div>
-<div style="position:absolute;top:3934;left:675">236</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3953;left:243">Message-Driven Beans</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3952;left:675">237</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:3970;left:243">Session Beans</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3969;left:675">240</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:3986;left:243">Another Spring Container</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:3985;left:675">243</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4003;left:243">Disadvantages of a Full Container</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4002;left:675">244</div>
-<div style="position:absolute;top:4019;left:225">Java API for XML Web Services (JAX-WS)</div>
-<div style="position:absolute;top:4019;left:675">246</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4039;left:243">Recording Requests</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4038;left:675">248</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4055;left:243">Setting Up the Test Environment</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4054;left:675">248</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4072;left:243">Creating the Service Test</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4071;left:675">251</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4088;left:243">XPath Testing</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4087;left:675">253</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:4105;left:243">Testing Remote Services</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4104;left:675">254</div>
-<div style="position:absolute;top:4121;left:225">Servlets</div>
-<div style="position:absolute;top:4121;left:675">255</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4141;left:243">In-Container Testing</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4140;left:675">255</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4157;left:243">Mock/Stub Objects</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4156;left:675">255</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4174;left:243">Refactoring</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4173;left:675">257</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4190;left:243">Embedded Container</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4189;left:675">257</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4207;left:243">In-Memory Invocation</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4206;left:675">260</div>
-<div style="position:absolute;top:4223;left:225">XML</div>
-
-<div style="position:absolute;top:4223;left:675">262</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4243;left:243">Using dom4j</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4242;left:675">263</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4259;left:243">Using XMLUnit</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4258;left:675">264</div>
-
-<div style="position:absolute;top:4276;left:225">Conclusion</div>
-<div style="position:absolute;top:4276;left:675">266</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:4322;left:117">Chapter 5</div>
-<div style="position:absolute;top:4322;left:225">Integration</div>
-<div style="position:absolute;top:4322;left:670">269</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4351;left:225">Spring</div>
-<div style="position:absolute;top:4351;left:675">270</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4371;left:243">Spring\u2019s Test Package Features</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4370;left:675">271</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4388;left:243">Test Class Hierarchy</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4386;left:675">272</div>
-<div style="position:absolute;top:4404;left:225">Guice</div>
-
-<div style="position:absolute;top:4404;left:675">280</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4424;left:243">The Issue with Spring</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4422;left:675">280</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4440;left:243">Enter Guice</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4439;left:675">281</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4456;left:243">A Typical Dependency Scenario</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4455;left:675">282</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:3523;left:90">Beust.book  Page viii  Thursday, August 16, 2007  10:22 AM</div>
-</span></font>
-
-<div style="position:absolute;top:4603;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_5"><b>Page 5</b></a></font></td></tr></table></div><font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4711;left:620">Contents</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:4708;left:733">ix</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4765;left:288">The Object Factory</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4764;left:720">284</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4781;left:288">Guice Configuration</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4780;left:720">286</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4798;left:288">Guice-Based Test</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4797;left:720">290</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4814;left:288">Grouping Test Dependencies</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:4813;left:720">291</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4831;left:288">Injecting Configuration</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4830;left:720">293</div>
-<div style="position:absolute;top:4847;left:270">DbUnit</div>
-<div style="position:absolute;top:4847;left:720">295</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4867;left:288">Configuration</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4866;left:720">295</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4883;left:288">Usage</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4882;left:720">297</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4900;left:288">Verifying Results</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4899;left:720">299</div>
-<div style="position:absolute;top:4916;left:270">HtmlUnit</div>
-<div style="position:absolute;top:4916;left:720">303</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:4936;left:288">Configuration</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4935;left:720">304</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:4952;left:288">Usage</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:4951;left:720">305</div>
-<div style="position:absolute;top:4969;left:270">Selenium</div>
-<div style="position:absolute;top:4969;left:720">310</div>
-<div style="position:absolute;top:4988;left:270">Swing UI Testing</div>
-<div style="position:absolute;top:4988;left:720">312</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5008;left:288">Testing Approach</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5007;left:720">312</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5024;left:288">Configuration</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5023;left:720">313</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5041;left:288">Usage</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5040;left:720">314</div>
-<div style="position:absolute;top:5057;left:270">Tests for Painting Code</div>
-<div style="position:absolute;top:5057;left:720">316</div>
-<div style="position:absolute;top:5077;left:270">Continuous Integration</div>
-<div style="position:absolute;top:5077;left:720">320</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5096;left:288">Why Bother?</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:5095;left:720">320</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5113;left:288">CI Server Features</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5112;left:720">320</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5129;left:288">TestNG Integration</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5128;left:720">321</div>
-
-<div style="position:absolute;top:5146;left:270">Conclusion</div>
-<div style="position:absolute;top:5146;left:720">322</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:5192;left:162">Chapter 6</div>
-<div style="position:absolute;top:5192;left:270">Extending TestNG</div>
-<div style="position:absolute;top:5192;left:715">325</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5221;left:270">The TestNG API</div>
-<div style="position:absolute;top:5221;left:720">325</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5242;left:288"><b>org.testng.TestNG</b>, <b>ITestResult</b>, <b>ITestListener</b>, </div>
-<div style="position:absolute;top:5258;left:306"><b>ITestNGMethod</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5256;left:720">325</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:5274;left:288">A Concrete Example</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5273;left:720">328</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5290;left:288">The XML API</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5289;left:720">331</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5307;left:288">Synthetic XML Files</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5306;left:720">333</div>
-<div style="position:absolute;top:5323;left:270">BeanShell</div>
-<div style="position:absolute;top:5323;left:720">335</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5343;left:288">BeanShell Overview</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5342;left:720">335</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5360;left:288">TestNG and BeanShell</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5358;left:720">337</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5376;left:288">Interactive Execution</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5375;left:720">339</div>
-<div style="position:absolute;top:5392;left:270">Method Selectors</div>
-
-<div style="position:absolute;top:5392;left:720">341</div>
-<div style="position:absolute;top:5412;left:270">Annotation Transformers</div>
-<div style="position:absolute;top:5412;left:720">346</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5432;left:288">Annotation History</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5430;left:720">346</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5448;left:288">Pros and Cons</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5447;left:720">348</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5464;left:288">Using TestNG Annotation Transformers</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5463;left:720">348</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5481;left:288">Possible Uses of Annotation Transformers</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5480;left:720">353</div>
-<div style="position:absolute;top:5497;left:270">Reports</div>
-<div style="position:absolute;top:5497;left:720">355</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5517;left:288">Default Reports</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5516;left:720">355</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:5534;left:288">The Reporter API</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5533;left:720">360</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5550;left:288">The Report Plug-in API</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5549;left:720">360</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:4630;left:90">Beust.book  Page ix  Thursday, August 16, 2007  10:22 AM</div>
-
-</span></font>
-
-<div style="position:absolute;top:5710;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_6"><b>Page 6</b></a></font></td></tr></table></div><font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:5815;left:117">x</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5818;left:189">Contents</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5872;left:225">Writing Custom Annotations</div>
-<div style="position:absolute;top:5872;left:675">366</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5891;left:243">Implementation</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5890;left:675">367</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:5908;left:243">Testing</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:5907;left:675">371</div>
-<div style="position:absolute;top:5924;left:225">Conclusion</div>
-
-<div style="position:absolute;top:5924;left:675">375</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:5971;left:117">Chapter 7</div>
-<div style="position:absolute;top:5971;left:225">Digressions</div>
-<div style="position:absolute;top:5971;left:670">377</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6000;left:225">Motivation</div>
-<div style="position:absolute;top:6000;left:675">377</div>
-<div style="position:absolute;top:6019;left:225">The TestNG Philosophy</div>
-
-<div style="position:absolute;top:6019;left:675">378</div>
-<div style="position:absolute;top:6039;left:225">The Care and Feeding of Exceptions</div>
-<div style="position:absolute;top:6039;left:675">378</div>
-<div style="position:absolute;top:6058;left:225">Stateful Tests</div>
-<div style="position:absolute;top:6058;left:675">382</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6078;left:243">Immutable State</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6077;left:675">382</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6094;left:243">Mutable State</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6093;left:675">383</div>
-<div style="position:absolute;top:6111;left:225">The Pitfalls of Test-Driven Development</div>
-<div style="position:absolute;top:6111;left:675">385</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6130;left:243">TDD Promotes Microdesign over Macrodesign</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6129;left:675">385</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6147;left:243">TDD Is Hard to Apply</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6146;left:675">386</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6163;left:243">Extracting the Good from Test-Driven Development</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:6162;left:675">388</div>
-<div style="position:absolute;top:6180;left:225">Testing Private Methods</div>
-<div style="position:absolute;top:6180;left:675">388</div>
-<div style="position:absolute;top:6199;left:225">Testing versus Encapsulation</div>
-<div style="position:absolute;top:6199;left:675">391</div>
-<div style="position:absolute;top:6219;left:225">The Power of Debuggers</div>
-<div style="position:absolute;top:6219;left:675">392</div>
-<div style="position:absolute;top:6238;left:225">Logging Best Practices</div>
-<div style="position:absolute;top:6238;left:675">394</div>
-
-<div style="position:absolute;top:6258;left:225">The Value of Time</div>
-<div style="position:absolute;top:6258;left:675">397</div>
-<div style="position:absolute;top:6277;left:225">Conclusion</div>
-<div style="position:absolute;top:6277;left:675">399</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:6324;left:117">Appendix A IDE Integration</div>
-<div style="position:absolute;top:6324;left:670">401</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6353;left:225">Eclipse</div>
-
-<div style="position:absolute;top:6353;left:675">401</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6373;left:243">Installing the Plug-in</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6372;left:675">401</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6389;left:243">Verifying the Installation</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6388;left:675">404</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6406;left:243">Creating a Launch Configuration</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6405;left:675">404</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6422;left:243">Configuring Preferences</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6421;left:675">410</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6439;left:243">Converting JUnit Tests</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6438;left:675">410</div>
-<div style="position:absolute;top:6455;left:225">IntelliJ IDEA</div>
-<div style="position:absolute;top:6455;left:675">411</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6475;left:243">Installing the Plug-in</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:6474;left:675">411</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6491;left:243">Running Tests</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6490;left:675">412</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6508;left:243">Running Shortcuts</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6507;left:675">417</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6524;left:243">Viewing Test Results</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6523;left:675">418</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6541;left:243">Running Plug-in Refactorings</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6540;left:675">419</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:6584;left:117">Appendix B TestNG Javadocs</div>
-<div style="position:absolute;top:6584;left:670">421</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6613;left:225">JDK 1.4 and JDK 5</div>
-<div style="position:absolute;top:6613;left:675">421</div>
-<div style="position:absolute;top:6633;left:225">Shortcut Syntax for JDK 5 Annotations</div>
-<div style="position:absolute;top:6633;left:675">423</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-
-<div style="position:absolute;top:5737;left:90">Beust.book  Page x  Thursday, August 16, 2007  10:22 AM</div>
-</span></font>
-
-<div style="position:absolute;top:6817;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_7"><b>Page 7</b></a></font></td></tr></table></div><font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6925;left:620">Contents</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:6922;left:733">xi</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6979;left:270">Annotation Javadocs</div>
-<div style="position:absolute;top:6979;left:720">423</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:6999;left:288"><b>@<a href="mailto:DataProvider/@testng.data-provider" target="_blank">DataProvider/@testng.data<WBR>-provider</a></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:6997;left:720">425</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7015;left:288"><b>@<a href="mailto:Factory/@testng.factory" target="_blank">Factory/@testng.factory</a></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:7014;left:720">426</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7032;left:288"><b>@<a href="mailto:Parameters/@testng.parameters" target="_blank">Parameters/@testng.parameters</a></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7030;left:720">426</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7048;left:288"><b>@<a href="mailto:Test/@testng.test" target="_blank">Test/@testng.test</a></b></div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7047;left:720">427</div>
-<div style="position:absolute;top:7064;left:270">The </div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7066;left:298"><b>org.testng.TestNG</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7064;left:441">Class</div>
-<div style="position:absolute;top:7064;left:720">428</div>
-<div style="position:absolute;top:7084;left:270">The XML API</div>
-
-<div style="position:absolute;top:7084;left:720">432</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:7130;left:162">Appendix C <b>testng.xml</b></div>
-<div style="position:absolute;top:7131;left:715"><b>435</b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7159;left:270">Overview</div>
-<div style="position:absolute;top:7159;left:720">436</div>
-<div style="position:absolute;top:7179;left:270">Scopes</div>
-
-<div style="position:absolute;top:7179;left:720">437</div>
-<div style="position:absolute;top:7198;left:270">XML Tags</div>
-<div style="position:absolute;top:7198;left:720">437</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7219;left:288"><b><suite></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7217;left:720">437</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7235;left:288"><b><packages> </b>and <b><package></b></div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7233;left:720">440</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7252;left:288"><b><parameter></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7250;left:720">441</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7268;left:288"><b><suite-files> </b>and <b><suite-file></b></div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7266;left:720">442</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7285;left:288"><b><method-selectors></b>, <b><method-selector></b>, </div>
-<div style="position:absolute;top:7301;left:306"><b><selector-class></b>, and <b><script></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:7299;left:720">443</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7318;left:288"><b><test></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7316;left:720">444</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7334;left:288"><b><groups></b>, <b><define></b>, and <b><run></b></div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7332;left:720">446</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7351;left:288"><b><classes> </b>and <b><class></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7349;left:720">446</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:7367;left:288"><b><methods></b></div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7365;left:720">447</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:7410;left:162">Appendix D Migrating from JUnit</div>
-<div style="position:absolute;top:7410;left:715">449</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7441;left:270"><b>JUnitConverter</b></div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7439;left:720">449</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7459;left:288">From the Command Line</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7458;left:720">449</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7475;left:288">From <b>ant</b></div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7474;left:720">452</div>
-<div style="position:absolute;top:7492;left:270">Integrated Development Environments</div>
-<div style="position:absolute;top:7492;left:720">453</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7511;left:288">Eclipse</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7510;left:720">453</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-
-<div style="position:absolute;top:7528;left:288">IDEA</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7527;left:720">454</div>
-<div style="position:absolute;top:7544;left:270">Incremental Migration and JUnit Mode</div>
-<div style="position:absolute;top:7544;left:720">455</div>
-<div style="position:absolute;top:7564;left:270">Converting JUnit Code</div>
-<div style="position:absolute;top:7564;left:720">456</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7583;left:288">Assertions</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7582;left:720">457</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7600;left:288">Running a Single Test</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7599;left:720">458</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7616;left:288">Maintaining State between Invocations</div>
-</span></font>
-
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7615;left:720">461</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7633;left:288">Suite-wide Initialization</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7632;left:720">463</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7649;left:288">Class-wide Initialization</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-
-<div style="position:absolute;top:7648;left:720">463</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7666;left:288">The AllTests Pattern</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7665;left:720">463</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7682;left:288">Testing Exceptions</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7681;left:720">467</div>
-
-</span></font>
-<font size="8" face="Times"><span style="font-size:11px;font-family:Times">
-<div style="position:absolute;top:7699;left:288">The Parameterized Test Case Pattern</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:12px;font-family:Times">
-<div style="position:absolute;top:7698;left:720">469</div>
-</span></font>
-<font size="8" face="Times"><span style="font-size:16px;font-family:Times">
-<div style="position:absolute;top:7742;left:270">Index</div>
-<div style="position:absolute;top:7742;left:715">471</div>
-</span></font>
-<font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:6844;left:90">Beust.book  Page xi  Thursday, August 16, 2007  10:22 AM</div>
-
-</span></font>
-
-<div style="position:absolute;top:7924;left:0"><hr><table border="0" width="100%"><tr><td bgcolor="eeeeee" align="right"><font face="arial,sans-serif"><a name="0.1_8"><b>Page 8</b></a></font></td></tr></table></div><font size="2" face="Times"><span style="font-size:8px;font-family:Times">
-<div style="position:absolute;top:7951;left:90">Beust.book  Page xii  Thursday, August 16, 2007  10:22 AM</div>
-</span></font>
-</div>
-
-</div></body></html>
diff --git a/doc/book.html b/doc/book.html
deleted file mode 100644
index 0d9b326..0000000
--- a/doc/book.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<html>
-   <head>
-       <title>Next Generation Java Testing</title>
-
-       <link rel="stylesheet" href="testng.css" type="text/css" />
-       <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-       <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-       <script type="text/javascript" src="http://testng.org/doc/banner.js"></script>
-     </head>
-
-<body onload="prettyPrint()">
-
-<script type="text/javascript">
-   displayMenu("book.html");
-</script>
-
-
-<p align="center">
-<a href="http://www.amazon.com/Next-Generation-Java-Testing-Advanced/dp/0321503104/ref=pd_bbs_sr_1/104-7105897-1187923?ie=UTF8&s=books&qid=1193417110&sr=8-1">
-<img border="0" src="http://beust.com/pics/book-cover.jpg" />
-</a>
-</p>
-
-Our book is now <a href="http://www.amazon.com/Next-Generation-Java-Testing-Advanced/dp/0321503104/ref=pd_bbs_sr_1/104-7105897-1187923?ie=UTF8&s=books&qid=1193417110&sr=8-1">available from Amazon</a> and various other retail stores (check out <a href="book-toc.html">the table of contents</a>).
-
-<P>
-
-<b>Book Description</b><br>
- <p>Enterprise Java developers must achieve broader, deeper test coverage, going beyond unit testing to implement functional and integration testing with systematic acceptance. <b><i>Next Generation Java Testing</i></b> introduces breakthrough Java testing techniques and TestNG, a powerful open source Java testing platform.</p><p>C�dric Beust, TestNG's creator, and leading Java developer Hani Suleiman, present powerful, flexible testing patterns that will work with virtually any testing  [...]
- code for today's mission-critical environments.</p><p>This book</p><ul><li>Illuminates the tradeoffs associated with testing, so you can make better decisions about what and how to test</li><li>Introduces TestNG, explains its goals and features, and shows how to apply them in real-world environments</li><li>Shows how to integrate TestNG with your existing code, development frameworks, and software libraries </li><li>Demonstrates how to test crucial code features, such as encapsulation,  [...]
- testing design patterns presented in this book will show you how to im
-prove your tests by giving you concrete advice on how to make your code and your design more testable.</p>
-
-
-<br><br>
-     <b>About the Author</b><br>
- <p><b>C�dric Beust,</b> a senior software engineer at Google, is an active member of the Java Community Process who has been extensively involved in the development of the latest Java release. He is the creator and main contributor to the TestNG project.</p><p><b>Hani Suleiman</b> is CTO of Formicary, a consulting and portal company specializing in financial applications. He is one of two individual members who has been elected to the Executive Committee of the Java Community Process.</p>
-
-
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-
-</body>
-
-</html>
- 
\ No newline at end of file
diff --git a/doc/documentation-main.html b/doc/documentation-main.html
deleted file mode 100644
index 6d0cda3..0000000
--- a/doc/documentation-main.html
+++ /dev/null
@@ -1,2190 +0,0 @@
-<html>
-    <head>
-        <title>TestNG</title>
-
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-        <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-        <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-        <script type="text/javascript" src="banner.js"></script>
-
-      <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
-      <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
-      <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
-      <script type="text/javascript">
-        SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
-        SyntaxHighlighter.defaults['gutter'] = false;
-        SyntaxHighlighter.all();
-      </script>
-
-        <style type="text/css">
-            /* Set the command-line table option column width. */
-            #command-line colgroup.option {
-                 width: 7em;
-            }
-        </style>
-    </head>
-<body onLoad="prettyPrint()">
-
-<script type="text/javascript">
-    displayMenu("documentation-main.html")
-</script>
-
-<h2 align="center">TestNG</h2>
-
-<!-- --------------------------
-
-<table class="float-right">
-  <tr>
-    <td>
-<script type="text/javascript"><!--
-google_ad_client = "pub-1467757024002850";
-google_ad_width = 120;
-google_ad_height = 600;
-google_ad_format = "120x600_as";
-google_ad_channel ="5560744946";
-//-->
-<!-- 
-
-</script>
-
-<script type="text/javascript"
-  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
-</script>      
-    </td>
-  </tr>
-</table>
-
-------------------------------- -->
-
-
-
-<!-------------------------------------
-  TOC
-  ------------------------------------>
-
-<h3>Table of Contents</h3>
-
-  <a class="summary" href="#introduction">1 - Introduction</a>
-<br>
-  <a class="summary" href="#annotations">2 - Annotations</a>
-<br>
-  <a class="summary" href="#testng-xml">3 - testng.xml</a>
-<br>
-  <a class="summary" href="#running-testng">4 - Running TestNG</a>
-<br>
-  <a class="summary" href="#methods">5 - User's manual</a>
-<br>
-    <a class="summary" href="#test-groups">5.1 - Test groups</a>
-<br>
-    <a class="summary" href="#groups-of-groups">5.2 - Groups of groups</a>
-<br>
-    <a class="summary" href="#exclusions">5.3 - Exclusion groups</a>
-<br>
-    <a class="summary" href="#partial-groups">5.4 - Partial groups</a>
-<br>
-    <a class="summary" href="#parameters">5.5 - Parameters</a>
-<br>
-      <a class="summary" href="#parameters-testng-xml">5.5.1 - From testng.xml</a>
-<br>
-      <a class="summary" href="#parameters-dataproviders">5.5.2 - From DataProviders</a>
-<br>
-      <a class="summary" href="#parameters-reports">5.5.3 - Parameters in the reports</a>
-<br>
-    <a class="summary" href="#dependent-methods">5.6 - Dependent methods</a>
-<br>
-    <a class="summary" href="#factories">5.7 - Factories</a>
-<br>
-    <a class="summary" href="#class-level">5.8 - Class level Annotations</a>
-<br>
-    <a class="summary" href="#parallel-running">5.9 - Parallel running and time-outs</a> 
-<br>
-    <a class="summary" href="#rerunning">5.10 - Rerunning failed tests</a>
-<br>
-    <a class="summary" href="#junit">5.11 - JUnit tests</a>
-<br>
-    <a class="summary" href="#running-testng-programmatically">5.13 - Running TestNG programmatically</a><br>
-    <a class="summary" href="#beanshell">5.14 - BeanShell and advanced group selection</a><br>
-
-    <a class="summary" href="#annotationtransformers">5.15 - Annotation transformers</a><br>
-
-    <a class="summary" href="#methodinterceptors">5.16 - Method Interceptors</a><br>
-
-    <a class="summary" href="#testng-listeners">5.18 - TestNG Listeners</a><br>
-
-    <a class="summary" href="#dependency-injection">5.19 - Dependency injection</a></br>
-
-    <a class="summary" href="#invokedmethodlistener">5.20 - Invoked method listeners</a></br>
-
-
-  <a class="summary" href="#test-results">6 - Test results</a>
-<br>
-    <a class="summary" href="#success-failure">6.1 - Success, failure and assert</a>
-<br>
-    <a class="summary" href="#logging">6.2 - Logging and results</a>
-
-<br>
-      <a class="summary" href="#logging-listeners">6.2.1 - Logging Listeners</a>
-<br>
-      <a class="summary" href="#logging-reporters">6.2.2 - Logging Reporters</a>
-<br>
-      <a class="summary" href="#logging-junitreports">6.2.3 - JUnitReports</a>
-<br>
-      <a class="summary" href="#logging-reporter-api">6.2.4 - Reporter API</a>
-<br>
-      <a class="summary" href="#logging-xml-reports">6.2.5 - XML Reports</a>
-<br>
-
-</pre>
-<!-------------------------------------
-  INTRODUCTION
-  ------------------------------------>
-<h3><a name="introduction">1 - Introduction</a></h3>TestNG is a testing framework designed to simply a broad range of testing needs, from unit testing (testing a class in isolation of the others) to integration testing (testing entire systems made of several classes, several packages and even several external frameworks, such as application servers).
-
-<p>
-
-Writing a test is typically a three-step process:
-
-<ul>
-<li>Write the business logic of your test and insert <a href="#annotations">TestNG annotations</a> in your code.
-</li>
-<li>Add the information about your test (e.g. the class name, the groups you wish to run, etc...) in a <tt><a href="#testng-xml">testng.xml</a></tt> file or in build.xml.
-</li>
-<li><a href="ant.html">Run TestNG</a>.
-</li>
-</ul>
-You can find a quick example on the <a href="index.html">Welcome page</a>.
-<p>
-The concepts used in this documentation are as follows:
-
-<ul>
-<li>
-A suite is represented by one XML file.  It can contain one or more tests and is defined by the <tt><suite></tt> tag.
-</li>
-<li>
-A test is represented by <tt><test></tt> and can contain one or more TestNG classes.
-</li>
-<li>
-A TestNG class is a Java class that contains at least one TestNG annotation.  It is represented by the <tt><class></tt> tag and can contain one or more test methods.
-</li>
-<li>
-A test method is a Java method annotated by <tt>@Test</tt> in your source.
-</li></ul>A TestNG test can be configured by <tt>@BeforeXXX and @AfterXXX </tt>annotations which allows to perform some Java logic before and after a certain point, these points being either of the items listed above.<p>
-The rest of this manual will explain the following:
-<p>
-<ul>
-<li>A list of all the annotations with a brief explanation.  This will give you an idea of the various functionalities offered by TestNG but you will probably want to consult the section dedicated to each of these annotations to learn the details.
-</li>
-<li>A description of the testng.xml file, its syntax and what you can specify in it.
-</li>
-<li>A detailed list of the various features and how to use them with a combination of annotations and testng.xml.
-</li>
-</ul>
-
-
-<!-------------------------------------
-  ANNOTATIONS
-  ------------------------------------>
-
-  <h3><a name="annotations">2 - Annotations</a></h3>Here is a quick overview of the annotations available in TestNG along with their attributes.
-
-<p>
-
-<table>
-
-<tr>
-<td colspan="2"><b><tt>@BeforeSuite<br>@AfterSuite<br>@BeforeTest<br>@AfterTest<br>@BeforeGroups<br>@AfterGroups<br>@BeforeClass<br>@AfterClass<br>@BeforeMethod<br>@AfterMethod</tt></b></td><td><b>Configuration information for a TestNG class:</b>
-
-<br>
-
-<br><b>@BeforeSuite: </b>The annotated method will be run before all tests in this suite have run.
-
-<br><b>@AfterSuite: </b> The annotated method will be run after all tests in this suite have run. 
-
-<br><b>@BeforeTest</b>: The annotated method will be run before any test method belonging to the classes inside the <test> tag is run.
-
-<br><b>@AfterTest</b>: The annotated method will be run after all the test methods belonging to the classes inside the <test> tag have run.
-
-<br><b>@BeforeGroups</b>:   The list of groups that this configuration method will run before. This method is guaranteed to run shortly before the first test method that belongs to any of these groups is invoked.
-
-<br><b>@AfterGroups</b>:   The list of groups that this configuration method will run after.  This method is guaranteed to run shortly after the last test method that belongs to any of these groups is invoked.
-
-<br><b>@BeforeClass</b>: The annotated method will be run before the first test method in the current class is invoked.
-
-<br><b>@AfterClass</b>: The annotated method will be run after all the test methods in the current class have been run. 
-
-<br><b>@BeforeMethod</b>: The annotated method will be run before each test method.
-
-<br><b>@AfterMethod</b>: The annotated method will be run after each test method.
-
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>alwaysRun</tt>
-</td>
-<td>
-   For before methods (beforeSuite, beforeTest, beforeTestClass and
-   beforeTestMethod, but not beforeGroups):
-   If set to true, this configuration method will be run
-   regardless of what groups it belongs to. 
-   <br>
-   For after methods (afterSuite, afterClass, ...): 
-   If set to true, this configuration method will be run
-   even if one or more methods invoked previously failed or
-   was skipped.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>dependsOnGroups</tt>
-</td>
-<td>
-          The list of groups this method depends on.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>dependsOnMethods</tt>
-</td>
-<td>
-          The list of methods this method depends on.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>enabled</tt>
-</td>
-<td>
-          Whether methods on this class/method are enabled.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>groups</tt>
-</td>
-<td>
-          The list of groups this class/method belongs to.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>inheritGroups</tt>
-</td>
-<td>
-          If true, this method will belong to groups specified in the @Test annotation at the class level.
-</td>
-</tr>
-
-<tr class="separator">
-<td colspan="3"> </td>
-</tr>
-
-<tr>
-<td colspan="2"><tt><b>@DataProvider</b></tt></td><td><b>Marks a method as supplying data for a test method. The annotated method must return an Object[][] where each Object[] can be assigned the parameter list of the test method. The @Test method that wants to receive data from this DataProvider needs to use a dataProvider name equals to the name of this annotation.</b></td></tr><tr>
-<td>
-</td>
-<td>
-<tt>name</tt>
-</td>
-<td>
-The name of this DataProvider.
-</td>
-</tr>
-
-<tr>
-<td colspan="3"> </td>
-</tr>
-
-<tr>
-<td colspan="2"><b><tt>@Factory</tt></b></td><td><b> Marks a method as a factory that returns objects that will be used by TestNG as Test classes.  The method must return Object[].</b></td></tr><tr>
-<td colspan="3"> </td>
-</tr>
-
-<tr>
-<td colspan="2"><b><tt>@Listeners</tt></b></td><td><b>Defines listeners on a test class.</b></td></tr>
-<tr>
-  <td></td>
-  <td>
-    <tt>value</tt>
-  </td>
-  <td>
-    An array of classes that extend <tt>org.testng.ITestNGListener</tt>.
-  </td>
-</tr>
-
-<tr>
-<td colspan="3"> </td>
-</tr>
-
-<td colspan="2"><b><tt>@Parameters</tt></b></td><td><b>Describes how to pass parameters to a @Test method.</b></td></tr><tr>
-<td>
-</td>
-<td>
-<tt>value</tt>
-</td>
-<td>
-The list of variables used to fill the parameters of this method.
-</td>
-</tr>
-
-<tr>
-<td colspan="3"> </td>
-</tr>
-
-<tr>
-<td colspan="2"><b>@Test</b></td><td><b>Marks a class or a method as part of the test.</b></td></tr><tr>
-<td>
-</td>
-<td>
-<tt>alwaysRun</tt>
-</td>
-<td>
-          If set to true, this test method will always be run even if it depends on a method that failed.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>dataProvider</tt>
-</td>
-<td>
-The name of the data provider for this test method.
-</td>
-</tr>
-
-
-<tr>
-<td>
-</td>
-<td>
-<tt>dataProviderClass</tt>
-</td>
-<td>
-The class where to look for the data provider.  If not specified, the data provider will be looked on the class of the current test method or one of its base classes. If this attribute is specified, the data provider method needs to be static on the specified class.  
-</td>
-</tr>
-
-
-
-
-
-
-<tr>
-<td>
-</td>
-<td>
-<tt>dependsOnGroups</tt>
-</td>
-<td>
-          The list of groups this method depends on.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>dependsOnMethods</tt>
-</td>
-<td>
-          The list of methods this method depends on.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>description</tt>
-</td>
-<td>
-          The description for this method.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>enabled</tt>
-</td>
-<td>
-          Whether methods on this class/method are enabled.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>expectedExceptions</tt>
-</td>
-<td>
-           The list of exceptions that a test method is expected to throw.  If no exception or a different than one on this list is thrown, this test will be marked a failure.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>groups</tt>
-</td>
-<td>
-          The list of groups this class/method belongs to.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>invocationCount</tt>
-</td>
-<td>
-          The number of times this method should be invoked.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>invocationTimeOut</tt>
-</td>
-<td>
-          The maximum number of milliseconds this test should take for the cumulated time of all the invocationcounts.  This attribute will be ignored if invocationCount is not specified.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-
-<tt>successPercentage</tt>
-</td>
-<td>
-          The percentage of success expected from this method
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>sequential</tt>
-</td>
-<td>
-             If set to true, all the methods on this test class are guaranteed to run sequentially, even if the tests are currently being run with parallel="methods". This attribute can only be used at the class level and it will be ignored if used at the method level. 
-
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>timeOut</tt>
-</td>
-<td>
-          The maximum number of milliseconds this test should take.
-</td>
-</tr>
-
-<tr>
-<td>
-</td>
-<td>
-<tt>threadPoolSize</tt>
-</td>
-<td>
-             The size of the thread pool for this method.  
-The method will be invoked from multiple threads as specified by 
-invocationCount. <br>Note:  this attribute is ignored if invocationCount is not specified
-
-</td>
-</tr>
-
-</table>
-
-
-
-
-</pre>
-<!-------------------------------------
-  TESTNG.XML
-  ------------------------------------>
-  <h3><a name="testng-xml">3 - testng.xml</a></h3><p>You can invoke TestNG in several different ways:</p><ul>
-	<li>With a <tt>testng.xml</tt> file</li><li><a href="http://testng.org/doc/ant.html">With ant</a></li><li>From the command line</li></ul><p>This section describes the format of <tt>testng.xml</tt> (you will find documentation 
-on ant and the command line below).</p><p>The current DTD for <tt>testng.xml</tt> can be found on the main Web site: 
-<a href="http://testng.org/testng-1.0.dtd">http://testng.org/testng-1.0.dtd</a> 
-(for your convenience, you might prefer to browse the
-<a href="http://testng.org/dtd">HTML version</a>).</p><p>Here is an example <tt>testng.xml</tt> file:</p>
-
-
-<pre class="brush: xml">
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
- 
-<suite name="Suite1" verbose="1" >
-  <test name="Nopackage" >
-    <classes>
-       <class name="NoPackageTest" />
-    </classes>
-  </test>
-
-  <test name="Regression1">
-    <classes>
-      <class name="test.sample.ParameterSample"/>
-      <class name="test.sample.ParameterTest"/>
-    </classes>
-  </test>
-</suite>
-</pre>
-
-<p>You can specify package names instead of class names:</p>
-
-<pre class="brush: xml; highlight: [5,6,7]">
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
-<suite name="Suite1" verbose="1" >
-  <test name="Regression1"   >
-    <packages>
-      <package name="test.sample" />
-   </packages>
- </test>
-</suite>
-</pre>
-
-
-<p>In this example, TestNG will look at all the classes in the package 
-	<tt>test.sample</tt> and will retain only classes that have TestNG annotations.</p><p>You can also specify groups and methods to be included and excluded:</p>
-
-<pre class="brush: xml">
-<test name="Regression1">
-  <groups>
-    <run>
-      <exclude name="brokenTests"  />
-      <include name="checkinTests"  />
-    </run>
-  </groups>
- 
-  <classes>
-    <class name="test.IndividualMethodsTest">
-      <methods>
-        <include name="testMethod" />
-      </methods>
-    </class>
-  </classes>
-</test>
-</pre>
-
-<p>You can also define new groups inside <tt>testng.xml</tt> and specify additional details in attributes, such as whether to run the tests in parallel, how many threads to use, whether you are running JUnit tests, etc...  Please see the DTD for a complete list of the features, or read on.</p><!-------------------------------------
-  RUNNING TESTNG
-  ------------------------------------><h3><a name="running-testng">4 - Running TestNG</a></h3>TestNG can be invoked in different ways:
-
-<ul>
-<li>Command line
-</li>
-<li><a href="ant.html">ant</a>
-</li>
-<li><a href="eclipse.html">Eclipse</a>
-</li>
-<li><a href="idea.html">IntelliJ's IDEA</a>
-</li>
-</ul>
-
-This section only explains how to invoke TestNG from the command line.  Please click on one of the links above if you are interested in one of the other ways.
-<p>
-Assuming that you have TestNG in your class path, the simplest way to invoke TestNG is as follows:
-
-<pre class="brush: text">
-java org.testng.TestNG testng1.xml [testng2.xml testng3.xml ...]
-</pre>
-
-You need to specify at least one XML file describing the TestNG suite you are trying to run.  Additionally, the following command-line switches are available:
-
-</p>
-
-<table id="command-line">
-    <caption>Command Line Parameters</caption><colgroup class="option"/>
-    <colgroup class="argument"/>
-    <colgroup class="documentation"/>
-    <thead>
-
-        <tr>
-            <th>Option</th>
-    	<th>Argument</th>
-    	<th>Documentation</th>
-        </tr>
-    </thead>
-
-    <tbody>
-        <tr>
-            <td>-d</td>
-	    <td>A directory</td>
-	    <td>The directory where the reports will be generated (defaults to <tt>test-output</tt>).</td>
-        </tr>
-
-        <tr>
-            <td>-dataproviderthreadcount</td>
-	    <td>The default number of threads to use for data
-            providers when running tests in parallel.</td>
-	    <td>This sets the default maximum number of threads to use
-            for data providers when running tests in parallel. It will only take effect if the parallel mode has been selected (for example, with the -parallel option). This can be overridden in the suite definition.</td>
-        </tr>
-
-	<tr>
-            <td>-excludegroups</td>
-	    <td>A comma-separated list of groups.</td><td>The list of groups you want to be excluded from this run.</td>
-        </tr>
-	  
-        <tr>
-            <td>-groups</td>
-	    <td>A comma-separated list of groups.</td>
-	    <td>The list of groups you want to run (e.g. <tt>"windows,linux,regression"</tt>).</td>
-	</tr>
-
-        <tr>
-            <td>-listener</td>
-	    <td>A comma-separated list of Java classes that can be found on your classpath.</td>
-	    <td>Lets you specify your own test listeners.  The classes need to implement <a href="../javadocs/org/testng/ITestListener.html"> <tt>org.testng.ITestListener</tt></a></td>
-        </tr>
-
-        <tr>
-            <td>-parallel</td>
-	    <td>methods|tests</td>
-	    <td>If specified, sets the default mechanism used to determine how to use parallel threads when running tests. If not set, default mechanism is not to use parallel threads at all. This can be overridden in the suite definition.</td>
-        </tr>
-
-        <tr>
-            <td>-reporter</td>
-	    <td>The extended configuration for a custom report listener.</td>
-	    <td>Similar to the <tt>-listener</tt> option, except that it allows the configuration of JavaBeans-style properties on the reporter instance.
-	      <br>
-            Example: <tt>-reporter com.test.MyReporter:methodFilter=*insert*,enableFiltering=true</tt>
-	      <br>
-            You can have as many occurences of this option, one for each reporter that needs to be added.</td>
-        </tr>
-
-        <tr>
-            <td>-sourcedir</td>
-    	    <td>A semi-colon separated list of directories.</td>
-            <td>The directories where your javadoc annotated test sources are. This option is only necessary if you are using javadoc type annotations. (e.g. <tt>"src/test"</tt> or <tt>"src/test/org/testng/eclipse-plugin;src/test/org/testng/testng"</tt>).</td>
-        </tr>
-
-       <tr>
-           <td>-suitename</td>
-	   <td>The default name to use for a test suite.</td>
-	   <td>This specifies the suite name for a test suite defined on the command line. This option is ignored if the suite.xml file or the source code specifies a different suite name.  It is possible to create a suite name with spaces in it if you surround it with double-quotes "like this".</td>
-        </tr>
-        
-        <tr>
-            <td>-testclass</td>
-	    <td>A comma-separated list of classes that can be found in your classpath.</td><td>A list of class files separated by commas (e.g. <tt>"org.foo.Test1,org.foo.test2"</tt>).</td>
-	</tr>
-
-         <tr>
-            <td>-testjar</td>
-	    <td>A jar file.</td>
-	    <td>Specifies a jar file that contains test classes.  If a <tt>testng.xml</tt> file is found at the root of that jar file, it will be used, otherwise, all the test classes found in this jar file will be considered test classes.</td>
-        </tr>
-
-        <tr>
-            <td>-testname</td>
-	    <td>The default name to use for a test.</td>
-	    <td>This specifies the name for a test defined on the command line. This option is ignored if the suite.xml file or the source code specifies a different test name. It is possible to create a test name with spaces in it if you surround it with double-quotes "like this".</td>
-        </tr>
-
-        <tr>
-            <td>-testrunfactory</td>
-	    <td>A Java classes that can be found on your classpath.</td>
-	    <td>Lets you specify your own test runners.  The class needs to implement <a href="../javadocs/org/testng/ITestRunnerFactory.html"> <tt>org.testng.ITestRunnerFactory</tt></a>.</td>
-        </tr>
-
-        <tr>
-            <td>-threadcount</td>
-	    <td>The default number of threads to use when running tests in parallel.</td>
-	    <td>This sets the default maximum number of threads to use for running tests in parallel. It will only take effect if the parallel mode has been selected (for example, with the -parallel option). This can be overridden in the suite definition.</td>
-        </tr>
-           
-    </tbody>
-</table>
-
-<p>
-
-This documentation can be obtained by invoking TestNG without any arguments.
-
-<p>
-
-You can also put the command line switches in a text file, say <tt>c:\command.txt</tt>, and tell TestNG to use that file to retrieve its parameters:
-
-<pre class="brush: text">
-  C:> more c:\command.txt
-  -d test-output testng.xml
-  C:> java org.testng.TestNG @c:\command.txt
-</pre>
-
-<p>
-
-Additionally, TestNG can be passed properties on the command line of the Java Virtual Machine, for example
-
-<pre class="brush: text">
-java -Dtestng.test.classpath="c:/build;c:/java/classes;" org.testng.TestNG testng.xml
-</pre>
-
-Here are the properties that TestNG understands:
-
-<table id="system=properties">
-    <caption>System properties</caption>
-    <colgroup class="option"/>
-    <colgroup class="type"/>
-    <colgroup class="documentation"/>
-    <thead>
-      <tr><th>Property</th>
-      <th>Type</th>
-      <th>Documentation</th></tr>
-    </thead>
-
-    <tr>
-    <td>testng.test.classpath</td>
-    <td>A semi-colon separated series of directories that contain your test classes.</td>
-    <td>If this property is set, TestNG will use it to look for your test classes instead of the class path.  This is convenient if you are using the <tt>package</tt> tag in your XML file and you have a lot of classes in your classpath, most of them not being test classes.
-    </tr>
-</table>
-
-<br>
-
-<b>Example:</b>
-
-<pre class="brush: text">
-java org.testng.TestNG -groups windows,linux -testclass org.test.MyTest
-</pre>
-
-Note that the <a href="ant.html">ant task</a> and <a href="#testng-xml">testng.xml</a> allow you to launch TestNG with more parameters (methods to include, specifying parameters, etc...), so you should consider using the command line only when you are trying to learn about TestNG and you want to get up and running quickly.
-
-<!-------------------------------------
-  METHODS
-  ------------------------------------>
-
-<h3><a name="methods">5 - Test methods, Test classes and Test groups</a></h3><h4><a name="test-groups">5.1 - Test groups</a></h4><p>TestNG allows you to perform sophisticated groupings of test methods. Not 
-only can you declare that methods belong to groups, but you can also specify 
-groups that contain other groups. Then TestNG can be invoked and asked to 
-include a certain set of groups (or regular expressions) while excluding another 
-set.  This gives you maximum flexibility in how you partition your tests 
-and doesn't require you to recompile anything if you want to run two different 
-sets of tests back to back.</p><p>For example, it is quite common to have at least two categories of tests</p><ul>
-  <li>Check-in tests.  These tests should be run before you submit new 
-	code.  They should typically be fast and just make sure no basic 
-	functionality was broken.<br>
- </li>
-  <li>Functional tests.  These tests should cover all the functionalities 
-	of your software and be run at least once a day, although ideally you would 
-	want to run them continuously.</li></ul><p>Typically, check-in tests are a subset of functional tests.  TestNG 
-allows you to specify this in a very intuitive way with test groups.  For 
-example, you could structure your test by saying that your entire test class 
-belongs to the "functest" group, and additionally that a couple of methods 
-belong to the group "checkintest":</p>
-
-<pre class="brush: java">
-public class Test1 {
-  @Test(groups = { "functest", "checkintest" })
-  public void testMethod1() {
-  }
-
-  @Test(groups = {"functest", "checkintest"} )
-  public void testMethod2() {
-  }
-
-  @Test(groups = { "functest" })
-  public void testMethod3() {
-  }
-}
-</pre>
-
-<p>Invoking TestNG with </p>
-
-<pre class="brush: xml">
-<test name="Test1">
-  <groups>
-    <run>
-      <include name="functest"/>
-    </run>
-  </groups>
-  <classes>
-    <class name="example1.Test1"/>
-  </classes>
-</test>
-</pre>
-
-<p>will run all the test methods in that classes, while invoking it with <tt>checkintest</tt> will only run 
-<tt>testMethod1()</tt> and <tt>testMethod2()</tt>.</p><p>Here is another example, using regular expressions this time.  Assume 
-that some of your test methods should not be run on Linux, your test would look 
-like:</p>
-
-<pre class="brush: java">
- at Test
-public class Test1 {
-  @Test(groups = { "windows.checkintest" }) 
-  public void testWindowsOnly() {
-  }
-
-  @Test(groups = {"linux.checkintest"} )
-  public void testLinuxOnly() {
-  }
-
-  @Test(groups = { "windows.functest" )
-  public void testWindowsToo() {
-  }
-}
-</pre>
-
-<p>
-You could use the following testng.xml to launch only the Windows methods:
-</p>
-<pre class="brush: xml; highlight: [4,9]">
-<test name="Test1">
-  <groups>
-    <run>
-      <include name="windows.*"/>
-    </run>
-  </groups>
-
-  <classes>
-    <class name="example1.Test1"/>
-  </classes>
-</test>
-</pre>
-
-<blockquote>
-<em>Note:  TestNG uses <a href="http://en.wikipedia.org/wiki/Regular_expression">regular expressions</a>, and not <a href="http://en.wikipedia.org/wiki/Wildmat">wildmats</a>.  Be aware of the difference (for example, "anything" is matched by ".*" -- dot star -- and not "*").</em>
-</blockquote>
-
-<h4><a name="method-groups">Method groups</a></h4>You can also exclude or include individual methods:
-
-<pre class="brush: xml">
-<test name="Test1">
-  <classes>
-    <class name="example1.Test1">
-      <methods>
-        <include name=".*enabledTestMethod.*"/>
-        <exclude name=".*brokenTestMethod.*"/>
-      </methods>
-     </class>
-  </classes>
-</test>
-</pre>
-
-This can come in handy to deactivate a single method without having to recompile 
-anything, but I don't recommend using this technique too much since it makes 
-your testing framework likely to break if you start refactoring your Java code 
-(the regular expressions used in the tags might not match your methods any 
-more).
-<h4><a name="groups-of-groups">5.2 - Groups of groups</a></h4><p>Groups can also include other groups. These groups are called "MetaGroups".  
-For example, you might want to define a group "all" that includes "checkintest" 
-and "functest".  "functest" itself will contain the groups "windows" and 
-"linux" while "checkintest will only contain "windows".  Here is how you 
-would define this in your property file:</p>
-
-
-<pre class="brush: xml">
-<test name="Regression1">
-  <groups>
-    <define name="functest">
-      <include name="windows"/>
-      <include name="linux"/>
-    </define>
- 
-    <define name="all">
-      <include name="functest"/>
-      <include name="checkintest"/>
-    </define>
- 
-    <run>
-      <include name="all"/>
-    </run>
-  </groups>
- 
-  <classes>
-    <class name="test.sample.Test1"/>
-  </classes>
-</test>
-</pre>
-
-</p><!-------------------------------------
-  EXCLUSION
-  ------------------------------------><h4><a name="exclusions">5.3 - Exclusion groups</a></h4><p>TestNG allows you to include groups as well as exclude them.</p><p>For example, it is quite usual to have tests that temporarily break because 
-of a recent change, and you don't have time to fix the breakage yet.  4
-However, you do want to have clean runs of your functional tests, so you need to 
-deactivate these tests but keep in mind they will need to be reactivated.</p><p>A simple way to solve this problem is to create a group called "broken" and 
-make these test methods belong to it.  For example, in the above example, I 
-know that testMethod2() is now broken so I want to disable it:</p>
-
-<pre class="brush: java">
- at Test(groups = {"checkintest", "broken"} )
-public void testMethod2() {
-}
-</pre>
-<p>All I need to do now is to exclude this group from the run:
-
-<pre class="brush: xml; highlight: 5">
-<test name="Simple example">
-  <groups>
-    <run>
-      <include name="checkintest"/>
-      <exclude name="broken"/>
-    </run>
-  </groups>
- 
-  <classes>
-    <class name="example1.Test1"/>
-  </classes>
-</test>
-</pre>
-
-<p>This way, I will get a clean test run while keeping track of what tests are 
-broken and need to be fixed later.</p>
-
-<blockquote>
-	<p><i>Note:  you can also disable tests on an individual basis by using the 
-"enabled" property available on both @Test and @Before/After
-	annotations.</i></p>
-</blockquote><h4>
-
-
-<!-------------------------------------
-  PARTIAL GROUPS
-  ------------------------------------>
-
-<a name="partial-groups">5.4 - Partial groups</a></h4><p>You can define 
-groups at the class level and then add groups at the method level:</p>
-
-<pre class="brush: java">
- at Test(groups = { "checkin-test" })
-public class All {
-
-  @Test(groups = { "func-test" )
-  public void method1() { ... }
-
-  public void method2() { ... }
-}
-</pre>
-
-In this class, method2() is part of the group "checkin-test", which is defined 
-at the class level, while method1() belongs to both "checkin-test" and 
-"func-test".
-
-<!-------------------------------------
-  PARAMETERS
-  ------------------------------------>
-
-<h4><a name="parameters">5.5 - Parameters</a></h4><p>
-
-
-Test methods don't have to be parameterless.  You can use an arbitrary 
-number of parameters on each of your test method, and you instruct TestNG to 
-pass you the correct parameters with the <tt>@Parameters</tt> annotation.</p><p>
-
-
-There are two ways to set these parameters:  with <tt>testng.xml</tt> or 
-programmatically.</p><p>
-
-
-  <em><a name="parameters-testng-xml">5.5.1 - Parameters from <tt>testng.xml</tt></a></em></p><p>
-
-
-If you are using simple values for your parameters, you can specify them in your 
-<tt>testng.xml</tt>:</p>
-
-<pre class="brush: java">
- at Parameters({ "first-name" })
- at Test
-public void testSingleString(String firstName) { 
-  System.out.println("Invoked testString " + firstName);
-  assert "Cedric".equals(firstName);
-}
-</pre>
-
-In this code, we specify that the parameter <tt>firstName</tt> of your Java method 
-should receive the value of the XML parameter called <tt>first-name</tt><i>.</i>  
-This XML parameter is defined in <tt>testng.xml</tt>:<p>
-
-<pre class="brush: xml">
-<suite name="My suite">
-  <parameter name="first-name"  value="Cedric"/>
-  <test name="Simple example">
-  <-- ... -->
-</pre>
-
-<h4><span style="font-weight: 400">The same technique can be used for <tt>@Before/After </tt>and <tt>@Factory</tt> annotations:</span></h4>
-
-<pre class="brush: java">
- at Parameters({ "datasource", "jdbcDriver" })
- at BeforeMethod
-public void beforeTest(String ds, String driver) {
-  m_dataSource = ...;                              // look up the value of datasource
-  m_jdbcDriver = driver;
-}
-</pre>
-
-This time, the two Java parameter <i>ds</i> 
-and <i>driver</i> will receive the value given to the properties <tt>datasource</tt> 
-and <tt>jdbc-driver </tt>respectively. 
-
-<p>
-
-Parameters can be declared optional with the <a href="../javadocs/org/testng/annotations/Optional.html"><tt>Optional</tt></a> annotation:
-
-<pre class="brush: java">
- at Parameters("db")
- at Test
-public void testNonExistentParameter(@Optional("mysql") String db) { ... }
-</pre>
-
-If no parameter named "db" is found in your <tt>testng.xml</tt> file, your test method will receive the default value specified inside the <tt>@Optional</tt> annotation: "mysql".
-
-<p>The <tt>@Parameters</tt> annotation can be placed at the following locations:</p><ul>
-	<li>On any method that already has a <tt>@Test</tt>, <tt>@Before/After</tt> 
-	or <tt>@Factory</tt> annotation.</li><li>On at most one constructor of your test class.  In this case, 
-	TestNG will invoke this particular constructor with the parameters 
-	initialized to the values specified in <tt>testng.xml</tt> whenever it needs 
-	to instantiate your test class.  This feature can be used to initialize fields 
-	inside your classes to values that will then be used by your
-	test methods.</li></ul>
-	<blockquote>
-	<p><i>Notes:
-
-</i>
-	<ul>
-		<li><i>The XML parameters are mapped to the Java parameters in the same order as 
-they are found in the annotation, and TestNG will issue an error if the numbers 
-don't match. </i>
-		<li><i>Parameters are scoped. In <tt>testng.xml</tt>, you can declare them either under a 
-		<tt><suite></tt> tag or under <tt><test></tt>. If two parameters have the same name, it's the one 
-defined in <tt><test></tt> that has precedence. This is convenient if you need to specify 
-a parameter applicable to all your tests and override its value only for certain 
-tests. </i>
-		</ul>
-	<p></p>
-</blockquote>
-
-
-  <em><a name="parameters-dataproviders">5.5.2 - Parameters with DataProviders</a></em>
-
-
-<p>Specifying parameters in <tt>testng.xml</tt> might not be sufficient in the following 
-cases:</p><ul>
-	<li>You are not using a <tt>testng.xml</tt>.</li><li>You need to pass complex parameters, or parameters that need to be created 
-from Java (complex objects, objects read from a property file or a database, etc...).</li></ul><p>In this case, you can use a Data Provider to supply the values you need to 
-test.  A Data Provider is a method on your class that returns an array of 
-array of objects.  This method is annotated with @DataProvider:
-
-<pre class="brush: java">
-//This method will provide data to any test method that declares that its Data Provider
-//is named "test1"
- at DataProvider(name = "test1")
-public Object[][] createData1() {
- return new Object[][] {
-   { "Cedric", new Integer(36) },
-   { "Anne", new Integer(37)}, 
- };
-}
-
-//This test method declares that its data should be supplied by the Data Provider
-//named "test1"
- at Test(dataProvider = "test1")
-public void verifyData1(String n1, Integer n2) {
- System.out.println(n1 + " " + n2);
-} 
-</pre>
-will print
-
-<pre class="brush: text">
-Cedric 36
-Anne 37
-</pre>
-
-A <tt>@Test</tt> method specifies its Data Provider with the <tt>dataProvider</tt> attribute.  
-This name must correspond to a method on the same class annotated with <tt>@DataProvider(name="...")</tt> 
-with a matching name.
-
-<p>
-By default, the data provider will be looked for in the current test class or one of its base classes.  If you want to put your data provider in a different class, it needs to be a static method and you specify the class where it can be found in the <tt>dataProviderClass</tt> attribute:
-
-<pre class="brush: java">
-public static class StaticProvider {
-  @DataProvider(name = "create")
-  public static Object[][] createData() {
-    return new Object[][] {
-      new Object[] { new Integer(42) }
-    }
-  }
-}
-
-public class MyTest {
-  @Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
-  public void test(Integer n) {
-    // ...
-  }
-}
-</pre>
-
-The Data Provider method can return one of the following two types:
-
-<ul>
-<li>An array of array of objects (<tt>Object[][]</tt>) where the first dimension's size is the number of times the test method will be invoked and the second dimension size contains an array of objects that must be compatible with the parameter types of the test method. This is the cast illustrated by the example above.</li><li>An <tt>Iterator<Object[]></tt>.  The only difference with <tt>Object[][]</tt> is that an <tt>Iterator</tt> lets you create your test data lazily.  TestNG wi [...]
-</ul>
-Here is an example of this feature:
-
-<pre class="brush: java">
- at DataProvider(name = "test1")
-public Iterator<Object[]> createData() {
-  return new MyIterator(DATA);
-} 
-</pre>
-
-If you declare your <tt>@DataProvider</tt> as taking a <tt>java.lang.reflect.Method</tt>
-as first parameter, TestNG will pass the current test method for this
-first parameter.  This is particularly useful when several test methods
-use the same <tt>@DataProvider</tt> and you want it to return different
-values depending on which test method it is supplying data for.
-<p>
-For example, the following code prints the name of the test method inside its <tt>@DataProvider</tt>:
-
-<pre class="brush: java">
- at DataProvider(name = "dp")
-public Object[][] createData(Method m) {
-  System.out.println(m.getName());  // print test method name
-  return new Object[][] { new Object[] { "Cedric" }};
-}
-
- at Test(dataProvider = "dp")
-public void test1(String s) {
-}
-
- at Test(dataProvider = "dp")
-public void test2(String s) {
-}
-</pre>
-
-and will therefore display:
-
-<pre class="brush: text">
-test1
-test2
-</pre>
-
-Data providers can run in parallel with the attribute <tt>parallel</tt>:
-
-<pre class="brush: java">
- at DataProvider(parallel = true)
-// ...
-</pre>
-
-Parallel data providers running from an XML file share the same pool of threads, which has a size of 10 by default.  You can modify this value in the <tt><suite></tt> tag of your XML file:
-
-
-<pre class="brush: xml">
-<suite name="Suite1" data-provider-thread-count="20" >
-... 
-</pre>
-
-If you want to run a few specific data providers in a different thread pool, you need to run them from a different XML file.
-
-  <em><a name="parameters-reports">5.5.3 - Parameters in reports</a></em>
-
-<p>
-
-Parameters used to invoke your test methods are shown in the HTML reports generated by TestNG.  Here is an example:
-
-<p align="center">
-<img src="pics/parameters.png" />
-</p>
-
-
-</p>
-
-
-<!-------------------------------------
-  DEPENDENT METHODS
-  ------------------------------------>
-
-
-<h4><a name="dependent-methods">5.6 - Dependent methods</a></h4><p>Sometimes, you need your test methods to be invoked in a certain order.  
-This is useful for example 
-
-<ul>
-<li>To make sure a certain number of test methods have completed and succeeded 
-before running more test methods.
-<li>To initialize your tests while wanting this initialization methods to be 
-test methods as well (methods tagged with <tt>@Before/After</tt> will not be part of the 
-final report).
-</ul>
-
-</p>
-<p>In order to do this, you can use the attributes <tt>dependsOnMethods</tt> or
-<tt>dependsOnGroups</tt>, found on the <tt>@Test</tt> annotation.</p>There are two kinds of dependencies:
-
-<ul>
-<li><b>Hard dependencies</b>.  All the methods you depend on must have run and succeeded for you to run.  If at least one failure occurred in your dependencies, you will not be invoked and marked as a SKIP in the report.
-</li>
-<li><b>Soft dependencies</b>.  You will always be run after the methods you depend on, even if some of them have failed.  This is useful when you just want to make sure that your test methods are run in a certain order but their success doesn't really depend on the success of others.  A soft dependency is obtained by adding <tt>"alwaysRun=true"</tt> in your <tt>@Test</tt> annotation.
-</ul>
-
-Here is an example of a hard dependency:
-
-<pre class="brush: java">
- at Test
-public void serverStartedOk() {}
-
- at Test(dependsOnMethods = { "serverStartedOk" })
-public void method1() {}
-</pre>
-
-<p>In this example, <tt>method1()</tt> is declared as depending on method 
-serverStartedOk(), which guarantees that serverStartedOk() 
-will always be invoked first.</p><p>You can also have methods that depend on entire groups:</p>
-
-<pre class="brush: java">
- at Test(groups = { "init" })
-public void serverStartedOk() {}
-
- at Test(groups = { "init" })
-public void initEnvironment() {}
-
- at Test(dependsOnGroups = { "init.* })
-public void method1() {}
-</pre>
-
-<p>In this example, method1() is declared as depending on any group matching the 
-regular expression "init.*", which guarantees that the methods <tt>serverStartedOk()</tt> 
-and <tt>initEnvironment()</tt> will always be invoked before <tt>method1()</tt>.  </p>
-<blockquote>
-	<p><i>Note:  as stated before, the order of invocation for methods that 
-	belong in the same group is not guaranteed to be the same across test runs.</i></p></blockquote><p>If a method depended upon fails and you have a hard dependency on it (<tt>alwaysRun=false</tt>, which is the default), the methods that depend on it are <b>not</b> 
-marked as <tt>FAIL</tt> but as <tt>SKIP</tt>.  Skipped methods will be reported as such in 
-the final report (in a color that is neither red nor green in HTML), 
-which is important since skipped methods are not necessarily failures.</p><p>Both <tt>dependsOnGroups</tt> and <tt>dependsOnMethods</tt> accept regular 
-expressions as parameters.  For <tt>dependsOnMethods</tt>, if you are 
-depending on a method which happens to have several overloaded versions, all the 
-overloaded methods will be invoked.  If you only want to invoke one of the 
-overloaded methods, you should use <tt>dependsOnGroups</tt>.</p><p>For a more advanced example of dependent methods, please refer to 
-<a href="http://beust.com/weblog/archives/000171.html">this article</a>, which 
-uses inheritance to provide an elegant solution to the problem of multiple 
-dependencies.</p>
-
-<!-------------------------------------
-  FACTORIES
-  ------------------------------------><h4>
-<a name="factories">5.7 - Factories</a>
-</h4>
-
-<p>Factories allow you to create tests dynamically. For example, imagine you 
-want to create a test method that will access a page on a Web site several 
-times, and you want to invoke it with different values:</p>
-
-<pre class="brush: java">
-public class TestWebServer {
-  @Test(parameters = { "number-of-times" })
-  public void accessPage(int numberOfTimes) {
-    while (numberOfTimes-- > 0) {
-     // access the web page
-    }
-  }
-}
-</pre>
-
-<tt>testng.xml:</tt></p>
-
-<pre class="brush: java">
-<test name="T1">
-  <parameter name="number-of-times" value="10"/>
-  <class name= "TestWebServer" />
-</test>
-
-<test name="T2">
-  <parameter name="number-of-times" value="20"/>
-  <class name= "TestWebServer"/>
-</test>
-
-<test name="T3">
-  <parameter name="number-of-times" value="30"/>
-  <class name= "TestWebServer"/>
-</test>
-</pre>
-
-<p>This can become quickly impossible to manage, so instead, you should use a 
-factory:</p>
-
-<pre class="brush: java">
-public class WebTestFactory {
-  @Factory
-  public Object[] createInstances() {
-   Object[] result = new Object[10];  
-   for (int i = 0; i < 10; i++) {
-      result[i] = new WebTest(i * 10);
-    return result;
-  }
-}
-</pre>
-
-and the new test class is now:</p>
-
-<pre class="brush: java">
-public class WebTest {
-  private int m_numberOfTimes;
-  public WebTest(int numberOfTimes) {
-    m_numberOfTimes = numberOfTimes;
-  }
-
-  @Test
-  public void testServer() {
-   for (int i = 0; i < m_numberOfTimes; i++) {
-     // access the web page
-    }
-  }
-}
-</pre>
-
-<p>Your <tt>testng.xml</tt> only needs to reference the class that 
-contains the factory method, since the test instances themselves will be created 
-at runtime:</p>
-
-<pre class="brush: java">
-<class name="WebTestFactory" />
-</pre>
-
-<p>The factory method can receive parameters just like <tt>@Test</tt> and <tt>@Before/After</tt> and it must return <tt>Object[]</tt>.  
-The objects returned can be of any class (not necessarily the same class as the 
-factory class) and they don't even need to contain TestNG annotations (in which 
-case they will be ignored by TestNG).</p>
-
-<!------- -->
-<!-- ANT  -->
-<!------- -->
-
-<!-- end maven stuff -->
-
-<!-------------------------------------
-  CLASS LEVEL ANNOTATIONS
-  ------------------------------------>
-
-<h4><a name="class-level">5.8 - Class level annotations</a></h4>
-
-The <tt>@Test</tt> annotation can be put on a class instead of a test method:
-
-<pre class="brush: java">
- at Test
-public class Test1 {
-  public void test1() {
-  }
-
-  public void test2() {
-  }
-}
-</pre>
-The effect of a class level <tt>@Test</tt> annotation is to make all the public methods of this class to become test methods even if they are not annotated.  You can still repeat the <tt>@Test</tt> annotation on a method if you want to add certain attributes.
-<p>
-For example:
-<pre class="brush: java">
- at Test
-public class Test1 {
-  public void test1() {
-  }
-
-  @Test(groups = "g1")
-  public void test2() {
-  }
-}
-</pre>
-will make both <tt>test1()</tt> and <tt>test2()</tt> test methods but on top of that, <tt>test2()</tt> now belongs to the group "g1".
-<p>
-
-
-
-<!-------------------------------------
-  PARALLEL RUNNING
-  ------------------------------------>
-
-<h4><a name="parallel-running">5.9 - Parallel running and time-outs</a></h4>You can 
-instruct TestNG to run your tests in separate threads by using the <i>parallel</i> 
-attribute on the suite tag.  This attribute can take one of following values:
-
-<pre class="brush: xml">
-<suite name="My suite" parallel="methods" thread-count="5">
-</pre>
-
-<pre class="brush: xml">
-<suite name="My suite" parallel="tests" thread-count="5">
-</pre>
-
-<pre class="brush: xml">
-<suite name="My suite" parallel="classes" thread-count="5">
-</pre>
-
-<ul>
-<li>
-<b><tt>parallel="methods"</tt></b>:  TestNG will run all your test methods in separate threads, except for methods that depend on each other, which will be run in the same thread in order to 
-respect their order of execution. 
-</li>
-
-<br>
-
-<li>
-<b><tt>parallel="tests"</tt></b>:  TestNG will run all the methods in the same <test> tag in the same thread, but each <test> tag will be in a separate thread.  This allows you to group all your classes that are not thread safe in the same <test> and guarantee they will all run in the same thread while taking advantage of TestNG using as many threads as possible to run your tests.
-</li>
-
-<br>
-
-<li>
-<b><tt>parallel="classes"</tt></b>:  TestNG will run all the methods in the same class in the same thread, but each class will be run in a separate thread.
-</li>
-
-
-</ul>
-
-<p>
-
-
-Additionally, the attribute <i>
-thread-count</i> allows you to specify how many threads should be allocated for 
-this execution.<blockquote>
-	<p><i>Note: the <tt>@Test</tt> attribute <tt>timeOut</tt> works in both 
-	parallel and non-parallel mode.</i></p></blockquote>You can also specify that a <tt>@Test</tt> method should be invoked from different threads.  You can use the attribute <tt>threadPoolSize</tt> to achieve this result:
-
-<pre class="brush: java">
- at Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)
-public void testServer() {
-</pre>
-In this example, the function <tt>testServer</tt> will be invoked ten times from three different threads.  Additionally, a time-out of ten seconds guarantees that none of the threads will block on this thread forever. 
-
-<!-------------------------------------
-  RERUNNING
-  ------------------------------------>
-
-
-<h4><a name="rerunning">5.10 - Rerunning failed tests</a></h4>Every time tests fail in a suite, TestNG creates a file called <tt>testng-failed.xml</tt> in the output directory.
-This XML file contains the necessary information to rerun only these methods 
-that failed, allowing you to quickly reproduce the failures without having to 
-run the entirety of your tests.  Therefore, a typical session would look 
-like this:
-
-<pre class="brush: text">
-java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs testng.xml
-java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs test-outputs\testng-failed.xml
-</pre>
-
-<p>Note that <tt>testng-failed.xml</tt> will contain all the necessary dependent 
-methods so that you are guaranteed to run the methods that failed without any 
-SKIP failures.</p><h4><a name="junit">5.11 - JUnit tests</a></h4>TestNG can run JUnit tests.  All you need to do is specify your JUnit test 
-classes in the <tt>testng.classNames</tt> property and set the <tt>testng.junit</tt> property to 
-true:<br>
-<p></p>
-<pre class="brush: xml">
-<test name="Test1" junit="true">
-  <classes>
-    <!-- ... -->
-</pre>
-
-<p>The behavior of TestNG in this case is similar to JUnit:<br>
-</p>
-<ul>
-  <li>All methods starting with test* in your classes will be run</li><li>If there is a method setUp() on your test class, it will be invoked before 
-	every test method</li><li>If there is a method tearDown() on your test class, it will be invoked 
-	before after every test method</li><li>If your test class contains a method suite(), all the tests returned by 
-	this method will be invoked</li></ul><!-------------------------------------
-  JUNIT
- ------------------------------------><h4>
-
-
-<!-------------------------------------
-  RUNNING TESTNG
- ------------------------------------><h4>
-<a name="running-testng-programmatically">5.13 - Running TestNG programmatically</a>
-</h4>
-
-<p>You can invoke TestNG from your own programs very easily:</p>
-
-<pre class="brush: java">
-TestListenerAdapter tla = new TestListenerAdapter();
-TestNG testng = new TestNG();
-testng.setTestClasses(new Class[] { Run2.class });
-testng.addListener(tla);
-testng.run(); 
-</pre>
-
-This example creates a <tt><a href="http://testng.org/javadocs/org/testng/TestNG.html">TestNG</a></tt> object and runs the test class <tt>Run2</tt>.  It also adds a <tt>TestListener</tt>.  You can either use the adapter class <tt><a href="http://testng.org/javadocs/org/testng/TestListenerAdapter.html">org.testng.TestListenerAdapter</a></tt> or implement <tt><a href="http://testng.org/javadocs/org/testng/ITestListener.html">org.testng.ITestListener</a></tt> yourself.  This interface conta [...]
-<p>
-Similary, you can invoke TestNG on a <tt>testng.xml</tt> file or you can create a virtual <tt>testng.xml</tt> file yourself.  In order to do this, you can use the classes found the package <tt><a href="http://testng.org/javadocs/org/testng/xml/package-frame.html">org.testng.xml</a></tt>:  <tt><a href="http://testng.org/javadocs/org/testng/xml/XmlClass.html">XmlClass</a></tt>, <tt><a href="http://testng.org/javadocs/org/testng/xml/XmlTest.html">XmlTest</a></tt>, etc...  Each of these clas [...]
-<p>
-For example, suppose you want to create the following virtual file:
-
-<pre class="brush: java">
-<suite name="TmpSuite" >
-  <test name="TmpTest" >
-    <classes>
-      <class name="test.failures.Child"  />
-    <classes>
-    </test>
-</suite>
-</pre>
-
-You would use the following code:
-
-<pre class="brush: java">
-XmlSuite suite = new XmlSuite();
-suite.setName("TmpSuite");
-
-XmlTest test = new XmlTest(suite);
-test.setName("TmpTest");
-List<XmlClass> classes = new ArrayList<XmlClass>();
-classes.add(new XmlClass("test.failures.Child"));
-test.setXmlClasses(classes) ;
-</pre>
-And then you can pass this <tt>XmlSuite</tt> to TestNG:
-
-<pre class="brush: java">
-List<XmlSuite> suites = new ArrayList<XmlSuite>();
-suites.add(suite);
-TestNG tng = new TestNG();
-tng.setXmlSuites(suites);
-tng.run(); 
-</pre>
-
-<p>Please see the <a href="../doc/javadocs/org/testng/package-summary.html" target="mainFrame">JavaDocs</a> for the entire API.</p><p>
-
-
-<!-------------------------------------
-  BEANSHELL
- ------------------------------------>
-	
-<h4>
-<a name="beanshell">5.14 - BeanShell and advanced group selection</a>
-</h4>
-
-
-	<p>If the <tt><include></tt> and <tt><exclude></tt> tags in <tt>testng.xml</tt> are not enough for your needs, you can use a <a href="http://beanshell.org">BeanShell</a> expression to decide whether a certain test method should be included in a test run or not. You specify this expression just under the <tt><test></tt> tag:</p>
-
-<pre class="brush: xml">
-<test name="BeanShell test">
-   <method-selectors>
-     <method-selector>
-       <script language="beanshell"><![CDATA[
-         groups.containsKey("test1")
-       ]]></script>
-     </method-selector>
-   </method-selectors>
-  <!-- ... -->
-</pre>
-
-When a <tt><script></tt> tag is found in <tt>testng.xml</tt>, TestNG will ignore subsequent <tt><include></tt> and <tt><exclude></tt> of groups and methods in the current <tt><test></tt> tag:  your BeanShell expression will be the only way to decide whether a test method is included or not.</p><p>Here are additional information on the BeanShell script:</p><ul>
-<li>
-It must return a boolean value.  Except for this constraint, any valid BeanShell code is allowed (for example, you might want to return <tt>true </tt>during week days and false during weekends, which would allow you to run tests differently depending on the date).<br> 
-</li>
-<li>
-TestNG defines the following variables for your convenience:<br>  <b><tt>java.lang.reflect.Method method</tt></b>:  the current test method.<br>  <b>org.testng.ITestNGMethod testngMethod</b>:  the description of the current test method.<br>  <b><tt>java.util.Map<String, String> groups</tt></b>:  a map of the groups the current test method belongs to.<br> 
-</li>
-<li>
-You might want to surround your expression with a <tt>CDATA</tt> declaration (as shown above) to avoid tedious quoting of reserved XML characters).<br> 
-</li>
-</ul>
-
-<!-------------------------------------
-  ANNOTATION TRANSFORMERS
- ------------------------------------>
-	
-<h4>
-<a name="annotationtransformers">5.15 - Annotation Transformers</a>
-</h4>
-
-TestNG allows you to modify the content of all the annotations at runtime.  This is especially useful if the annotations in the source code are right most of the time, but there are a few situations where you'd like to override their value.
-<p>
-
-In order to achieve this, you need to use an Annotation Transformer.
-
-<p>
-
-An Annotation Transformer is a class that implements the following interface:
-
-<pre class="brush: java">
-public interface IAnnotationTransformer {
-
-  /**
-   * This method will be invoked by TestNG to give you a chance
-   * to modify a TestNG annotation read from your test classes.
-   * You can change the values you need by calling any of the
-   * setters on the ITest interface.
-   * 
-   * Note that only one of the three parameters testClass,
-   * testConstructor and testMethod will be non-null.
-   * 
-   * @param annotation The annotation that was read from your
-   * test class.
-   * @param testClass If the annotation was found on a class, this
-   * parameter represents this class (null otherwise).
-   * @param testConstructor If the annotation was found on a constructor,
-   * this parameter represents this constructor (null otherwise).
-   * @param testMethod If the annotation was found on a method,
-   * this parameter represents this method (null otherwise).
-   */
-  public void transform(ITest annotation, Class testClass,
-      Constructor testConstructor, Method testMethod);
-}
-</pre>
-
-Like all the other TestNG listeners, you can specify this class either on the command line or with ant:
-
-<pre class="brush: java">
-  java org.testng.TestNG -listener MyTransformer testng.xml
-</pre>
-
-or programmatically:
-
-<pre class="brush: java">
-  TestNG tng = new TestNG();
-  tng.setAnnotationTransformer(new MyTransformer());
-  // ...
-</pre>
-
-When the method <tt>transform()</tt> is invoked, you can call any of the setters on the <tt>ITest test</tt> parameter to alter its value before TestNG proceeds further.
-<p>
-For example, here is how you would override the attribute <tt>invocationCount</tt> but only on the test method <tt>invoke()</tt> of one of your test classes:
-
-<pre class="brush: java">
-  public class MyTransformer implements IAnnotationTransformer {
-    public void transform(ITest annotation, Class testClass,
-        Constructor testConstructor, Method testMethod)
-    {
-      if ("invoke".equals(testMethod.getName())) {
-        annotation.setInvocationCount(5);
-      }
-    }
-  }
-</pre>
-
-<tt>IAnnotationTransformer</tt> only lets you modify a <tt>@Test</tt> annotation.  If you need to modify another TestNG annotation (a configuration annotation, <tt>@Factory</tt> or <tt>@DataProvider</tt>), use an <tt>IAnnotationTransformer2</tt>.
-
-<!-------------------------------------
-  METHOD INTERCEPTORS
- ------------------------------------>
-	
-<h4>
-<a name="methodinterceptors">5.16 - Method Interceptors</a>
-</h4>
-Once TestNG has calculated in what order the test methods will be invoked, these methods are split in two groups:
-
-<ul>
-  <li><em>Methods run sequentially</em>.  These are all the test methods that have dependencies or dependents.  These methods will be run in a specific order.
-  <li><em>Methods run in no particular order</em>.  These are all the methods that don't belong in the first category.  The order in which these test methods are run is random and can vary from one run to the next (although by default, TestNG will try to group test methods by class).
-</ul>
-
-In order to give you more control on the methods that belong to the second category, TestNG defines the following interface:
-
-<pre class="brush: java">
-public interface IMethodInterceptor {
-  
-  List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context);
-
-}
-
-</pre>
-
-The list of methods passed in parameters are all the methods that can be run in any order.  Your <tt>intercept</tt> method is expected to return a similar list of <tt>IMethodInstance</tt>, which can be either of the following:
-
-<ul>
-  <li>The same list you received in parameter but in a different order.
-  <li>A smaller list of <tt>IMethodInstance</tt> objects.
-  <li>A bigger list of <tt>IMethodInstance</tt> objects.
-</ul>
-
-Once you have defined your interceptor, you pass it to TestNG as a listener.  For example:
-
-<pre class="brush: text">
-java -classpath "testng-jdk15.jar:test/build" org.testng.TestNG -listener test.methodinterceptors.NullMethodInterceptor
-   -testclass test.methodinterceptors.FooTest
-</pre>
-
-For the equivalent <tt>ant</tt> syntax, see the <tt>listeners</tt> attribute in the <a href="ant.html">ant documentation</a>.
-<p>
-For example, here is a Method Interceptor that will reorder the methods so that test methods that belong to the group "fast" are always run first:
-
-<pre class="brush: java">
-public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
-  List<IMethodInstance> result = new ArrayList<IMethodInstance>();
-  for (IMethodInstance m : methods) {
-    Test test = m.getMethod().getMethod().getAnnotation(Test.class);
-    Set<String> groups = new HashSet<String>();
-    for (String group : test.groups()) {
-      groups.add(group);
-    }
-    if (groups.contains("fast")) {
-      result.add(0, m);
-    }
-    else {
-      result.add(m);
-    }
-  }
-  return result;
-}
-</pre>
-
-
-<!-------------------------------------
-  TESTNG LISTENERS
- ------------------------------------>
-	
-<h4>
-<a name="testng-listeners">5.18 - TestNG Listeners</a>
-</h4>
-
-There are several interfaces that allow you to modify TestNG's behavior.  These interfaces are broadly called "TestNG Listeners".  Here are a few listeners:
-
-<ul>
-  <li><tt>IAnnotationTransformer</tt> (<a href="#annotationtransformers">doc</a>, <a href="../javadocs/org/testng/IAnnotationTransformer.html">javadoc</a>)
-  <li><tt>IReporter</tt> (<a href="#logging-reporters">doc</a>, <a href="../javadocs/org/testng/IReporter.html">javadoc</a>)
-  <li><tt>ITestListener</tt> (<a href="#logging-listeners">doc</a>, <a href="../javadocs/org/testng/ITestListener.html">javadoc</a>)
-  <li><tt>IMethodInterceptor</tt> (<a href="#methodinterceptors">doc</a>, <a href="../javadocs/org/testng/IMethodInterceptor.html">javadoc</a>)
-  <li><tt>IInvokedMethodListener</tt> (<a href="#invokedmethodlistener">doc</a>, <a href="../javadocs/org/testng/IInvokedMethodListener.html">javadoc</a>)
-</ul>
-
-When you implement one of these interfaces, you can let TestNG know about it with either of the following ways:
-
-<ul>
-  <li><a href="#running-testng">Using -listener on the command line.</a>
-  <li><a href="ant.html">Using <listeners> with ant.</a>
-  <li>Using <listeners> in your <tt>testng.xml</tt> file.
-  <li>Using the <tt>@Listeners</tt> annotation on any of your test classes.
-</ul>
-
-Here is how you can define listeners in your <tt>testng.xml</tt> file:
-
-<pre class="brush: xml">
-<suite>
-
-  <listeners>
-    <listener class-name="com.example.MyListener" />
-    <listener class-name="com.example.MyMethodInterceptor" />
-  </listeners>
-
-...
-
-</pre>
-
-Or if you prefer to define these listeners in Java:
-
-<pre class="brush: java">
- at Listeners({ com.example.MyListener.class, com.example.MyMethodInterceptor.class })
-public class MyTest {
-  // ...
-}
-</pre>
-
-The <tt>@Listeners</tt> annotation can contain any class that extends
-<tt>org.testng.ITestNGListener</tt> <b>except</b>
-<tt>IAnnotationTransformer</tt> and <tt>IAnnotationTransformer2</tt>.  The reason
-is that these listeners need to be known very early in the process so that TestNG
-can use them to rewrite your annotations, therefore you need to specify these listeners
-in your <tt>testng.xml</tt> file.
-
-
-
-
-<!-------------------------------------
-  DEPENDENCY INJECTION
- ------------------------------------>
-	
-<h4>
-<a name="dependency-injection">5.19 - Dependency injection</a>
-</h4>
-
-TestNG lets you declare additional parameters in your methods.  When this happens, TestNG will automatically fill these parameters with the right value.  Depencency injection can be used in the following places:
-
-<ul>
-  
-<li>
-  Any @Before method or @Test method can declare a parameter of type <tt>ITestContext</tt>.
-<li>
-  Any @After method can declare a parameter of type <tt>ITestResult</tt>, which will reflect the result of the test method that was just run.
-<li>
-  Any @Before and @After methods can declare a parameter of type <tt>XmlTest</tt>, which contain the current <tt><test></tt> tag.
-<li>
-  Any @BeforeMethod (and @AfterMethod) can declare a parameter of type
-  <tt>java.lang.reflect.Method</tt>.  This parameter will receive the
-  test method that will be called once this @BeforeMethod finishes (or
-  after the method as run for @AfterMethod).
-<li>
-  Any @BeforeMethod can declare a parameter of type <tt>Object[]</tt>.  This parameter will receive the list of parameters that are about to be fed to the upcoming test method, which could be either injected by TestNG, such as <tt>java.lang.reflect.Method</tt> or come from a <tt>@DataProvider</tt>.
-<li>
-  Any @DataProvider can declare a parameter of type
-  <tt>ITestContext</tt> or <tt>java.lang.reflect.Method</tt>.  The
-  latter parameter will receive the test method that is about to be invoked.
-</ul>
-
-
-<!-------------------------------------
-  INVOKED METHOD LISTENERS
- ------------------------------------>
-	
-<h4>
-<a name="invokedmethodlistener">5.20 - Listening to method invocations</a>
-</h4>
-
-The listener <tt><a href="../javadocs/org/testng/IInvokedMethodListener.html">IInvokedMethodListener</a></tt> allows you to be notified whenever TestNG is about to invoke a test (annotated with <tt>@Test</tt>) or configuration (annotated with any of the <tt>@Before</tt> or <tt>@After</tt> annotation) method.  You need to implement the following interface:
-
-<pre class="brush: java">
-public interface IInvokedMethodListener extends ITestNGListener {
-  void beforeInvocation(IInvokedMethod method, ITestResult testResult);
-  void afterInvocation(IInvokedMethod method, ITestResult testResult);
-}
-</pre>
-
-and declare it as a listener, as explained in <a href="#testng-listeners">the section about TestNG listeners</a>.
-
-<p>
-
-
-
-
-
-<!------------------------------------
-  TEST SUCCESS
-  ------------------------------------>
-
-
-<h3>
-<a name="test-results">6 - Test results</a>
-</h3>
-
-
-<h4>
-<a name="success-failure">6.1 - Success, failure and assert</a>
-</h4>
-
-
-<p>A test is considered successful if it completed without throwing any 
-exception or if  it threw an exception that was expected (see the 
-documentation for the <tt>expectedExceptions</tt> attribute found on the <tt>@Test</tt> annotation).
-</p>
-
-<p>Your test methods will typically be made of calls that can throw an 
-exception, or of various assertions (using the Java "assert" keyword).  An 
-"assert" failing will trigger an AssertionErrorException, which in turn will 
-mark the method as failed (remember to use -ea on the JVM if you are not seeing 
-the assertion errors).</p><p>Here is an example test method:</p>
-
-<pre class="brush: java">
- at Test
-public void verifyLastName() {
-  assert "Beust".equals(m_lastName) : "Expected name Beust, for" + m_lastName;
-}
-</pre>
-
-TestNG also include JUnit's Assert class, which lets you perform 
-assertions on complex objects:
-
-<pre class="brush: java">
-import static org.testng.AssertJUnit.*;
-//...
- at Test
-public void verify() {
-  assertEquals("Beust", m_lastName);
-}
-</pre>
-<p>Note that the above code use a static import in order to be able to use the
-<tt>assertEquals</tt> method without having to prefix it by its class.
-
-<!-------------------------------------
-  LOGGING
-  ------------------------------------>
-</p>
-
-<h3><a name="logging">6.2 - Logging and results</a></h3>The results of the test run are created in a file called <tt>index.html</tt> in the 
-directory specified when launching SuiteRunner.  This file points to 
-various other HTML and text files that contain the result of the entire test 
-run.  You can see a typical example
-<a href="http://testng.org/test-output/index.html">here</a>.
-
-<p>
-It's very easy to generate your own reports with TestNG with Listeners and Reporters:
-
-<ul>
-<li><b>Listeners</b> implement the interface <a href="../javadocs/org/testng/ITestListener.html"><tt>org.testng.ITestListener</tt></a> and are notified in real time of when a test starts, passes, fails, etc...</li><li><b>Reporters</b> implement the interface <a href="../javadocs/org/testng/IReporter.html"><tt>org.testng.IReporter</tt></a> and are notified when all the suites have been run by TestNG.  The IReporter instance receives a list of objects that describe the entire test run.</li [...]
-
-<p>
-
-  <a name="logging-listeners"><em>6.2.1 - Logging Listeners</em></a>
-<p>
-
-Here is a listener that displays a "." for each passed test, a "F" for each failure and a "S" for each skip:
-
-<pre class="brush: java">
-public class DotTestListener extends TestListenerAdapter {
-  private int m_count = 0;
-
-  @Override
-  public void onTestFailure(ITestResult tr) {
-    log("F");
-  }
-
-  @Override
-  public void onTestSkipped(ITestResult tr) {
-    log("S");
-  }
-
-  @Override
-  public void onTestSuccess(ITestResult tr) {
-    log(".");
-  }
-
-  private void log(String string) {
-    System.out.print(string);
-    if (m_count++ % 40 == 0) {
-      System.out.println("");
-    }
-  }
-} 
-</pre>
-
-In this example, I chose to extend <a href="../javadocs/org/testng/TestListenerAdapter.html"><tt>TestListenerAdapter</tt></a>, which implements <a href="../javadocs/org/testng/ITestListener.html"><tt>ITestListener</tt></a> with empty methods, so I don't have to override other methods from the interface that I have no interest in.  You can implement the interface directly if you prefer.
-
-<p>
-Here is how I invoke TestNG to use this new listener:
-
-<pre class="brush: text">
-java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -listener org.testng.reporters.DotTestListener test\testng.xml
-</pre>
-
-and the output:
-
-<pre class="brush: text">
-........................................
-........................................
-........................................
-........................................
-........................................
-.........................
-===============================================
-TestNG JDK 1.5
-Total tests run: 226, Failures: 0, Skips: 0
-===============================================
-</pre>
-
-Note that when you use <tt>-listener</tt>, TestNG will automatically determine the type of listener you want to use.
-
-<p>
-
-  <a name="logging-reporters"><em>6.2.2 - Logging Reporters</em></a>
-
-<p>
-
-The <a href="../javadocs/org/testng/IReporter.html"><tt>org.testng.IReporter</tt></a> interface only has one method:
-
-<pre class="brush: java">
-public void generateReport(List<<a href="../javadocs/org/testng/ISuite.html">ISuite</a>> suites, String outputDirectory)
-</pre>
-
-This method will be invoked by TestNG when all the suites have been run and you can inspect its parameters to access all the information on the run that was just completed.
-
-<p>
-
-  <a name="logging-junitreports"><em>6.2.3 - JUnitReport</em></a>
-
-<p>
-
-
-TestNG contains a listener that takes the TestNG results 
-and outputs an XML file that can then be fed to JUnitReport.  <a href="http://testng.org/test-report/junit-noframes.html">
-Here</a> is an example, and the ant task to create this report:
-
-<pre class="brush: xml">
-<target name="reports">
-  <junitreport todir="test-report">
-    <fileset dir="test-output">
-      <include name="*/*.xml"/>
-    </fileset>
- 
-    <report format="noframes"  todir="test-report"/>
-  </junitreport>
-</target>
-</pre>
-<blockquote>
-	<em>Note:  a current incompatibility between the JDK 1.5 and JUnitReports 
-prevents the frame version from working, so you need to specify "noframes" to 
-get this to work for now.</em>
-	</blockquote>
-
-  <a name="logging-reporter-api"><em>6.2.4 - Reporter API</em></a>
-
-<p>
-If you need to log messages that should appear in the generated HTML reports, you can use the class <tt><a href="../javadocs/org/testng/Reporter.html">org.testng.Reporter</a></tt>:
-
-<blockquote class="brush: text">
-<font color="#ffffff">    </font><font color="#000000">Reporter.log</font><font color="#000000">(</font><font color="#2a00ff">"M3 WAS CALLED"</font><font color="#000000">)</font><font color="#000000">;</font>
-
-</blockquote>
-
-<p align="center">
-
-<img src="pics/show-output1.png" />
-<img src="pics/show-output2.png" />
-
-</p>
-
-  <a name="logging-xml-reports"><em>6.2.5 - XML Reports</em></a>
-<p>
-TestNG offers an XML reporter capturing TestNG specific information that is not available in JUnit reports. This is particulary useful when the user's test environment needs to consume XML results with TestNG-specific data that the JUnit format can't provide.  Below is a sample of the output of such a reporter:
-</p>
-<pre class="brush: xml">
-<testng-results>
-  <suite name="Suite1">
-    <groups>
-      <group name="group1">
-        <method signature="com.test.TestOne.test2()" name="test2" class="com.test.TestOne"/>
-        <method signature="com.test.TestOne.test1()" name="test1" class="com.test.TestOne"/>
-      </group>
-      <group name="group2">
-        <method signature="com.test.TestOne.test2()" name="test2" class="com.test.TestOne"/>
-      </group>
-    </groups>
-    <test name="test1">
-      <class name="com.test.TestOne">
-        <test-method status="FAIL" signature="test1()" name="test1" duration-ms="0"
-              started-at="2007-05-28T12:14:37Z" description="someDescription2"
-              finished-at="2007-05-28T12:14:37Z">
-          <exception class="java.lang.AssertionError">
-            <short-stacktrace>java.lang.AssertionError
-              ... Removed 22 stack frames
-            </short-stacktrace>
-          </exception>
-        </test-method>
-        <test-method status="PASS" signature="test2()" name="test2" duration-ms="0"
-              started-at="2007-05-28T12:14:37Z" description="someDescription1"
-              finished-at="2007-05-28T12:14:37Z">
-        </test-method>
-        <test-method status="PASS" signature="setUp()" name="setUp" is-config="true" duration-ms="15"
-              started-at="2007-05-28T12:14:37Z" finished-at="2007-05-28T12:14:37Z">
-        </test-method>
-      </class>
-    </test>
-  </suite>
-</testng-results>
-</pre>
-<p>This reporter is injected along with the other default listeners so you can get this type of output by default. The listener provides some properties that can tweak the reporter to fit your needs. The following table contains a list of these properties with a short explanation:
-</p>
-<table border="1" width="100%" id="table6">
-  <tr>
-    <th>Property</th>
-    <th>Comment</th>
-    <th>Default value</th>
-  </tr>
-  <tr>
-    <td>outputDirectory</td>
-    <td>A <tt>String</tt> indicating the directory where should the XML files be outputed.</td>
-    <td>The TestNG output directory</td>
-  </tr>
-  <tr>
-    <td>timestampFormat</td>
-    <td>Specifies the format of date fields that are generated by this reporter</td>
-    <td>yyyy-MM-dd'T'HH:mm:ss'Z'</td>
-  </tr>
-  <tr>
-    <td>fileFragmentationLevel</td>
-    <td>An integer having the values 1, 2 or 3, indicating the way that the XML files are generated:
-      <br>
-<pre>
-   1 - will generate all the results in one file.
-   2 - each suite is generated in a separate XML file that is linked to the main file.
-   3 - same as 2 plus separate files for test-cases that are referenced from the suite files.
-</pre>
-    </td>
-    <td>1</td>
-  </tr>
-  <tr>
-    <td>splitClassAndPackageNames</td>
-    <td>This boolean specifies the way that class names are generated for the <tt><class></tt> element.
-      For example, you will get <tt><class class="com.test.MyTest"></tt> for false and <tt><class class="MyTest" package="com.test"></tt> for true.
-    </td>
-    <td>false</td>
-  </tr>
-  <tr>
-    <td>generateGroupsAttribute</td>
-    <td>A boolean indicating if a <tt>groups</tt> attribute should be generated for the <tt><test-method></tt> element. This feature aims at providing a
-      straight-forward method of retrieving the groups that include a test method without having to surf through the <tt><group></tt> elements.
-    </td>
-    <td>false</td>
-  </tr>
-  <tr>
-    <td>stackTraceOutputMethod</td>
-    <td>Specifies the type of stack trace that is to be generated for exceptions and has the following values:
-         <br>
-<pre>
-   0 - no stacktrace (just Exception class and message).
-   1 - a short version of the stack trace keeping just a few lines from the top
-   2 - the complete stacktrace with all the inner exceptions
-   3 - both short and long stacktrace
-</pre>
-    </td>
-    <td>2</td>
-  </tr>
-  <tr>
-    <td>generateDependsOnMethods</td>
-    <td>Use this attribute to enable/disable the generation of a <tt>depends-on-methods</tt> attribute for the <tt><test-method></tt> element.
-    </td>
-    <td>true</td>
-  </tr>
-  <tr>
-    <td>generateDependsOnGroups</td>
-    <td>Enable/disable the generation of a <tt>depends-on-groups</tt> attribute for the <tt><test-method></tt> element.
-    </td>
-    <td>true</td>
-  </tr>
-</table>
-<p>
-  In order to configure this reporter you can use the <tt>-reporter</tt> option in the command line or the <a href="http://testng.org/doc/ant.html">Ant</a>
-  task with the nested <tt><reporter></tt> element. For each of these you must specify the class <tt>org.testng.reporters.XMLReporter</tt>.
-  Please note that you cannot configure the built-in reporter because this one will only use default settings. If you need just the XML report with custom settings
-  you will have to add it manually with one of the two methods and disable the default listeners.
-</p>
-
-<a name="testng-dtd">
- <hr width="100%">
-<p>Back to my <a href="http://beust.com/weblog">home page</a>.</p><p>Or check out some of my other projects:</p><ul>
-	<li><a href="http://beust.com/ejbgen">EJBGen</a>:  an EJB tag 
-	generator.</li><li><a href="http://testng.org">TestNG</a>:  A testing framework using annotations, test groups and method parameters. </li><li><a href="http://beust.com/doclipse">Doclipse</a>:  a JavaDoc tag 
-	Eclipse plug-in.</li><li><a href="http://beust.com/j15">J15</a>:  an Eclipse plug-in to help 
-	you migrate your code to the new JDK 1.5 constructs..</li><li><a href="http://beust.com/sgen">SGen</a>:  a replacement for 
-	XDoclet with an easy plug-in architecture.</li><li><a href="http://beust.com/canvas">Canvas</a>:  a template generator 
-	based on the Groovy language.</li></ul><p>
-</p>
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-	
diff --git a/doc/download.html b/doc/download.html
deleted file mode 100644
index a9bebdd..0000000
--- a/doc/download.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - Downloading</title>
-        <script type="text/javascript" src="banner.js"></script>
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-      </head>
-<body>
-
-<script type="text/javascript">
-    displayMenu("download.html")
-</script>
-
-
-<h2 align="center">Downloading TestNG</h2>
-
-<p>
-
-You can <a href="http://testng.org/testng-5.12.zip">download TestNG here</a>.
-</p>
-<p>For the Eclipse plug-in, we suggest using the update site:</p>
-<ul>
-	<li>Select<i> Help / Software updates / Find and Install.</i> 
-	</li>
-	<li><i>Search for new features to install.</i> 
-	</li>
-	<li><i>New remote site.</i> 
-	</li>
-	<li>For Eclipse 3.4 and above, enter <a href="http://beust.com/eclipse">http://beust.com/eclipse</a>.
-	<li>For Eclipse 3.3 and below, enter <a href="http://beust.com/eclipse1">http://beust.com/eclipse1</a>.
-	</li>
-	<li>Make sure the check box next to URL is checked and click <i>Next</i>. 
-	</li>
-	<li>Eclipse will then guide you through the process. </li>
-</ul>
-<p>However, should this method fail, you can also
-<a href="http://testng.org/testng-eclipse-5.12.0.6.zip">download the TestNG 
-Eclipse plug-in directly</a> and extract it in your dropins/ directory.</p>
-<p>Here are links to older TestNG versions:</p>
-<ul>
-	<li><a href="http://testng.org/testng-5.11.zip">5.11</a></li>
-	<li><a href="http://testng.org/testng-5.10.zip">5.10</a></li>
-	<li><a href="http://testng.org/testng-5.9.zip">5.9</a></li>
-	<li><a href="http://testng.org/testng-5.8.zip">5.8</a></li>
-</ul>
-<p>TestNG is also <a href="http://code.google.com/p/testng">hosted on Google Code</a>, 
-where you can download the source through the Subversion repository or subscribe to the various mailing-lists.</p>
-<!-------------------------------------
-
-  Mailing-lists
-
-  ------------------------------------>
-
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-
-</body>
-
-</html>
diff --git a/doc/eclipse.html b/doc/eclipse.html
deleted file mode 100644
index b7b16f7..0000000
--- a/doc/eclipse.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - Eclipse</title>
-        <script type="text/javascript" src="banner.js"></script>
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-      </head>
-<body>
-
-<script type="text/javascript">
-    displayMenu("eclipse.html")
-</script>
-
-
-<h2 align="center">TestNG Eclipse plug-in</h2>
-<p>The TestNG Eclipse plug-in allows you to run your TestNG tests from Eclipse 
-and easily monitor their execution and their output. It has its own
-<a href="http://code.google.com/p/testng-eclipse">separate project on code.google.com</a> called <tt>testng-eclipse</tt>.</p>
-
-
-<h3>Table of Contents</h3>
-
-  <a class="summary" href="#eclipse-installation">1 - Installation</a>
-<br>
-  <a class="summary" href="#eclipse-creating">2 - Creating a TestNG class</a>
-<br>
-  <a class="summary" href="#eclipse-create-launch">3 - Launch configurations</a>
-<br>
-  <a class="summary" href="#eclipse-create-class">3.1 - From a class file</a>
-<br>
-  <a class="summary" href="#eclipse-create-groups">3.2 - From groups</a>
-<br>
-  <a class="summary" href="#eclipse-create-xml">3.3 - From an XML file</a>
-<br>
-  <a class="summary" href="#eclipse-create-method">3.4 - From a method</a>
-<br>
-  <a class="summary" href="#eclipse-listeners">3.5 - Specifying listeners and other settings</a>
-<br>
-  <a class="summary" href="#eclipse-viewing">4 - Viewing the results</a>
-<br>
-  <a class="summary" href="#eclipse-quickfix">5 - Converting JUnit tests</a>
-<br>
-  <a class="summary" href="#testng-xml"></a>
-
-<!--
-  Installation
--->
-<h3><a name="eclipse-installation">1 - Installation</a></h3><p>
-Once you have <a href="http://testng.org/doc/download.html">installed the plug-in</a>, restart Eclipse and select the menu <tt>Window / Show View 
-/ Other...</tt>  and you should see the TestNG view listed in the Java category.</p><p align="center">
-<img src="http://testng.org/pictures/view.png" />
-</p>
-
-<!--
-  Creating
--->
-<h3><a name="eclipse-creating">2 -Creating a TestNG class</a></h3><p>
-
-To create a new TestNG class, select the menu File / New / TestNG:
-
-<p align="center">
-<img src="http://testng.org/pictures/new-1.png" />
-  
-<img src="http://testng.org/pictures/new-2.png" />
-</p>
-
-Select which annotations you want in this new class along with the class name, package and where the file should be created.
-<p>
-Additionally, you can specify the name of an XML file and the plug-in will generate a suite file which, if run, will invoke the class you just created.
-
-
-
-<h3><a name="eclipse-create-launch">3 - Launch configuration</a></h3><p>Once you have created classes that contain TestNG annotations and/or one or 
-more <tt>testng.xml</tt> files, you can create a TestNG Launch Configuration.  
-Select the <tt>Run / Run...</tt> (or <tt>Run / Debug...</tt>) menu and create a new TestNG 
-configuration:</p><p align="center">
-<img src="http://testng.org/pictures/launch.png" />
-</p>
-<p>You should change the name of this configuration and pick a project, which 
-can be selected by clicking on the <tt>Browse...</tt> button at the top of the window.</p><p>Then you choose to launch your TestNG tests in the following ways:</p><h4><a name="eclipse-launch-class">4.2.1 - From a class file</a></h4><p>Make sure the box near <tt>Class</tt> is checked and then pick a class from your 
-project.  You can click on the <tt>Browse...</tt> button and pick it directly from a 
-list.  This list only contains classes that contain TestNG annotations:</p><p align="center">
-<img src="http://testng.org/pictures/classes.png" />
-</p>
-
-<h4><a name="eclipse-create-groups">3.2 - From groups</a></h4>
-<p>If you only want to launch one or several groups, you can type them in the 
-text field or pick them from a list by clicking on the <tt>Browse...</tt> button 
-
-<p align="center">
-<img src="http://testng.org/pictures/groups.png" />
-</p>
-
-
-<h4><a name="eclipse-create-xml">3.3 - From a definition file</a></h4>
-Finally, you can select a suite definition from your project.  It doesn't have to be named
-<tt>testng.xml</tt>, the plug-in will automatically identify all the applicable TestNG XML files 
-in your project:
-<p align="center">
-<img src="http://testng.org/pictures/suites.png" />
-</p>
-
-
-<h4>
-<a name="eclipse-create-method">3.4 - From a method </a>
-</h4>
-<p>This launch isn't accomplished from the Launch dialog but 
-directly from your Outline view:</p><p align="center">
-<img src="http://testng.org/pictures/outline.png" />
-</p>
-You can right-click on any test methods and select <tt>Run as... / TestNG test</tt> and only the selected
-method will be run (not shown on the above screenshot because I couldn't find a way to capture
-a contextual menu).<p>Method launching is also available from the Package 
-Explorer view and from the Java Browser perspective.</p><p>Once you have selected one of these launches, you can also choose the logging of level and also
-whether TestNG should run in 1.4 or 1.5 mode. Then you can launch the tests by 
-pressing the <tt>Debug</tt> (or <tt>Run</tt>) button, which will switch you to the Debug 
-perspective and will open the main TestNG view.</p>
-
-<h4>
-<a name="eclipse-listeners">3.5 -Specifying listeners and other settings </a>
-</h4>
-
-As you saw above, the plug-in will let you start tests in many different ways:  from an XML file, from a method, a class, etc...  When you are running an XML file, you can specify all the settings you want for this run in the XML file, but what if you want to run a package in parallel mode with specific listeners?  How can you configure the settings for all the launches that are not done from an XML file?
-
-<p>
-
-In order to give you access to the most flexibility, TestNG lets you specify an XML suite file for all these launches, which you can find in the Preferences menu:
-
-<p align="center">
-<img src="http://testng.org/pictures/template.png"/>
-</p>
-
-If you specify a valid suite file as "XML template file", TestNG will reuse all the settings found in this XML file, such as parallel, name, listeners, thread pool size, etc...  Only the <tt><test></tt> tags in this file will be ignored since the plug-in will replace these by a generated <tt><test></tt> tag that represents the launch you chose.
-
-<!--
-  Viewing
--->
-<h4>
-<a name="eclipse-viewing">4 - Viewing the test results </a>
-</h4>
-
-<p align="center">
-<img src="http://testng.org/pictures/success.png" width="798" height="506" />
-</p>
-
-<p>The above view shows a successful run of the tests:  the bar is green 
-and no failed tests are reported.  The <tt>All tests</tt> tab shows you a list of 
-all the classes and methods that were run.</p><p>If your test run contains failures, the view will look like this:</p><p align="center">
-<img src="http://testng.org/pictures/failure.png" />
-</p>
-
-<p>You can use the <tt>Failed tests</tt> tab to display only these tests that failed, and 
-when you select such a test, the stack trace will be shown on the right-hand 
-pane.  You can double click on the offending line to be taken directly to 
-the failure in your code.</p>
-
-
-<h3><a name="eclipse-quickfix">5 - Converting JUnit tests</a></h3>
-
-<p>When you are editing a JUnit class, press Ctrl-1 (Quick Fix) and the plug-in 
-will give you the option to convert it to TestNG, either with JDK5 annotations:</p>
-<p align="center">
-
-<img src="http://beust.com/pics/quickfix1.png" />
-
-</p>
-<p>or JavaDoc annotations:</p>
-<p align="center">
-
-<img src="http://beust.com/pics/quickfix2.png" />
-
-</p>
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-</body>
\ No newline at end of file
diff --git a/doc/idea.html b/doc/idea.html
deleted file mode 100644
index 2e4ef73..0000000
--- a/doc/idea.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - IDEA Plugin</title>
-        <script type="text/javascript" src="banner.js"></script>
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-      </head>
-<body>
-
-<script type="text/javascript">
-    displayMenu("idea.html")
-</script>
-
-<h2 align="center">TestNG IDEA Plug-in</h2>
-
-
-
-<p align="center">
-<img src="http://testng.org/pictures/idea-output.png" />
-</p>
-
-<h3>IDEA 7</h3>
-
-TestNG is supported natively in IDEA 7.  The full documentation can be found <a href="http://www.jetbrains.com/idea/features/junit_testng.html#TestNG">here</a>.
-
-
-<h3>IDEA 6 and older </h3>
-
-
-TestNG has an IDEA plug-in that mirrors much of the behavior of the built-in JUnit support. You should be able to run tests within IDEA without defining any files externally, as well as quickly and easily migrate JUnit code, and switch back and forth between 1.4 and 1.5 style annotations. The plug-in also provides the same output test view as JUnit tests.
-
-Installation
-
-New versions of the plugin are constantly uploaded to the IDEA plug-in repository.
-
-
-<ul>
-	<li>From IDEA, go to Preferences -> Plugins.</li>
-	<li>Click over to the Available Plugins tab.</li>
-</ul>
-<p>The latest version of the TestNG plugin will be listed there, ready to download and install.  
-Also, you can go to the <a href="http://svn.jetbrains.org/idea/Trunk/bundled/testng">
-TestNG IDEA plug-in project page</a> and download its source from there.</p>
-<p>Please note that this plug-in only works on IDEA 5.0 and 6.0.</p>
-
-<p><b>Creating a TestNG Run/Debug configuration</b></p>
-<p>Once you have installed the plug-in and restarted IDEA, and have some TestNG classes you would like to run, simply 
-open the Run/Debug window. You will see a TestNG tab, where you can add a configuration.
-
-</p>
-<p>There are a number of methods for determining the set of tests that will be run. These are:</p>
-<ul>
-	<li>Package: Specify a package to run. All tests in this package and below will be included.</li>
-	<li>Group: Specify a TestNG group to run.</li>
-	<li>Suite: Specify an external testng.xml file to run.</li>
-	<li>Class: Run all tests in a single class.</li>
-	<li>Method: Run a single test method.
-
-</li>
-</ul>
-<p>Once you create the run configuration, you can run it. Upon running, the plug-in will launch an external process to run your tests. The test results will be display in a tree view, with passed and failed tests highlighted. You can narrow down on the console output for a specify test by clicking on it, while double clicking a test will navigate to its source code.
-</p>
-
-<p align="center">
-<img src="http://testng.org/pictures/idea-rundialog.png" />
-</p>
-
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-</body>
-
-</html>
diff --git a/doc/index.html b/doc/index.html
deleted file mode 100644
index 8c740e3..0000000
--- a/doc/index.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<html>
-  <head>
-    <title>TestNG - Welcome</title>
-      <link rel="stylesheet" href="testng.css" type="text/css" />
-      <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-      <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-      <script type="text/javascript" src="http://testng.org/doc/banner.js"></script>
-
-      <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
-      <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
-      <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
-      <script type="text/javascript">
-        SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
-        SyntaxHighlighter.defaults['gutter'] = false;
-        SyntaxHighlighter.all();
-      </script>
-    </head>
-
-<body onload="prettyPrint()">
-
-<script type="text/javascript">
-   displayMenu("index.html");
-</script>
-
-
-<h2 >TestNG</h2>
-<h2>Now available</h2>
-<p align="center">
-<a href="book.html">
-<img border="0" src="http://beust.com/pics/book-cover.jpg" />
-</a>
-</p>
-<p align="center">
-<a href="book.html">Click for more details.</a>
-</p>
-
-
-
-<p align="right"><font size="-2"><em>Cédric Beust (cedric at beust.com)<br>
-Current version: 5.12<br>
-Created: April 27th, 2004<br>
-Last Modified:  March 29th, 2010</em></font></p>
-
-
-<p>TestNG is a testing framework inspired from JUnit and NUnit but introducing
-some new functionalities that make it more powerful and easier to use, such as:</p>
-<ul>
-       <li>Annotations.
-       </li>
-       <li>Run your tests in arbitrarily big thread pools with various policies available
-       (all methods in their own thread, one thread per test class, etc...).
-       </li>
-       <li>Test that your code is multithread safe.
-       </li>
-       <li>Flexible test configuration.
-       </li>
-       <li>Support for data-driven testing (with <tt>@DataProvider</tt>).
-       </li>
-       <li>Support for parameters.
-       </li>
-       <li>Powerful execution model (no more <tt>TestSuite</tt>).
-       </li>
-       <li>Supported by a variety of tools and plug-ins (Eclipse, IDEA, Maven,
-       etc...).
-       </li>
-       <li>Embeds BeanShell for further flexibility.
-       </li>
-       <li>Default JDK functions for runtime and logging (no dependencies).
-       </li>
-       <li>Dependent methods for application server testing.</li>
-</ul>
-<p>TestNG is designed to cover all categories of tests:  unit, functional,
-end-to-end, integration, etc...</p>
-<p>I started TestNG out of frustration for some JUnit deficiencies which I have
-documented on my weblog <a href="http://beust.com/weblog/2004/08/25/testsetup-and-evil-static-methods/">here</a> and <a href="http://beust.com/weblog/2004/02/08/junit-pain/">here</a>
-Reading these entries might give you a better idea of the goal I am trying to
-achieve with TestNG.  You can also check out a quick
-<a href="http://www.beust.com/weblog/archives/000176.html">overview of the main
-features</a> and an <a href="http://www.beust.com/weblog/archives/000170.html">
-article</a> describing a very concrete example where the combined use of several
-TestNG's features provides for a very intuitive and maintainable testing design.</p>
-<p>Here is a very simple test:</p>
-
-<pre class="brush: java">
-package example1;
-
-import org.testng.annotations.*;
-
-public class SimpleTest {
-
- @BeforeClass
- public void setUp() {
-   // code that will be invoked when this test is instantiated
- }
-
- @Test(groups = { "fast" })
- public void aFastTest() {
-   System.out.println("Fast test");
- }
-
- @Test(groups = { "slow" })
- public void aSlowTest() {
-    System.out.println("Slow test");
- }
-
-}
-</pre>
-
-The method <tt>setUp()</tt> will be invoked after the test class has been built and before
-any test method is run.  In this example, we will be running the group
-fast, so <tt>aFastTest()</tt> will be invoked while <tt>aSlowTest()</tt> will be
-skipped.<p>
-<!-------------------------------------
-
- WRITING A TEST
-
- ------------------------------------>
-
-Things to note:</p><ul>
-       <li>No need to extend a class or implement an interface.</li><li>Even though the example above uses the JUnit conventions, our methods
-       can be called any name you like, it's the annotations that tell TestNG what
-       they are.</li><li>A test method can belong to one or several groups.</li></ul>
-
-       <p>
-
-Once you have compiled your test class into the <tt>build</tt> directory, you
-can invoke your test with the command line, an ant task (shown below) or an XML
-file:
-
-
-<pre class="brush: xml">
-<project default="test">
-
- <path id="cp">
-   <pathelement location="lib/testng-testng-4.4-jdk15.jar"/>
-   <pathelement location="build"/>
- </path>
-
- <taskdef name="testng" classpathref="cp"
-          classname="org.testng.TestNGAntTask" />
-
- <target name="test">
-   <testng classpathref="cp" groups="fast">
-     <classfileset dir="build" includes="example1/*.class"/>
-   </testng>
- </target>
-
-</project>
-</pre>
-
-Use ant to invoke it:
-
-<pre class="brush: text">
-c:> ant
-Buildfile: build.xml
-
-test:
-[testng] Fast test
-[testng] ===============================================
-[testng] Suite for Command line test
-[testng] Total tests run: 1, Failures: 0, Skips: 0
-[testng] ===============================================
-
-
-BUILD SUCCESSFUL
-Total time: 4 seconds
-</pre>
-
-Then you can browse the result of your tests:
-
-<pre class="brush: text">
-start test-output\index.html (on Windows)
-</pre>
-
-<h3><a name="requirements">Requirements</a></h3>
-<p>TestNG runs on JDK 1.4 and 5.  The examples shown in this
-documentation assume JDK 5 and therefore, use JDK 5 annotations, but they
-can easily be translated to JDK 1.4 JavaDoc-type annotations.  See the JDK
-1.4 section for details.</p>
-
-<h3><a name="mailing-lists">Mailing-lists</a></h3>
-<p>The users mailing-list can be found in two different places:</p>
-<ul>
-       <li>As an email mailing-list on
-       <a href="http://groups-beta.google.com/group/testng-users/">Google Groups</a>.</li>
-       <li>As a <a href="http://testng.org/forums">Web
-       forum</a>, kindly hosted by <a href="http://opensymphony.com">Open Symphony</a>.</li>
-</ul>
-<p>The Web forum and the mailing-list are connected to each other, so you only
-need to subscribe to one.</p>
-<h3><a name="locations-projects">Locations of the projects</a></h3>
-<p>If you are interested in contributing to TestNG or one of the IDE plug-ins,
-you will find them in the following locations:</p>
-<ul>
-       <li><a href="http://code.google.com/p/testng/">TestNG</a></li>
-       <li><a href="http://code.google.com/p/testng-eclipse">Eclipse plug-in</a></li>
-       <li><a href="http://www.javaforge.com/proj/summary.do?proj_id=4">IDEA
-       IntelliJ plug-in</a></li>
-       <li><a href="http://blogs.sun.com/xzajo?entry=test_ng_plugin_for_netbeans">
-       NetBeans plug-in</a></li>
-</ul>
-<h3><a name="bug-reports">Bug reports</a></h3>
-<p>The TestNG project is administered by
-<a href="http://jira.opensymphony.com/browse/TESTNG">OpenSymphony's JIRA</a>.
-</p>
-
-<!-------------------------------------
-
- REQUIREMENTS
-
- ------------------------------------>
-<p>For more information, you can either <a href="download.html">download TestNG</a>,
-read the <a href="documentation-main.html">manual</a> or browse the links at the
-<a href="#top">top</a>.</p>
-
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-
-</body>
-
-</html>
-
diff --git a/doc/maven.html b/doc/maven.html
deleted file mode 100644
index 10cab16..0000000
--- a/doc/maven.html
+++ /dev/null
@@ -1,304 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - Maven</title>
-
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-        <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-        <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-        <script type="text/javascript" src="banner.js"></script>
-
-        <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
-        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
-        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
-        <script type="text/javascript">
-          SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
-          SyntaxHighlighter.defaults['gutter'] = false;
-          SyntaxHighlighter.all();
-        </script>
-
-</head>
-
-<body onLoad="prettyPrint()">
-
-<script type="text/javascript">
-    displayMenu("maven.html")
-</script>
-
-
-<style type="text/css">
-    *.P1 { font-family:Sans; font-size:10pt; margin-left:0in; margin-right:0in; text-align:left ! important; text-indent:0inch; color:#a52a2a; }
-    *.P2 { font-family:Sans; font-size:10pt; margin-left:0in; margin-right:0in; text-align:left ! important; text-indent:0inch; }
-    *.P3 { font-family:'Nimbus Roman No9 L'; font-size:12pt; margin-left:0in; margin-right:0in; text-align:left ! important; text-indent:0inch; }
-    *.Standard { font-family:'Nimbus Roman No9 L'; font-size:12pt; }
-    *.Textbody { font-family:'Nimbus Roman No9 L'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
-    *.T1 { font-weight:bold; }
-    *.T2 { color:#353535; }
-    *.T3 { color:#a52a2a; font-weight:bold; }
-    *.T4 { color:#a52a2a; }
-    *.T5 { color:#353535; font-family:Sans; font-size:10pt; }
-    *.T6 { color:#a52a2a; font-family:Sans; font-size:10pt; font-weight:bold; }
-    *.T7 { color:#a52a2a; font-family:Sans; font-size:10pt; }
-  p,pre { width: 80%; }
-
-  ul.toc {
-    list-style: none;
-    margin:0 0.7em 0;
-    padding:0;
-    font-family: verdana, arial, sans-serif;
-  }
-  ul.toc li {
-    padding:0;
-    margin: 0.2em 0 0;
-  }
-  ul ul {
-    margin:0 2em 0;
-    padding: 0;
-    list-style-type: none;
-  }
-  li a {
-    display: block;
-    text-decoration: none;
-    padding: 2px 10px;
-    width: 140px;
-  }
-  ul.sub li a {
-    display: block;
-    border-top: none;
-    padding: 2px 10px;
-    background-color: transparent;
-  }
-</style>
-
-<h2>TestNG Maven plug-ins</h2>
-
-<h4>Table of Contents</h4>
-<ul class="toc">
-  <li class="first">
-    <a class="summary" href="#maven2">Maven2 Plugin</a>
-
-    <ul class="sub">
-      <li><a href="#archetype">Archetype</a></li>
-    </ul>
-  </li>
-  
-  <li class="last"><a class="summary" href="#maven1">Maven 1 Plugin</a></li>
-</ul>
-
-<!--
-TestNG has plug-ins for both Maven 1 and Maven 2.
--->
-
-<!--  begin maven2  -->
-<h3 id="maven2">Maven 2</h3>
-
-<p>Maven2 should support TestNG out of the box without the need to download any additional plugins <em>(other than TestNG itself)</em>.
-
-<h4>Snapshot Build Updates</h4>
-<p>
-The latest current good version of the Surefire plugin that you want is <b>2.4</b>.  You can find the full instructions on the <a href="http://maven.apache.org/plugins/maven-surefire-plugin/">Surefire web site</a> (here are the <a href="http://maven.apache.org/plugins/maven-surefire-plugin/examples/testng.html">TestNG-specific instructions</a>).
-
-<!--
-
-</p>
-<p>
-  To get the apache ibiblio snapshot repository added to your Maven project you will need to add a section like
-  the following to your <code>pom.xml</code>:
-</p>
-
-<pre class="prettyprint">
-<pluginRepositories>
-   <pluginRepository>
-      <id>apache.snapshots</id>
-      <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
-   </pluginRepository>
-</pluginRepositories>
-</pre>
-
-
-
-<h4>Surefire Documentation</h4>
-The TestNG Surefire documentation can be found on <a href="http://maven.apache.org/plugins/maven-surefire-plugin/testng.html">Apache's web site</a>.
-
-<h4>Reference</h4>
-<p>Though this section will include a lot more TestNG specific
-features, the overall test plugin properties should be mostly covered on Maven's site.</p>
-
-<h4>Overview</h4>
-<p>Most of the configuration aspects with Maven will be centered around your pom.xml's <a href="http://maven.apache.org/maven-model/maven.html">build section</a>.  In here you define things like build output directories,
-location of test source code, as well as configure plugin
-parameters, like those you will need to get TestNG setup the
-way that you prefer. Following is a sample portion of this
-section in a pom.xml file.</p>
-
-<pre class="prettyprint">
-<dependencies>
-<dependency>
-  <groupId>org.testng</groupId>
-  <artifactId>testng</artifactId>
-  <version>5.5</version>
-  <scope>test</scope>
-  <classifier>jdk15</classifier>
-</dependency>
-<dependencies>
-
-<build>
-..
-  <plugins>
-    <plugin>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-surefire-plugin</artifactId>
-      <version>2.4-SNAPSHOT</version>
-      <configuration>
-        <groups>functest,util</groups>
-      </configuration>
-    </plugin>
-  </plugins>
-</build>
-</pre>
-
-<p>
-The most notable section is the <tt>configuration</tt> element. Within the boundaries of this element you can define all of
-the configurable TestNG properties.
-</p>
-
--->
-
-<h4>Configuration</h4><h5>Goals</h5><table border="1" id="table2">
-    <tr>
-        <th>Goal</th><th>Description</th></tr><tr>
-        <td><tt>test</tt></td><td>Compiles and runs your tests</td></tr><tr>
-        <td><tt>site</tt></td><td>Creates your Maven generated site, which will include the TestNG report output.</td></tr></table><h4>Properties</h4><table border="1" id="table3">
-    <tr>
-        <th>Property</th><th>Optional?</th><th>Description</th></tr><tr>
-        <td><tt>includes</tt></td><td>No</td><td>Comma delimited list of regexp patterns to include source files with. Ie **/Test*.java</td></tr><tr>
-        <td><tt>groups</tt></td><td>Yes</td><td>Comma delimited list of groups to be included in test. If left blank will run all tests by default.</td></tr><tr>
-        <td><tt>excludedGroups</tt></td><td>Yes</td><td>Comma delimited list of groups that should <em>not</em> be included in test run.</td></tr><tr>
-        <td><tt>suiteXmlFiles</tt></td><td>Yes</td><td>Comma delimited list of file paths pointing to testng.xml suite files. <tt>(src/test-data/testng-core.xml,src/test-data/testng-functional.xml)</tt>
-        <p><em>Warning: When defining suiteXmlFiles most of the other parameters are ignored.</em></p></td></tr><tr>
-        <td><tt>threadCount</tt></td><td>Yes</td><td>Number of threads to run for tests</td></tr><tr>
-        <td><tt>parallel</tt></td><td>Yes</td><td>When using threads, whether or not to run them in parallel. Use <em>tests</em> to have each test run in its own thread or
-        <em>methods</em> to have the methods invoked from different threads.</td></tr>
-  </table>
-
-<h3>Java 1.4</h3>
-<p>
-In order to use javadoc style annotations you currently <em>must</em> run Maven with a java 1.4 jvm in order for them to be seen. If 
-you try running your javadoc annotated tests in a 1.5 jvm they will most likely not be found. It is hoped in a future release this problem
-will be eliminated.
-</p>
-
-<h4>Sample Report</h4>
-<p>
-A sample surefire report with TestNG can be found <a href="samplereport/index.html">here</a>.
-</p>
-<br/>
-<!--  end maven2  -->
-
-<!-- maven2 archetype -->
-<h3 id="archetype">Maven TestNG Archetype <em>(Martin Gilday)</em></h3>
-<p>
-  Martin Gilday has added a new archetype for Maven2: to create a project using the archetype you simply have to specify my repository and the archetype ID.
-</p>
-  <pre class="brush: text">
-  mvn archetype:create -DgroupId=org.martingilday -DartifactId=test1 -DarchetypeGroupId=org.martingilday -DarchetypeArtifactId=testng-archetype
-    -DarchetypeVersion=1.0-SNAPSHOT -DremoteRepositories=http://www.martingilday.org/repository/</pre>
-
-<p>Of course substitute in your own groupId and artifactId.</p>
-<p>Don't forget to keep checking back at <a href="http://www.martingilday.org/updates/Maven+TestNG+Archetype">Martin's blog</a> for more updates. </p>
-<!-- end maven2 archetype -->
-
-<br/><br/>
-<h3 id="maven1">Maven 1 (by Andrew Glover)</h3>
-
-<p>The TestNG Maven plug-in is quite simple and consists of
-two goals and a series of optional properties.</p>
-
-<p>Currently the 1.1 version of the plug-in is bundled with
-official releases of TestNG. To utilize the plug-in, copy the
-<tt>maven-testng-plugin-<version>.jar</tt> to the <tt>$MAVEN_HOME/plugins</tt>
-directory.</p>
-
-<p>For the latest version of the plug-in (1.2 as of 12/12/05),
-update your <tt>maven.repo.remote</tt> to include <tt>http://www.vanwardtechnologies.com/repository/</tt>
-and then issue the following command: <tt>maven plugin:download</tt>. Maven will issue a series of questions,
-answer them as follows: <BR>
-<BR>
-<TABLE border="1" id="table1">
-    <TR>
-        <TD><tt>artifactId:</tt></TD>
-        <TD><tt>maven-testng-plugin</tt></TD>
-    </TR>
-    <TR>
-        <TD>groupId:</TD>
-        <TD><tt>testng</tt></TD>
-    </TR>
-    <TR>
-        <TD>version:</TD>
-        <TD><tt>1.2</tt></TD>
-    </TR>
-</TABLE>
-</p>
-
-
-<h4>Goals</h4>
-<table border="1" id="table2">
-    <tr>
-        <th>Goal</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td><tt>testng</tt></td>
-        <td>Runs TestNG</td>
-    </tr>
-    <tr>
-        <td><tt>testng:junit-report</tt></td>
-        <td>Creates a JUnit style report</td>
-    </tr>
-</table>
-<h4>Properties</h4>
-<table border="1" id="table3">
-    <tr>
-        <th>Property</th>
-        <th>Optional?</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td><tt>maven.testng.suitexml.name</tt></td>
-        <td>Yes</td>
-        <td>XML file name- defaults to <tt>testng.xml</tt></td>
-    </tr>
-    <tr>
-        <td><tt>maven.testng.suitexml.dir</tt></td>
-        <td>Yes</td>
-        <td>Directory where XML file lives. Defaults to <tt>${basedir}/test/conf</tt></td>
-    </tr>
-    <tr>
-        <td><tt>maven.testng.output.dir</tt></td>
-        <td>Yes</td>
-        <td>Default report directory. Defaults to <tt>${maven.build.dir}/testng-output</tt></td>
-    </tr>
-    <tr>
-        <td><tt>maven.testng.source.dir</tt></td>
-        <td>Yes</td>
-        <td>For 1.4- where test source is. Defaults to <tt>${basedir}/test/java/</tt></td>
-    </tr>
-    <tr>
-        <td><tt>maven.testng.report.dir</tt></td>
-        <td>Yes</td>
-        <td>Directory for JUnit reports. Defaults to <tt>${maven.build.dir}/testngJunitReport</tt></td>
-    </tr>
-</table>
-
-<!-- end maven stuff -->
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-	
-</body>
diff --git a/doc/migrating.html b/doc/migrating.html
deleted file mode 100644
index ca72995..0000000
--- a/doc/migrating.html
+++ /dev/null
@@ -1,100 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - Migrating from JUnit</title>
-
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-        <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-        <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-        <script type="text/javascript" src="banner.js"></script>
-
-        <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
-        <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
-        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
-        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
-        <script type="text/javascript">
-          SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
-          SyntaxHighlighter.defaults['gutter'] = false;
-          SyntaxHighlighter.all();
-        </script>
-
-      </head>
-<body onLoad="prettyPrint()">
-
-<script type="text/javascript">
-    displayMenu("migrating.html")
-</script>
-
-
-<h2 align="center">Migrating from JUnit</h2>
-
-<h3>Using JUnitConverter</h3>
-<p>You can easily convert your JUnit tests with <tt>org.testng.JUnitConverter,</tt>  
-which you can invoke as follows:</p><ul>
-	<li><tt>-annotation | -javadoc</tt> (required)<br>
-	If <tt>-annotation</tt>, <tt>
-	JUnitConverter</tt> will insert JDK5 annotations, and if you specify <tt>-javadoc</tt>, 
-	the tool will insert JavaDoc annotations.<br>
- </li><li><tt>-srcdir | -source <fileName></tt> (required)<br>
-	<tt>-srcdir</tt>, the directory 
-	will be recursively traversed and any file that ends in .java will be 
-	processed.  If you specify <tt>-source</tt>, only that specific Java 
-	file will be processed.<br>
- </li><li><tt>-d | -overwrite</tt> (mandatory)<br>
-	By default, <tt>JUnitConverter </tt>will modify the sources it finds.  
-	If you specify a directory with this option, this is where the modified 
-	files will be created.  If you specify <tt>-overwrite</tt>, the source 
-	files will be directly modified.<br>
- </li><li><tt>-quiet</tt><br>
-	<tt>JUnitConverter</tt> will not print anything on the console.</li></ul>
-
-	<p>Here is a sample use that will convert all the JUnit tests in the <tt>src/</tt> 
-directory to TestNG:</p>
-
-<pre class="brush: text">
-java org.testng.JUnitConverter -overwrite -annotation -srcdir src
-</pre>
-Notes:<blockquote>
-	<ul>
-		<li><i><tt>JUnitConverter</tt> uses classes from <tt>tools.jar</tt>, which is located in 
-		<tt>$JAVA_HOME/lib/tools.jar</tt>, 
-so make sure you have this jar file in your classpath.<br>
- </i></li>
-		<li><i><tt>JUnitConverter</tt> 
-only runs with the JDK5, so if you receive an error (such as "unknown -quiet 
-parameter"), make sure your classpath only contains JDK5 jar files.</i></li>
-	</ul>
-</blockquote><p><tt>JUnitConverter</tt> also has an ant task, which you can invoke as follows: </p>
-
-<pre class="brush: xml">
-<project name="test" default="init">
-  <target name="init">
-    <taskdef resource="testngtasks" />
-  </target>
-     
-  <target name="junitconvert" depends="init">
-    <junit-converter sourcedir="C:\dev\projects\test\java" outputdir="C:\dev\projects\temp" annotations="false" />
-  </target>
-</project>
-</pre>
-
-<h3>Asserts</h3>
-Note that the class <tt>org.testng.Assert</tt> uses a different argument ordering than the ones used by JUnit. If you are porting code that uses JUnit's asserts, you might want to us a static import of that class:
-
-<pre class="brush: java">
-import static org.testng.AssertJUnit.*;
-</pre>
-	
-
-<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
-</script>
-<script type="text/javascript">
-_uacct = "UA-238215-2";
-urchinTracker();
-</script>
-
-
-</body>
-	
\ No newline at end of file
diff --git a/doc/misc.html b/doc/misc.html
deleted file mode 100644
index 82bf741..0000000
--- a/doc/misc.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<html>
-    <head>
-        <title>TestNG - Miscellaneous</title>
-        <script type="text/javascript" src="banner.js"></script>
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-      </head>
-<body>
-
-<script type="text/javascript">
-    displayMenu("misc.html")
-</script>
-
-
-
-<h2 align="center">MORE <a name="news">TESTNG READING</a></h2><p>Here are 
-several articles and presentations about TestNG (<a href="#english">English</a>, 
-<a href="#french">French</a>, <a href="#german">German</a>).</p>
-<h3><a name="english">English</a></h3><ul>
-
-
-<!--
-       <li><a href=""></a></li>
--->
-
-       
-       <li><a href="http://blog.jayway.com/2009/12/14/powermock-testng-true/">TestNG + PowerMock + Mockito</a></li>
-       <li><a href="http://maxheapsize.com/2009/09/23/test-jboss-rules-5-with-testng/">TestNG and Drools </a></li>
-       <li><a href="http://functionaltestautomation.blogspot.com/2009/10/dataprovider-data-driven-testing-with.html">Data Driven Testing with Selenium and TestNG</a></li>
-       <li><a href="http://margelatu.org/2009/06/25/java-code-coverage-reports-in-eclipse/">Code coverage with Emma and TestNG</a></li>
-       <li><a href="http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/">Comparison between JUnit 4 and TestNG</a></li>
-       <li><a href="http://www.michaelminella.com/testing/unit-testing-with-testng-and-jmockit.html">Unit testing with TestNG and JMockit (part 1)</a></li>
-
-       <li>
-	<a href="http://www.michaelminella.com/testing/unit-testing-with-testng-and-jmockit-part-2.html">Unit testing with TestNG and JMockit (part 2)</a></li>
-      
-       <li>
-	<a href="http://www.techbookreport.com/tbr0332.html">Review of the book</a></li>
-
-	<li>
-	<a href="http://thediscoblog.com/2006/10/05/testng-is-so-groovy/">TestNG and 
-	Groovy (Andrew Glover, October 2006)</a></li>
-		<li>
-	<a href="http://www-128.ibm.com/developerworks/java/library/j-cq08296/">In 
-	pursuit of code quality (Andrew Glover, August 2006)</a></li>
-		<li>
-	<a href="http://membres.lycos.fr/testng/">TestNG Tutorial (Claude Quezel, 
-	March 2006)</a></li>
-		<li>
-	<a href="http://stripes.mc4j.org/confluence/display/stripes/Unit+Testing">
-	TestNG and Stripes (Tim Fennel, April 2006)</a></li>
-		<li>
-	<a href="http://testearly.com/2006/04/03/rerunning-of-failed-tests/">
-	Rerunning failed tests (Andrew Glover, April 2006)</a></li>
-		<li>
-	<a href="http://howardlewisship.com/tapestry-javaforge/tapestry-testng/">
-	Tapestry and TestNG (Howard Lewis-Ship, April 2006)</a></li>
-		<li>
-	<a href="http://thediscoblog.com/2006/03/27/using-junit-extensions-in-testng/">
-	Using JUnit extensions in TestNG (Andrew Glover, March 2006)</a></li>
-		<li>
-	<a href="http://www-128.ibm.com/developerworks/forums/dw_thread.jsp?forum=812&thread=110765&cat=10">
-	Code coverage of TestNG tests with Cobertura (Andrew Glover, March 2006)</a></li>
-		<li>
-	<a href="http://beust.com/weblog/archives/000369.html">Statistical Testing (Cédric 
-	Beust, February 2006)</a></li>
-		<li>
-	<a href="http://bill.dudney.net/roller/page/bill?entry=testng_is_a_leap_beyond">
-	TestNG and JUnit (Bill Dudney, February 2006)</a></li>
-		<li>
-	<a href="http://beust.com/weblog/archives/000362.html">Distributed TestNG (Cédric 
-	Beust, January 2006)</a></li>
-		<li>
-	<a href="http://erik.thauvin.net/blog/news.jsp?date=2006-01-29#418">Testing 
-	private methods (Erik Thauvin, January 2006)</a></li>
-		<li>
-	<a href="http://blog.hibernate.org/cgi-bin/blosxom.cgi/2005/11/24#ejb3withtestng">
-	Testing EJB3 with TestNG (Christian Bauer, November 2005)</a></li>
-		<li>
-	<a href="http://www.vanwardtechnologies.com/cedricb01.php">Vanward 
-	Technologies interview (October 2005)</a></li>
-	<li>
-	<a href="http://jroller.com/page/tfenne?entry=i_m_starting_to_really">TestNG 
-	reaction (Tim Fennell, October 2005)</a></li>
-	<li>
-	<a href="http://www.realsolve.co.uk/site/tech/blog.php?name=philzoio&mydate=20050826">
-	Using JUnit libraries with TestNG (Phil Zoio, August 2005)</a></li>
-	<li><a href="http://jyperion.org/articles/testng/testng.htm">Introducing 
-	TestNG (Thierry Janaudy, August 2005)</a></li>
-	<li><a href="http://www.theserverside.com/news/thread.tss?thread_id=35737">
-	Migrating to TestNG (TheServerSide, August 2005)</a></li>
-	<li><a href="http://forum.springframework.org/viewtopic.php?t=7903">TestNG 
-	and Spring (August 2005)</a></li>
-	<li>
-	<a href="http://groups-beta.google.com/group/comp.lang.ruby/browse_thread/thread/3a0952199bb1bc1d/8a4a6d7931c039ce?lnk=st&q=testng+ruby&rnum=1&hl=en">
-	TestNG and Ruby (August 2005)</a></li>
-	<li><a href="http://www.thechanfam.net/wordpress/?p=36">TestNG and Maven 
-	(April 2005)</a></li><li><a href="http://kevin.oneill.id.au/2005/04/06/testng">
-		TestNG review (April 2005)</a></li><li>
-	<a href="http://www.javaworld.com/javaworld/jw-04-2005/jw-0404-testng_p.html">
-	JavaWorld (April 2005)</a></li><li><a href="http://pcal.net/blog/archives/2005/03/a_great_new_ide.html">
-		Solving the JUnit dependency problem (March 2005)</a></li><li><a href="http://beust.com/weblog/archives/000259.html">
-		Are dependent test methods really evil?  (March 2005)</a></li><li><a href="http://beust.com/weblog/archives/000252.html">
-		The "call super" anti-pattern (March 2005)</a></li><li>TestNG:  A 
-		different look at testing (Presentation at TheServerSide Symposium, 
-		March 2005)</li><li><a href="http://beust.com/weblog/archives/000236.html">
-		Testing asynchronous code with TestNG (February 2005)</a></li><li><a href="http://www-106.ibm.com/developerworks/java/library/j-testng/">
-		Making Testing a Breeze with TestNG (DeveloperWorks, January 2005)</a> 
-		(also
-	<a href="http://www.51testing.com/tech/20050122_1.htm">in Chinese</a>)</li><li><a href="http://www.theserverside.com/news/thread.tss?thread_id=31214">
-		TestNG:  Catch the Testing Fever (TheServerSide, January 2005)</a></li><li><a href="http://www.beust.com/weblog/archives/000230.html">
-		Why use XML to configure tests?  (January 2005)</a></li><li>
-	<a href="http://www.javapolis.com/confluence/display/JP04/Beyond+JUnit+,+introducing+TestNG,+the+next+generation+in+testing">
-	TestNG:  Beyond JUnit (Presentation at JavaPolis, Belgium, December 
-	2004)</a></li><li><a href="http://www.theserverside.com/news/thread.tss?thread_id=30394">
-		Announcing TestNG 2.0 (TheServerSide, December 2004)</a></li><li><a href="http://www.javalobby.org/articles/testng/">
-		TestNG:  Catching the TestNG fever (JavaLobby, December 2004)</a></li><li><a href="http://www.beust.com/weblog/archives/000170.html">
-		Using inheritance of annotations for flexible testing (August 2004)</a></li><li><a href="http://www.beust.com/weblog/archives/000175.html">
-		Multiple instantations of tests (August 2004)</a></li><li><a href="http://theserverside.com/blogs/showblog.tss?id=Unitized">
-		Don't get unitized (July 2004)</a></li><li>
-	<a href="http://www.google.com/url?sa=X&start=3&q=http://www.theserverside.com/news/thread.tss?thread_id=25568">
-	TestNG:  Testing, the Next Generation (TheServerSide, April 2004)</a></li></ul>
-<h3><a name="french">French</a></h3>
-<ul>
-	<li><a href="http://www.spalud.info/testng/">Le framework TestNG</a> (Sébastien 
-	Palud, April 2006)<br>
- </li>
-</ul>
-
-<h3><a name="german">German</a></h3>
-<ul>
-	<li><a href="http://www.qaware.de/downloads/to1-adersberger.pdf">Comparison TestNG / JUnit 4</a> (Josef Adersberger,
-	May 2006, PDF)<br>
- </li>
-</ul>
-
-<h2 align="center">
-<a name="contributors">CONTRIBUTORS</a></h2><p align="left">TestNG has received a lot of help from various people throughout 
-its existence.</p><p align="left">With code:</p><ul>
-	<li>
-	<p align="left"><a href="mailto:the_mindstorm at evolva.ro">Alexandru Popescu</a>, 
-	who ported TestNG to JDK 1.4 and has been tirelessly contributing ever 
-	since.</li>
-	<li>
-	<p align="left">Hani Suleiman and Mark Derricutt (IDEA plug-in).</li>
-	<li>
-	<p align="left">Andrew Glover and <a href="http://tacos.sourceforge.net">Jesse Kuhnert</a>/<a href="http://blogs.codehaus.org/people/brett//archives/maven.html">Brett Porter</a> (Maven 1 and Maven 2 
-	plug-ins respectively).</li><li>
-	<p align="left">Jolly Chen (JUnitReport plug-in).</li><li>
-	<p align="left">Thierry Janaudy (PDF report plug-in).</li></ul><p align="left">And also with ideas, articles and bug reports:</p><ul>
-	<li>
-	<p align="left">Filippo Diotalevi, Matthew Schmidt Robert McIntosh, JR 
-	Boyens, Robert Watkins, Aleksi Kallio, Doug Lea, Eron Wright, Guillaume 
-	Laforge, Owen Griffiths, Jean-Louis Berliet, 
-	Morten Christensen and many others... </li>
-</ul>
-
-<h2 align="center"> </h2>
-
-<h2 align="center">
-SPECIAL THANKS
-</h2>
-To <a href="http://yourkit.com">YourKit</a> for helping us profiling TestNG.<p> </p>
-
-
-<h2 align="center"><a name="testimonies">TESTIMONIES</a></h2><p align="left">A great product is nothing without testimonies, so here is what 
-people have to say about TestNG:</p><p align="left">"It's a lot of fun.  Not as fun as Seinfeld, but more fun than 
-Chris Rock on a bad day"<br>
-    - <i>A buddy</i> <br>
-<br>
-"Are you going to eat your dessert?"<br>
-    - <i>Someone I met at the cafeteria</i><br>
- <br>
-"Rock on, dude"<br>
-    - <i>A skateboarder<br>
-</i> <br>
-"Okay, I'll try it.  Can I have my laptop back now"?<br>
-    - <i>A scared contractor<br>
-</i> <br>
-"Cedric, stop talking to him, he's sleeping"<br>
-    - <i>Some random person who should mind their own business</i></p>
-
-</body>
-
-</html>
diff --git a/doc/pics/chronological-methods.png b/doc/pics/chronological-methods.png
deleted file mode 100644
index 84e23be..0000000
Binary files a/doc/pics/chronological-methods.png and /dev/null differ
diff --git a/doc/pics/parameters.png b/doc/pics/parameters.png
deleted file mode 100644
index 7fa9f71..0000000
Binary files a/doc/pics/parameters.png and /dev/null differ
diff --git a/doc/pics/show-output1.png b/doc/pics/show-output1.png
deleted file mode 100644
index bac1f3b..0000000
Binary files a/doc/pics/show-output1.png and /dev/null differ
diff --git a/doc/pics/show-output2.png b/doc/pics/show-output2.png
deleted file mode 100644
index 1106f37..0000000
Binary files a/doc/pics/show-output2.png and /dev/null differ
diff --git a/doc/prettify.css b/doc/prettify.css
deleted file mode 100644
index c3bab21..0000000
--- a/doc/prettify.css
+++ /dev/null
@@ -1,34 +0,0 @@
-.prettyprint .kwd, .tag {
-  font-weight: bold;
-  color: #7f0055;
-}
-
-.prettyprint .str,.atv {
-  color: #0000cc;
-}
-
-.prettyprint .com {
-  color: #008800;
-}
-
-.prettyprint .lit {
-  color: #cc2222;
-  font-weight: bold;
-}
-
-
-pre.prettyprint { padding: 2px; border: 1px solid #888; }
-
- at media print {
-  .str { color: #060; }
-  .kwd { color: #006; font-weight: bold; }
-  .com { color: #600; font-style: italic; }
-  .typ { color: #404; font-weight: bold; }
-  .lit { color: #044; }
-  .pun { color: #440; }
-  .pln { color: #000; }
-  .tag { color: #006; font-weight: bold; }
-  .atn { color: #404; }
-  .atv { color: #060; }
-}
-
diff --git a/doc/prettify.js b/doc/prettify.js
deleted file mode 100644
index e788667..0000000
--- a/doc/prettify.js
+++ /dev/null
@@ -1,1314 +0,0 @@
-// Copyright 2005 Google Inc.
-// All Rights Reserved.
-//
-// msamuel at google.com
-
-// Usage:
-// 1) include this source file in an html page via
-// <script type=text/javascript src=prettify.js></script>
-// 2) define style rules.  See the example page for examples.
-// 3) mark the <pre> and <code> tags in your source with class=prettyprint.
-//    You can also use the (html deprecated) <xmp> tag, but the pretty printer
-//    needs to do more substantial DOM manipulations to support that, so some
-//    css styles may not be preserved.
-
-// Change log:
-// cbeust, 2006/08/22
-//   Java annotations (start with "@") are now captured as literals ("lit")
-// 
-
-var PR_keywords = new Object();
-/** initialize the keyword list for our target languages. */
-(function () {
-  var CPP_KEYWORDS = (
-    "bool break case catch char class const const_cast continue default " +
-    "delete deprecated dllexport dllimport do double dynamic_cast else enum " +
-    "explicit extern false float for friend goto if inline int long mutable " +
-    "naked namespace new noinline noreturn nothrow novtable operator private " +
-    "property protected public register reinterpret_cast return selectany " +
-    "short signed sizeof static static_cast struct switch template this " +
-    "thread throw true try typedef typeid typename union unsigned using " +
-    "declaration, using directive uuid virtual void volatile while typeof");
-  var JAVA_KEYWORDS = (
-    "abstract default goto package synchronized boolean do if private this " +
-    "break double implements protected throw byte else import public throws " +
-    "case enum instanceof return transient catch extends int short try char " +
-    "final interface static void class finally long strictfp volatile const " +
-    "float native super while continue for new switch");
-  var PYTHON_KEYWORDS = (
-    "and assert break class continue def del elif else except exec finally " +
-    "for from global if import in is lambda not or pass print raise return " +
-    "try while yield");
-  var JSCRIPT_KEYWORDS = (
-    "abstract boolean break byte case catch char class const continue " +
-    "debugger default delete do double else enum export extends false final " +
-    "finally float for function goto if implements import in instanceof int " +
-    "interface long native new null package private protected public return " +
-    "short static super switch synchronized this throw throws transient " +
-    "true try typeof var void volatile while with NaN Infinity");
-  var PERL_KEYWORDS = (
-    "foreach require sub unless until use elsif BEGIN END");
-  var SH_KEYWORDS = (
-    "if then do else fi end");
-  var KEYWORDS = [CPP_KEYWORDS, JAVA_KEYWORDS, PYTHON_KEYWORDS,
-                  JSCRIPT_KEYWORDS, PERL_KEYWORDS, SH_KEYWORDS];
-  for (var k = 0; k < KEYWORDS.length; k++) {
-    var kw = KEYWORDS[k].split(' ');
-    for (var i = 0; i < kw.length; i++) {
-      if (kw[i]) { PR_keywords[kw[i]] = true; }
-    }
-  }
-}).call(this);
-
-// token style names.  correspond to css classes
-/** token style for a string literal */
-var PR_STRING = 'str';
-/** token style for a keyword */
-var PR_KEYWORD = 'kwd';
-/** token style for a comment */
-var PR_COMMENT = 'com';
-/** token style for a type */
-var PR_TYPE = 'typ';
-/** token style for a literal value.  e.g. 1, null, true. */
-var PR_LITERAL = 'lit';
-/** token style for a punctuation string. */
-var PR_PUNCTUATION = 'pun';
-/** token style for a punctuation string. */
-var PR_PLAIN = 'pln';
-
-/** token style for an sgml tag. */
-var PR_TAG = 'tag';
-/** token style for a markup declaration such as a DOCTYPE. */
-var PR_DECLARATION = 'dec';
-/** token style for embedded source. */
-var PR_SOURCE = 'src';
-/** token style for an sgml attribute name. */
-var PR_ATTRIB_NAME = 'atn';
-/** token style for an sgml attribute value. */
-var PR_ATTRIB_VALUE = 'atv';
-
-/** the position of the end of a token during.  A division of a string into
-  * n tokens can be represented as a series n - 1 token ends, as long as
-  * runs of whitespace warrant their own token.
-  * @private
-  */
-function PR_TokenEnd(end, style) {
-  if (undefined === style) { throw new Error('BAD'); }
-  if ('number' != typeof(end)) { throw new Error('BAD'); }
-  this.end = end;
-  this.style = style;
-}
-PR_TokenEnd.prototype.toString = function () {
-  return '[PR_TokenEnd ' + this.end +
-    (this.style ? ':' + this.style : '') + ']';
-};
-
-
-/** a chunk of text with a style.  These are used to represent both the output
-  * from the lexing functions as well as intermediate results.
-  * @constructor
-  * @param token the token text
-  * @param style one of the token styles defined in designdoc-template, or null
-  *   for a styleless token, such as an embedded html tag.
-  * @private
-  */
-function PR_Token(token, style) {
-  if (undefined === style) { throw new Error('BAD'); }
-  this.token = token;
-  this.style = style;
-}
-
-PR_Token.prototype.toString = function () {
-  return '[PR_Token ' + this.token + (this.style ? ':' + this.style : '') + ']';
-};
-
-
-/** a helper class that decodes common html entities used to escape source and
-  * markup punctuation characters in html.
-  * @constructor
-  * @private
-  */
-function PR_DecodeHelper() {
-  this.next = 0;
-  this.ch = '\0';
-}
-
-PR_DecodeHelper.prototype.decode = function (s, i) {
-  var next = i + 1;
-  var ch = s.charAt(i);
-  if ('&' == ch) {
-    var semi = s.indexOf(';', next);
-    if (semi >= 0 && semi < next + 4) {
-      var entityName = s.substring(next, semi).toLowerCase();
-      next = semi + 1;
-      if ('lt' == entityName) {
-        ch = '<';
-      } else if ('gt' == entityName) {
-        ch = '>';
-      } else if ('quot' == entityName) {
-        ch = '"';
-      } else if ('apos' == entityName) {
-        ch = '\'';
-      } else if ('amp' == entityName) {
-        ch = '&';
-      } else {
-        next = i + 1;
-      }
-    }
-  }
-  this.next = next;
-  this.ch = ch;
-  return this.ch;
-}
-
-
-// some string utilities
-function PR_isWordChar(ch) {
-  return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
-}
-
-function PR_isIdentifierStart(ch) {
-  return PR_isWordChar(ch) || ch == '_' || ch == '$' || ch == '@';
-}
-
-function PR_isIdentifierPart(ch) {
-  return PR_isIdentifierStart(ch) || PR_isDigitChar(ch);
-}
-
-function PR_isSpaceChar(ch) {
-  return "\t \r\n".indexOf(ch) >= 0;
-}
-
-function PR_isDigitChar(ch) {
-  return ch >= '0' && ch <= '9';
-}
-
-function PR_trim(s) {
-  var i = 0, j = s.length - 1;
-  while (i <= j && PR_isSpaceChar(s.charAt(i))) { ++i; }
-  while (j > i && PR_isSpaceChar(s.charAt(j))) { --j; }
-  return s.substring(i, j + 1);
-}
-
-function PR_startsWith(s, prefix) {
-  return s.length >= prefix.length && prefix == s.substring(0, prefix.length);
-}
-
-function PR_endsWith(s, suffix) {
-  return s.length >= suffix.length &&
-         suffix == s.substring(s.length - suffix.length, s.length);
-}
-
-/** true iff prefix matches the first prefix characters in chars[0:len].
-  * @private
-  */
-function PR_prefixMatch(chars, len, prefix) {
-  if (len < prefix.length) { return false; }
-  for (var i = 0, n = prefix.length; i < n; ++i) {
-    if (prefix.charAt(i) != chars[i]) { return false; }
-  }
-  return true;
-}
-
-/** used to convert html special characters embedded in XMP tags into html. */
-function PR_textToHtml(str) {
-  return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
-}
-
-
-/** split markup into chunks of html tags (style null) and
-  * plain text (style {@link #PR_PLAIN}).
-  *
-  * @param s a String of html.
-  * @return an Array of PR_Tokens of style PR_PLAIN and null.
-  * @private
-  */
-function PR_chunkify(s) {
-  var chunks = new Array();
-  var state = 0;
-  var start = 0;
-  var pos = -1;
-  for (var i = 0, n = s.length; i < n; ++i) {
-    var ch = s.charAt(i);
-    switch (state) {
-      case 0:
-        if ('<' == ch) { state = 1; }
-        break;
-      case 1:
-        pos = i - 1;
-        if ('/' == ch) { state = 2; }
-        else if (PR_isWordChar(ch)) { state = 3; }
-        else if ('<' == ch) { state = 1; }
-        else { state = 0; }
-        break;
-      case 2:
-        if (PR_isWordChar(ch)) { state = 3; }
-        else if ('<' == ch) { state = 1; }
-        else { state = 0; }
-        break;
-      case 3:
-        if ('>' == ch) {
-          if (pos > start) {
-            chunks.push(new PR_Token(s.substring(start, pos), PR_PLAIN));
-          }
-          chunks.push(new PR_Token(s.substring(pos, i + 1), null));
-          start = i + 1;
-          pos = -1;
-          state = 0;
-        }
-        break;
-    }
-  }
-  if (s.length > start) {
-    chunks.push(new PR_Token(s.substring(start, s.length), PR_PLAIN));
-  }
-  return chunks;
-}
-
-/** splits chunks around entities.
-  * @private
-  */
-function PR_splitEntities(chunks) {
-  var chunksOut = new Array();
-  var state = 0;
-  for (var ci = 0, nc = chunks.length; ci < nc; ++ci) {
-    var chunk = chunks[ci];
-    if (PR_PLAIN != chunk.style) {
-      chunksOut.push(chunk);
-      continue;
-    }
-    var s = chunk.token;
-    var pos = 0;
-    var start;
-    for (var i = 0; i < s.length; ++i) {
-      var ch = s.charAt(i);
-      switch (state) {
-        case 0:
-          if ('&' == ch) { state = 1; }
-          break;
-        case 1:
-          if ('#' == ch || PR_isWordChar(ch)) {
-            start = i - 1;
-            state = 2;
-          } else {
-            state = 0;
-          }
-          break;
-        case 2:
-          if (';' == ch) {
-            if (start > pos) {
-              chunksOut.push(
-                  new PR_Token(s.substring(pos, start), chunk.style));
-            }
-            chunksOut.push(new PR_Token(s.substring(start, i + 1), null));
-            pos = i + 1;
-            state = 0;
-          }
-          break;
-      }
-    }
-    if (s.length > pos) {
-      chunksOut.push(pos ?
-                     new PR_Token(s.substring(pos, s.length), chunk.style) :
-                     chunk);
-    }
-  }
-  return chunksOut;
-}
-
-/** walk the tokenEnds list and the chunk list in parallel to generate a list
-  * of split tokens.
-  * @private
-  */
-function PR_splitChunks(chunks, tokenEnds) {
-  var tokens = new Array();  // the output
-
-  var ci = 0;  // index into chunks
-  // position of beginning of amount written so far in absolute space.
-  var posAbs = 0;
-  // position of amount written so far in chunk space
-  var posChunk = 0;
-
-  // current chunk
-  var chunk = new PR_Token('', null);
-
-  for (var ei = 0, ne = tokenEnds.length; ei < ne; ++ei) {
-    var tokenEnd = tokenEnds[ei];
-    var end = tokenEnd.end;
-
-    var tokLen = end - posAbs;
-    var remainingInChunk = chunk.token.length - posChunk;
-    while (remainingInChunk <= tokLen) {
-      if (remainingInChunk > 0) {
-        tokens.push(
-            new PR_Token(chunk.token.substring(posChunk, chunk.token.length),
-                         null == chunk.style ? null : tokenEnd.style));
-      }
-      posAbs += remainingInChunk;
-      posChunk = 0;
-      if (ci < chunks.length) { chunk = chunks[ci++]; }
-
-      tokLen = end - posAbs;
-      remainingInChunk = chunk.token.length - posChunk;
-    }
-
-    if (tokLen) {
-      tokens.push(
-          new PR_Token(chunk.token.substring(posChunk, posChunk + tokLen),
-                       tokenEnd.style));
-      posAbs += tokLen;
-      posChunk += tokLen;
-    }
-  }
-
-  return tokens;
-}
-
-/** splits markup tokens into declarations, tags, and source chunks.
-  * @private
-  */
-function PR_splitMarkup(chunks) {
-  // A state machine to split out declarations, tags, etc.
-  // This state machine deals with absolute space in the text, indexed by k,
-  // and position in the current chunk, indexed by pos and tokenStart to
-  // generate a list of the ends of tokens.
-  // Absolute space is calculated by considering the chunks as appended into
-  // one big string, as they were before being split.
-
-  // Known failure cases
-  // Server side scripting sections such as <?...?> in attributes.
-  // i.e. <span class="<? foo ?>">
-  // Handling this would require a stack, and we don't use PHP.
-
-  // The output: a list of pairs of PR_TokenEnd instances
-  var tokenEnds = new Array();
-
-  var state = 0;  // FSM state variable
-  var k = 0;  // position in absolute space of the start of the current chunk
-  var tokenStart = -1;  // the start of the current token
-
-  // Try to find a closing tag for any open <style> or <script> tags
-  // We can't do this at a later stage because then the following case
-  // would fail:
-  // <script>document.writeln('<!--');</script>
-
-  // We use tokenChars[:tokenCharsI] to accumulate the tag name so that we
-  // can check whether to enter into a no scripting section when the tag ends.
-  var tokenChars = new Array(12);
-  var tokenCharsI = 0;
-  // if non null, the tag prefix that we need to see to break out.
-  var endScriptTag = null;
-  var decodeHelper = new PR_DecodeHelper();
-
-  for (var ci = 0, nc = chunks.length; ci < nc; ++ci) {
-    var chunk = chunks[ci];
-    if (PR_PLAIN != chunk.style) {
-      k += chunk.token.length;
-      continue;
-    }
-
-    var s = chunk.token;
-    var pos = 0;  // the position past the last character processed so far in s
-
-    for (var i = 0, n = s.length; i < n; /* i = next at bottom */) {
-      decodeHelper.decode(s, i);
-      var ch = decodeHelper.ch;
-      var next = decodeHelper.next;
-
-      var tokenStyle = null;
-      switch (state) {
-        case 0:
-          if ('<' == ch) { state = 1; }
-          break;
-        case 1:
-          tokenCharsI = 0;
-          if ('/' == ch) {  // only consider close tags if we're in script/style
-            state = 7;
-          } else if (null == endScriptTag) {
-            if ('!' == ch) {
-              state = 2;
-            } else if (PR_isWordChar(ch)) {
-              state = 8;
-            } else if ('?' == ch) {
-              state = 9;
-            } else if ('%' == ch) {
-              state = 11;
-            } else if ('<' != ch) {
-              state = 0;
-            }
-          } else if ('<' != ch) {
-            state = 0;
-          }
-          break;
-        case 2:
-          if ('-' == ch) {
-            state = 4;
-          } else if (PR_isWordChar(ch)) {
-            state = 3;
-          } else if ('<' == ch) {
-            state = 1;
-          } else {
-            state = 0;
-          }
-          break;
-        case 3:
-          if ('>' == ch) {
-            state = 0;
-            tokenStyle = PR_DECLARATION;
-          }
-          break;
-        case 4:
-          if ('-' == ch) { state = 5; }
-          break;
-        case 5:
-          if ('-' == ch) { state = 6; }
-          break;
-        case 6:
-          if ('>' == ch) {
-            state = 0;
-            tokenStyle = PR_COMMENT;
-          } else if ('-' == ch) {
-            state = 6;
-          } else {
-            state = 4;
-          }
-          break;
-        case 7:
-          if (PR_isWordChar(ch)) {
-            state = 8;
-          } else if ('<' == ch) {
-            state = 1;
-          } else {
-            state = 0;
-          }
-          break;
-        case 8:
-          if ('>' == ch) {
-            state = 0;
-            tokenStyle = PR_TAG;
-          }
-          break;
-        case 9:
-          if ('?' == ch) { state = 10; }
-          break;
-        case 10:
-          if ('>' == ch) {
-            state = 0;
-            tokenStyle = PR_SOURCE;
-          } else if ('?' != ch) {
-            state = 9;
-          }
-          break;
-        case 11:
-          if ('%' == ch) { state = 12; }
-          break;
-        case 12:
-          if ('>' == ch) {
-            state = 0;
-            tokenStyle = PR_SOURCE;
-          } else if ('%' != ch) {
-            state = 11;
-          }
-          break;
-      }
-
-      if (tokenCharsI < tokenChars.length) {
-        tokenChars[tokenCharsI++] = ch.toLowerCase();
-      }
-      if (1 == state) { tokenStart = k + i; }
-      i = next;
-      if (tokenStyle != null) {
-        if (null != tokenStyle) {
-          if (endScriptTag) {
-            if (PR_prefixMatch(tokenChars, tokenCharsI, endScriptTag)) {
-              endScriptTag = null;
-            }
-          } else {
-            if (PR_prefixMatch(tokenChars, tokenCharsI, 'script')) {
-              endScriptTag = '/script';
-            } else if (PR_prefixMatch(tokenChars, tokenCharsI, 'style')) {
-              endScriptTag = '/style';
-            } else if (PR_prefixMatch(tokenChars, tokenCharsI, 'xmp')) {
-              endScriptTag = '/xmp';
-            }
-          }
-          // disallow the tag if endScriptTag is set and this was not an open
-          // tag.
-          if (endScriptTag && tokenCharsI && '/' == tokenChars[0]) {
-            tokenStyle = null;
-          }
-        }
-        if (null != tokenStyle) {
-          tokenEnds.push(new PR_TokenEnd(tokenStart, PR_PLAIN));
-          tokenEnds.push(new PR_TokenEnd(k + next, tokenStyle));
-        }
-      }
-    }
-    k += chunk.token.length;
-  }
-  tokenEnds.push(new PR_TokenEnd(k, PR_PLAIN));
-
-  return tokenEnds;
-}
-
-/** splits the given string into comment, string, and "other" tokens.
-  * @return an array of PR_Tokens with style in
-  *   (PR_STRING, PR_COMMENT, PR_PLAIN, null)
-  *   The result array may contain spurious zero length tokens.  Ignore them.
-  *
-  * @private
-  */
-function PR_splitStringAndCommentTokens(chunks) {
-  // a state machine to split out comments, strings, and other stuff
-  var tokenEnds = new Array();  // positions of ends of tokens in absolute space
-  var state = 0;  // FSM state variable
-  var delim = -1;  // string delimiter
-  var k = 0;  // absolute position of beginning of current chunk
-  for (var ci = 0, nc = chunks.length; ci < nc; ++ci) {
-    var chunk = chunks[ci];
-    var s = chunk.token;
-    if (PR_PLAIN == chunk.style) {
-      for (var i = 0, n = s.length; i < n; ++i) {
-        var ch = s.charAt(i);
-        if (0 == state) {
-          if (ch == '"' || ch == '\'' || ch == '`') {
-            tokenEnds.push(new PR_TokenEnd(k + i, PR_PLAIN));
-            state = 1;
-            delim = ch;
-          } else if (ch == '/') {
-            state = 3;
-          } else if (ch == '#') {
-            tokenEnds.push(new PR_TokenEnd(k + i, PR_PLAIN));
-            state = 4;
-          }
-        } else if (1 == state) {
-          if (ch == delim) {
-            state = 0;
-            tokenEnds.push(new PR_TokenEnd(k + i + 1, PR_STRING));
-          } else if (ch == '\\') {
-            state = 2;
-          }
-        } else if (2 == state) {
-          state = 1;
-        } else if (3 == state) {
-          if (ch == '/') {
-            state = 4;
-            tokenEnds.push(new PR_TokenEnd(k + i - 1, PR_PLAIN));
-          } else if (ch == '*') {
-            state = 5;
-            tokenEnds.push(new PR_TokenEnd(k + i - 1, PR_PLAIN));
-          } else {
-            state = 0;
-            // next loop will reenter state 0 without same value of i, so
-            // ch will be reconsidered as start of new token.
-            --i;
-          }
-        } else if (4 == state) {
-          if (ch == '\r' || ch == '\n') {
-            state = 0;
-            tokenEnds.push(new PR_TokenEnd(k + i, PR_COMMENT));
-          }
-        } else if (5 == state) {
-          if (ch == '*') {
-            state = 6;
-          }
-        } else if (6 == state) {
-          if (ch == '/') {
-            state = 0;
-            tokenEnds.push(new PR_TokenEnd(k + i + 1, PR_COMMENT));
-          } else if (ch != '*') {
-            state = 5;
-          }
-        }
-      }
-    }
-    k += s.length;
-  }
-  tokenEnds.push(new PR_TokenEnd(k, PR_PLAIN));  // a token ends at the end
-
-  return PR_splitChunks(chunks, tokenEnds);
-}
-
-/** used by lexSource to split a non string, non comment token.
-  * @private
-  */
-function PR_splitNonStringNonCommentToken(s, outlist) {
-  var pos = 0;
-  var state = 0;
-  for (var i = 0; i <= s.length; i++) {
-    var ch = s.charAt(i);
-    // the next state.
-    // if set to -1 then it will cause a reentry to state 0 without consuming
-    // another character.
-    var nstate = state;
-
-    if (i == s.length) {
-      // nstate will not be equal to state, so it will append the token
-      nstate = -2;
-    } else {
-      switch (state) {
-      case 0:  // whitespace state
-        if (PR_isIdentifierStart(ch)) {
-          nstate = 1;
-        } else if (PR_isDigitChar(ch)) {
-          nstate = 2;
-        } else if (!PR_isSpaceChar(ch)) {
-          nstate = 3;
-        }
-        if (nstate && pos < i) {
-          var t = s.substring(pos, i);
-          outlist.push(new PR_Token(t, PR_PLAIN));
-          pos = i;
-        }
-        break;
-      case 1:  // identifier state
-        if (!PR_isIdentifierPart(ch)) {
-          nstate = -1;
-        }
-        break;
-      case 2:  // number literal state
-        // handle numeric literals like
-        // 0x7f 300UL 100_000
-
-        // this does not treat floating point values as a single literal
-        //   0.1 and 3e-6
-        // are each split into multiple tokens
-        if (!(PR_isDigitChar(ch) || PR_isWordChar(ch) || ch == '_')) {
-          nstate = -1;
-        }
-        break;
-      case 3:  // punctuation state
-        if (PR_isIdentifierStart(ch) || PR_isDigitChar(ch) ||
-            PR_isSpaceChar(ch)) {
-          nstate = -1;
-        }
-        break;
-      }
-    }
-
-    if (nstate != state) {
-      if (nstate < 0) {
-        if (i > pos) {
-          var t = s.substring(pos, i);
-          var ch0 = t.charAt(0);
-          var style;
-          if (PR_isIdentifierStart(ch0)) {
-            if (PR_keywords[t]) {
-              style = PR_KEYWORD;
-            }
-            else if (ch0 == '@') {
-              style = PR_LITERAL;
-            } else {
-              // Treat any word that starts with an uppercase character and
-              // contains at least one lowercase character as a type, or
-              // ends with _t.
-              // This works perfectly for Java, pretty well for C++, and
-              // passably for Python.  The _t catches C structs.
-              var isType = false;
-              if (ch0 >= 'A' && ch0 <= 'Z') {
-                for (var j = 1; j < t.length; j++) {
-                  var ch1 = t.charAt(j);
-                  if (ch1 >= 'a' && ch1 <= 'z') {
-                    isType = true;
-                    break;
-                  }
-                }
-                if (!isType && t.length >= 2 &&
-                    t.substring(t.length - 2) == '_t') {
-                  isType = true;
-                }
-              }
-              style = isType ? PR_TYPE : PR_PLAIN;
-            }
-          } else if (PR_isDigitChar(ch0)) {
-            style = PR_LITERAL;
-          } else if (!PR_isSpaceChar(ch0)) {
-            style = PR_PUNCTUATION;
-          } else {
-            style = PR_PLAIN;
-          }
-          pos = i;
-          outlist.push(new PR_Token(t, style));
-        }
-
-        state = 0;
-        if (nstate == -1) {
-          // don't increment.  This allows us to use state 0 to redispatch based
-          // on the current character.
-          i--;
-          continue;
-        }
-      }
-      state = nstate;
-    }
-  }
-}
-
-/** split a group of chunks of markup.
-  * @private
-  */
-function PR_tokenizeMarkup(chunks) {
-  if (!(chunks && chunks.length)) { return chunks; }
-
-  var tokenEnds = PR_splitMarkup(chunks);
-  return PR_splitChunks(chunks, tokenEnds);
-}
-
-/** split tags attributes and their values out from the tag name, and
-  * recursively lex source chunks.
-  * @private
-  */
-function PR_splitTagAttributes(tokens) {
-  var tokensOut = new Array();
-  var state = 0;
-  var stateStyle = PR_TAG;
-  var delim = null;  // attribute delimiter for quoted value state.
-  var decodeHelper = new PR_DecodeHelper();
-  for (var ci = 0; ci < tokens.length; ++ci) {
-    var tok = tokens[ci];
-    if (PR_TAG == tok.style) {
-      var s = tok.token;
-      var start = 0;
-      for (var i = 0; i < s.length; /* i = next at bottom */) {
-        decodeHelper.decode(s, i);
-        var ch = decodeHelper.ch;
-        var next = decodeHelper.next;
-
-        var emitEnd = null;  // null or position of end of chunk to emit.
-        var nextStyle = null;  // null or next value of stateStyle
-        if (ch == '>') {
-          if (PR_TAG != stateStyle) {
-            emitEnd = i;
-            nextStyle = PR_TAG;
-          }
-        } else {
-          switch (state) {
-            case 0:
-              if ('<' == ch) { state = 1; }
-              break;
-            case 1:
-              if (PR_isSpaceChar(ch)) { state = 2; }
-              break;
-            case 2:
-              if (!PR_isSpaceChar(ch)) {
-                nextStyle = PR_ATTRIB_NAME;
-                emitEnd = i;
-                state = 3;
-              }
-              break;
-            case 3:
-              if ('=' == ch) {
-                emitEnd = i;
-                nextStyle = PR_TAG;
-                state = 5;
-              } else if (PR_isSpaceChar(ch)) {
-                emitEnd = i;
-                nextStyle = PR_TAG;
-                state = 4;
-              }
-              break;
-            case 4:
-              if ('=' == ch) {
-                state = 5;
-              } else if (!PR_isSpaceChar(ch)) {
-                emitEnd = i;
-                nextStyle = PR_ATTRIB_NAME;
-                state = 3;
-              }
-              break;
-            case 5:
-              if ('"' == ch || '\'' == ch) {
-                emitEnd = i;
-                nextStyle = PR_ATTRIB_VALUE;
-                state = 6;
-                delim = ch;
-              } else if (!PR_isSpaceChar(ch)) {
-                emitEnd = i;
-                nextStyle = PR_ATTRIB_VALUE;
-                state = 7;
-              }
-              break;
-            case 6:
-              if (ch == delim) {
-                emitEnd = next;
-                nextStyle = PR_TAG;
-                state = 2;
-              }
-              break;
-            case 7:
-              if (PR_isSpaceChar(ch)) {
-                emitEnd = i;
-                nextStyle = PR_TAG;
-                state = 2;
-              }
-              break;
-          }
-        }
-        if (emitEnd) {
-          if (emitEnd > start) {
-            tokensOut.push(
-                new PR_Token(s.substring(start, emitEnd), stateStyle));
-            start = emitEnd;
-          }
-          stateStyle = nextStyle;
-        }
-        i = next;
-      }
-      if (s.length > start) {
-        tokensOut.push(new PR_Token(s.substring(start, s.length), stateStyle));
-      }
-    } else {
-      if (tok.style) {
-        state = 0;
-        stateStyle = PR_TAG;
-      }
-      tokensOut.push(tok);
-    }
-  }
-  return tokensOut;
-}
-
-/** identify regions of markup that are really source code, and recursivley
-  * lex them.
-  * @private
-  */
-function PR_splitSourceNodes(tokens) {
-  var tokensOut = new Array();
-  // when we see a <script> tag, store '/' here so that we know to end the
-  // source processing
-  var endScriptTag = null;
-  var decodeHelper = new PR_DecodeHelper();
-
-  var sourceChunks = null;
-
-  for (var ci = 0, nc = tokens.length; ci < nc; ++ci) {
-    var tok = tokens[ci];
-    if (null == tok.style) {
-      tokens.push(tok);
-      continue;
-    }
-
-    var s = tok.token;
-
-    if (null == endScriptTag) {
-      if (PR_SOURCE == tok.style) {
-        // split off any starting and trailing <?, <%
-        if ('<' == decodeHelper.decode(s, 0)) {
-          decodeHelper.decode(s, decodeHelper.next);
-          if ('%' == decodeHelper.ch || '?' == decodeHelper.ch) {
-            endScriptTag = decodeHelper.ch;
-            tokensOut.push(new PR_Token(s.substring(0, decodeHelper.next),
-                                        PR_TAG));
-            s = s.substring(decodeHelper.next, s.length);
-          }
-        }
-      } else if (PR_TAG == tok.style) {
-        if ('<' == decodeHelper.decode(s, 0) &&
-            '/' != s.charAt(decodeHelper.next)) {
-          var tagContent = s.substring(decodeHelper.next).toLowerCase();
-          // FIXME(msamuel): this does not mirror exactly the code in
-          // in PR_splitMarkup that defers splitting tags inside script and
-          // style blocks.
-          if (PR_startsWith(tagContent, 'script') ||
-              PR_startsWith(tagContent, 'style') ||
-              PR_startsWith(tagContent, 'xmp')) {
-            endScriptTag = '/';
-          }
-        }
-      }
-    }
-
-    if (null != endScriptTag) {
-      var endTok = null;
-      if (PR_SOURCE == tok.style) {
-        if (endScriptTag == '%' || endScriptTag == '?') {
-          var pos = s.lastIndexOf(endScriptTag);
-          if (pos >= 0 && '>' == decodeHelper.decode(s, pos + 1) &&
-              s.length == decodeHelper.next) {
-            endTok = new PR_Token(s.substring(pos, s.length), PR_TAG);
-            s = s.substring(0, pos);
-          }
-        }
-        if (null == sourceChunks) { sourceChunks = new Array(); }
-        sourceChunks.push(new PR_Token(s, PR_PLAIN));
-      } else if (PR_PLAIN == tok.style) {
-        if (null == sourceChunks) { sourceChunks = new Array(); }
-        sourceChunks.push(tok);
-      } else if (PR_TAG == tok.style) {
-        // if it starts with </ then it must be the end tag.
-        if ('<' == decodeHelper.decode(tok.token, 0) &&
-            tok.token.length > decodeHelper.next &&
-            '/' == decodeHelper.decode(tok.token, decodeHelper.next)) {
-          endTok = tok;
-        } else {
-          tokensOut.push(tok);
-        }
-      } else {
-        if (sourceChunks) {
-          sourceChunks.push(tok);
-        } else {
-          // push remaining tag and attribute tokens from the opening tag
-          tokensOut.push(tok);
-        }
-      }
-      if (endTok) {
-        if (sourceChunks) {
-          var sourceTokens = PR_lexSource(sourceChunks);
-          tokensOut.push(new PR_Token('<span class=embsrc>', null));
-          for (var si = 0, ns = sourceTokens.length; si < ns; ++si) {
-            tokensOut.push(sourceTokens[si]);
-          }
-          tokensOut.push(new PR_Token('</span>', null));
-          sourceChunks = null;
-        }
-        tokensOut.push(endTok);
-        endScriptTag = null;
-      }
-    } else {
-      tokensOut.push(tok);
-    }
-  }
-  return tokensOut;
-}
-
-/** splits the quotes from an attribute value.
-  * ['"foo"'] -> ['"', 'foo', '"']
-  * @private
-  */
-function PR_splitAttributeQuotes(tokens) {
-  var firstPlain = null, lastPlain = null;
-  for (var i = 0; i < tokens.length; ++i) {
-    if (PR_PLAIN = tokens[i].style) {
-      firstPlain = i;
-      break;
-    }
-  }
-  for (var i = tokens.length; --i >= 0;) {
-    if (PR_PLAIN = tokens[i].style) {
-      lastPlain = i;
-      break;
-    }
-  }
-  if (null == firstPlain) { return tokens; }
-
-  var decodeHelper = new PR_DecodeHelper();
-  var fs = tokens[firstPlain].token;
-  var fc = decodeHelper.decode(fs, 0);
-  if ('"' != fc && '\'' != fc) {
-    return tokens;
-  }
-  var fpos = decodeHelper.next;
-
-  var ls = tokens[lastPlain].token;
-  var lpos = ls.lastIndexOf('&');
-  if (lpos < 0) { lpos = ls.length - 1; }
-  var lc = decodeHelper.decode(ls, lpos);
-  if (lc != fc || decodeHelper.next != ls.length) {
-    lc = null;
-    lpos = ls.length;
-  }
-
-  var tokensOut = new Array();
-  for (var i = 0; i < firstPlain; ++i) {
-    tokensOut.push(tokens[i]);
-  }
-  tokensOut.push(new PR_Token(fs.substring(0, fpos), PR_ATTRIB_VALUE));
-  if (lastPlain == firstPlain) {
-    tokensOut.push(new PR_Token(fs.substring(fpos, lpos), PR_PLAIN));
-  } else {
-    tokensOut.push(new PR_Token(fs.substring(fpos, fs.length), PR_PLAIN));
-    for (var i = firstPlain + 1; i < lastPlain; ++i) {
-      tokensOut.push(tokens[i]);
-    }
-    if (lc) {
-      tokens.push(new PR_Token(ls.substring(0, lpos), PR_PLAIN));
-    } else {
-      tokens.push(tokens[lastPlain]);
-    }
-  }
-  if (lc) {
-    tokensOut.push(new PR_Token(ls.substring(lpos, ls.length), PR_PLAIN));
-  }
-  for (var i = lastPlain + 1; i < tokens.length; ++i) {
-    tokensOut.push(tokens[i]);
-  }
-  return tokensOut;
-}
-
-/** identify attribute values that really contain source code and recursively
-  * lex them.
-  * @private
-  */
-function PR_splitSourceAttributes(tokens) {
-  var tokensOut = new Array();
-
-  var sourceChunks = null;
-  var inSource = false;
-  var name = '';
-
-  for (var ci = 0, nc = tokens.length; ci < nc; ++ci) {
-    var tok = tokens[ci];
-    var outList = tokensOut;
-    if (PR_TAG == tok.style) {
-      if (inSource) {
-        inSource = false;
-        name = '';
-        if (sourceChunks) {
-          tokensOut.push(new PR_Token('<span class=embsrc>', null));
-          var sourceTokens =
-            PR_lexSource(PR_splitAttributeQuotes(sourceChunks));
-          for (var si = 0, ns = sourceTokens.length; si < ns; ++si) {
-            tokensOut.push(sourceTokens[si]);
-          }
-          tokensOut.push(new PR_Token('</span>', null));
-          sourceChunks = null;
-        }
-      } else if (name && tok.token.indexOf('=') >= 0) {
-        var nameLower = name.toLowerCase();
-        if (PR_startsWith(nameLower, 'on') || 'style' == nameLower) {
-          inSource = true;
-        }
-      } else {
-        name = '';
-      }
-    } else if (PR_ATTRIB_NAME == tok.style) {
-      name += tok.token;
-    } else if (PR_ATTRIB_VALUE == tok.style) {
-      if (inSource) {
-        if (null == sourceChunks) { sourceChunks = new Array(); }
-        outList = sourceChunks;
-        tok = new PR_Token(tok.token, PR_PLAIN);
-      }
-    } else {
-      if (sourceChunks) {
-        outList = sourceChunks;
-      }
-    }
-    outList.push(tok);
-  }
-  return tokensOut;
-}
-
-/** returns a list of PR_Token objects given chunks of source code.
-  *
-  * This code assumes that < tokens are html escaped, but " are not.
-  * It will do a resonable job with <, but will not recognize an "
-  * as starting a string.
-  *
-  * This code treats ", ', and ` as string delimiters, and \ as a string escape.
-  * It does not recognize double delimiter escapes, or perl's qq() style
-  * strings.
-  *
-  * It recognizes C, C++, and shell style comments.
-  *
-  * @param chunks PR_Tokens with style in (null, PR_PLAIN)
-  */
-function PR_lexSource(chunks) {
-  // positions of ends of tokens in order
-  var tokensIn = PR_splitStringAndCommentTokens(chunks);
-
-  // split entities out of so that we know to treat them as single units.
-  tokensIn = PR_splitEntities(tokensIn);
-
-  // split non comment|string tokens on whitespace and word boundaries
-  var tokensOut = new Array();
-  for (var i = 0; i < tokensIn.length; ++i) {
-    var tok = tokensIn[i];
-    var t = tok.token;
-    var s = tok.style;
-
-    if (PR_PLAIN == s) {
-      PR_splitNonStringNonCommentToken(t, tokensOut);
-      continue;
-    }
-    tokensOut.push(tok);
-  }
-
-  return tokensOut;
-}
-
-/** returns a list of PR_Token objects given a string of markup.
-  *
-  * This code assumes that < tokens are html escaped, but " are not.
-  * It will do a resonable job with <, but will not recognize an "
-  * as starting a string.
-  *
-  * This code recognizes a number of constructs.
-  * <!-- ... --> comment
-  * <!\w ... >   declaration
-  * <\w ... >    tag
-  * </\w ... >   tag
-  * <?...?>      embedded source
-  * &[#\w]...;   entity
-  *
-  * It does not recognizes %foo; entities.
-  *
-  * It will recurse into any <style>, <script>, and on* attributes using
-  * PR_lexSource.
-  */
-function PR_lexMarkup(chunks) {
-  // This function works as follows:
-  // 1) Start by splitting the markup into text and tag chunks
-  //    Input:  String s
-  //    Output: List<PR_Token> where style in (PR_PLAIN, null)
-  // 2) Then split the text chunks further into comments, declarations,
-  //    tags, etc.
-  //    After each split, consider whether the token is the start of an
-  //    embedded source section, i.e. is an open <script> tag.  If it is,
-  //    find the corresponding close token, and don't bother to lex in between.
-  //    Input:  List<String>
-  //    Output: List<PR_Token> with style in (PR_TAG, PR_PLAIN, PR_SOURCE, null)
-  // 3) Finally go over each tag token and split out attribute names and values.
-  //    Input:  List<PR_Token>
-  //    Output: List<PR_Token> where style in
-  //            (PR_TAG, PR_PLAIN, PR_SOURCE, NAME, VALUE, null)
-  var tokensOut = PR_tokenizeMarkup(chunks);
-  tokensOut = PR_splitTagAttributes(tokensOut);
-  tokensOut = PR_splitSourceNodes(tokensOut);
-  tokensOut = PR_splitSourceAttributes(tokensOut);
-  return tokensOut;
-}
-
-/** classify the string as either source or markup and lex appropriately. */
-function PR_lexOne(s) {
-  var chunks = PR_chunkify(s);
-  // treat it as markup if the first non whitespace character is a < and the
-  // last non-whitespace character is a >
-  var isMarkup = false;
-  for (var i = 0; i < chunks.length; ++i) {
-    if (PR_PLAIN == chunks[i].style) {
-      if (PR_startsWith(PR_trim(chunks[i].token), '<')) {
-        for (var j = chunks.length; --j >= 0;) {
-          if (PR_PLAIN == chunks[j].style) {
-            isMarkup = PR_endsWith(PR_trim(chunks[j].token), '>');
-            break;
-          }
-        }
-      }
-      break;
-    }
-  }
-  return isMarkup ? PR_lexMarkup(chunks) : PR_lexSource(chunks);
-}
-
-/** pretty print a chunk of code.
-  *
-  * @param s code as html
-  * @return code as html, but prettier
-  */
-function prettyPrintOne(s) {
-  try {
-    var tokens = PR_lexOne(s);
-    var out = '';
-    var lastStyle = null;
-    for (var i = 0; i < tokens.length; i++) {
-      var t = tokens[i];
-      if (t.style != lastStyle) {
-        if (lastStyle != null) {
-          out += '</span>';
-        }
-        if (t.style != null) {
-          out += '<span class=' + t.style + '>';
-        }
-        lastStyle = t.style;
-      }
-      var html = t.token;
-      if (null != t.style) {
-        // This interacts badly with the wiki which introduces paragraph tags
-        // int pre blocks for some strange reason.
-        // It's necessary for IE though which seems to lose the preformattedness
-        // of <pre> tags when their innerHTML is assigned.
-        html = html.replace(/(?:\r\n?)|\n/g, '<br>').replace(/  /g, '  ');
-      }
-      out += html;
-    }
-    if (lastStyle != null) {
-      out += '</span>';
-    }
-    return out;
-  } catch (e) {
-    //alert(e.stack);  // DISABLE in production
-    return s;
-  }
-}
-
-/** find all the < pre > and < code > tags in the DOM with class=prettyprint and
-  * prettify them.
-  */
-function prettyPrint() {
-  // fetch a list of nodes to rewrite
-  var codeSegments = [
-      document.getElementsByTagName('pre'),
-      document.getElementsByTagName('code'),
-      document.getElementsByTagName('xmp') ];
-  var elements = [];
-  for (var i = 0; i < codeSegments.length; ++i) {
-    for (var j = 0; j < codeSegments[i].length; ++j) {
-      elements.push(codeSegments[i][j]);
-    }
-  }
-  codeSegments = null;
-
-  // the loop is broken into a series of continuations to make sure that we
-  // don't make the browser unresponsive when rewriting a large page.
-  var k = 0;
-
-  function doWork() {
-    var endTime = new Date().getTime() + 250;
-    for (; k < elements.length && new Date().getTime() < endTime; k++) {
-      var cs = elements[k];
-      if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
-
-        // make sure this is not nested in an already prettified element
-        var nested = false;
-        for (var p = cs.parentNode; p != null; p = p.parentNode) {
-          if ((p.tagName == 'pre' || p.tagName == 'code' ||
-               p.tagName == 'xmp') &&
-              p.className && p.className.indexOf('prettyprint') >= 0) {
-            nested = true;
-            break;
-          }
-        }
-        if (!nested) {
-          // XMP tags contain unescaped entities so require special handling.
-          var isRawContent = 'XMP' == cs.tagName;
-
-          // fetch the content as a snippet of properly escaped HTML
-          var content = cs.innerHTML;
-          if (isRawContent) {
-            content = PR_textToHtml(content);
-          }
-
-          // do the pretty printing
-          var newContent = prettyPrintOne(content);
-
-          // push the prettified html back into the tag.
-          if (!isRawContent) {
-            // just replace the old html with the new
-            cs.innerHTML = newContent;
-          } else {
-            // we need to change the tag to a <pre> since <xmp>s do not allow
-            // embedded tags such as the span tags used to attach styles to
-            // sections of source code.
-            var pre = document.createElement('PRE');
-            for (var i = 0; i < cs.attributes.length; ++i) {
-              var a = cs.attributes[i];
-              if (a.specified) {
-                pre.setAttribute(a.name, a.value);
-              }
-            }
-            pre.innerHTML = newContent;
-            // remove the old
-            cs.parentNode.replaceChild(pre, cs);
-          }
-        }
-      }
-    }
-    if (k < elements.length) {
-      // finish up in a continuation
-      setTimeout(doWork, 250);
-    }
-  }
-
-  doWork();
-}
diff --git a/doc/samplereport/css/maven-base.css b/doc/samplereport/css/maven-base.css
deleted file mode 100644
index 313328b..0000000
--- a/doc/samplereport/css/maven-base.css
+++ /dev/null
@@ -1,147 +0,0 @@
-body {
-  margin: 0px;
-  padding: 0px;
-}
-img {
-  border:none;
-}
-table {
-  padding:0px;
-  width: 100%;
-  margin-left: -2px;
-  margin-right: -2px;
-}
-acronym {
-  cursor: help;
-  border-bottom: 1px dotted #feb;
-}
-table.bodyTable th, table.bodyTable td {
-  padding: 2px 4px 2px 4px;
-  vertical-align: top;
-}
-div.clear{
-  clear:both;
-  visibility: hidden;
-}
-div.clear hr{
-  display: none;
-}
-#bannerLeft, #bannerRight {
-  font-size: xx-large; 
-  font-weight: bold;
-}
-#bannerLeft img, #bannerRight img {
-  margin: 0px;
-}
-.xleft, #bannerLeft img {
-  float:left;
-  text-shadow: #7CFC00;
-}
-.xright, #bannerRight img {
-  float:right;
-  text-shadow: #7CFC00;
-}
-#banner {
-  padding: 0px;
-}
-#banner img {
-  border: none;
-}
-#breadcrumbs {
-  padding: 3px 10px 3px 10px;
-}
-#leftColumn {
- width: 150px;
- float:left;
-}
-#bodyColumn {
-  margin-right: 1.5em;
-  margin-left: 177px;
-}
-#legend {
-  padding: 8px 0 8px 0;
-}
-#navcolumn {
-  padding: 8px 4px 0 8px;
-}
-#navcolumn h5 {
-  margin: 0;
-  padding: 0;
-  font-size: small;
-}
-#navcolumn ul {
-  margin: 0;
-  padding: 0;
-  font-size: small;
-}
-#navcolumn li {
-  list-style-type: none;
-  background-image: none;
-  background-repeat: no-repeat;
-  background-position: 0 0.4em;
-  padding-left: 16px;
-  list-style-position: ouside;
-  line-height: 1.2em;
-  font-size: smaller;
-}
-#navcolumn li.expanded {
-  background-image: url(../images/expanded.gif);
-}
-#navcolumn li.collapsed {
-  background-image: url(../images/collapsed.gif);
-}
-#poweredBy {
-  text-align: center;
-}
-#navcolumn img {
-  margin-top: 10px;
-  margin-bottom: 3px;
-}
-#poweredBy img {
-  display:block;
-  margin: 20px 0 20px 17px;
-  border: 1px solid black;
-  width: 90px;
-  height: 30px;
-}
-#search img {
-    margin: 0px;
-    display: block;
-}
-#search #q, #search #btnG {
-    border: 1px solid #999;
-    margin-bottom:10px;
-}
-#search form {
-    margin: 0px;
-}
-#lastPublished {
-  font-size: x-small;
-}
-.navSection {
-  margin-bottom: 2px;
-  padding: 8px;
-}
-.navSectionHead {
-  font-weight: bold;
-  font-size: x-small;
-}
-.section {
-  padding: 4px;
-}
-#footer {
-  padding: 3px 10px 3px 10px;
-  font-size: x-small;
-}
-#breadcrumbs {
-  font-size: x-small;
-  margin: 0pt;
-}
-.source {
-  padding: 12px;
-  margin: 1em 7px 1em 7px;
-}
-.source pre {
-  margin: 0px;
-  padding: 0px;
-}
diff --git a/doc/samplereport/css/maven-classic.css b/doc/samplereport/css/maven-classic.css
deleted file mode 100644
index 40539df..0000000
--- a/doc/samplereport/css/maven-classic.css
+++ /dev/null
@@ -1,881 +0,0 @@
-body {
- background: #fff;
- color: #000;
-  padding: 0px 0px 10px 0px;
- }
-
-.contentBox h2 {
- color: #fff;
- background-color: #036;
- }
-
-.contentBox h3 {
- color: #fff;
- background-color: #888;
- }
-
-.a td { 
- background: #ddd;
- color: #000;
- }
-
-.b td { 
- background: #efefef;
- color: #000;
- }
-
-.contentBox th {
- background-color: #bbb;
- color: #fff;
- }
-
-div#banner {
- border-top: 1px solid #369;
- border-bottom: 1px solid #003;
- }
-
-#banner, #banner td { 
- background: #036;
- color: #fff;
- }
-#banner {
-  border-bottom: 1px solid #fff;
-}
-
-#leftColumn {
- background: #eee;
- color: #000;
- border-right: 1px solid #aaa;
- border-bottom: 1px solid #aaa;
- border-top: 1px solid #fff;
-}
-
-#navcolumn {
-/* bad for IE
- background: #eee;
-*/
- color: #000;
- border-right: none;
- border-bottom: none;
- border-top: none;
- }
-
-#breadcrumbs {
- background-color: #ddd;
- color: #000;
- border-top: 1px solid #fff;
- border-bottom: 1px solid #aaa;
- }
-
-.source {
- background-color: #fff;
- color: #000;
- border-right: 1px solid #888; 
- border-left: 1px solid #888; 
- border-top: 1px solid #888; 
- border-bottom: 1px solid #888; 
- margin-right: 7px;
- margin-left: 7px;
- margin-top: 1em;
- }
-
-.source pre {
- margin-right: 7px;
- margin-left: 7px;
- }
-
-a[name]:hover, #leftColumn a[name]:hover {
- color: inherit !important;
- }
-
-a:link, #breadcrumbs a:visited, #navcolumn a:visited, .contentBox a:visited, .tasknav a:visited {
- color: blue;
- }
-
-a:active, a:hover, #leftColumn a:active, #leftColumn a:hover {
- color: #f30 !important;
- }
-
-a:link.selfref, a:visited.selfref {
- color: #555 !important;
- }
-
-#legend li.externalLink {
-  background: url(../images/external-classic.png) left top no-repeat;
-  padding-left: 18px;
-}
-a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover {
-  background: url(../images/external-classic.png) right center no-repeat;
-  padding-right: 18px;
-}
-
-#legend li.newWindow {
-  background: url(../images/newwindow-classic.png) left top no-repeat;
-  padding-left: 18px;
-}
-a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover {
-  background: url(../images/newwindow-classic.png) right center no-repeat;
-  padding-right: 18px;
-}
-
-h2, h3 {
- margin-top: 1em;
- margin-bottom: 0;
- }
-
-img.handle {
- border: 0;
- padding-right: 2px;
-}
-
-#navcolumn div div  {
- background-image: none;
- background-repeat: no-repeat;
-}
-
-#navcolumn div div {
-  padding-left: 10px;
-}
-/* $Id$
-  
-  This file defines basic default formatting for HTML conforming to Tigris application style. To extend or override these rules for your instance, edit inst.css instead of this file. */
-
-/* colors, backgrounds, borders, link indication */
-.contentBox h2, .contentBox h3, .tabs td, .tabs th, .functnbar {
-  background-image: url(../images/nw_maj_rond.gif);
-  background-repeat: no-repeat;
-}
-
-.functnbar, .functnbar2 {
-  background-color: #aaa;
-}
-
-.functnbar2, .functnbar3 {
-  background-color: #aaa;
-  background-image: url(../images/sw_maj_rond.gif);
-  background-repeat: no-repeat;
-  background-position: bottom left;
-}
-
-.functnbar3 {
-  background-color: #ddd;
-  background-image: url(../images/sw_med_rond.gif);
-}
-
-.functnbar, .functnbar2, .functnbar3 {
-  color: #000;
-}
-
-.functnbar a, .functnbar2 a, .functnbar3 a {
-  color: #000;
-  text-decoration: underline;
-}
-
-#navcolumn .body div, body.docs #toc li li {
-  background-image: url(../images/strich.gif);
-  background-repeat: no-repeat;
-  background-position: .5em .5em;
-}
-
-#searchbox .body div, #navcolumn .body .heading {
-  background-image: none;
-}
-
-a:link.selfref, a:visited.selfref {
-  text-decoration: none;
-}
-
-#leftColumn a, #breadcrumbs a {
-  text-decoration: none;
-}
-
-/* Unsure of this. TODO */
-.contentBox h2 a:link, .contentBox h2 a:visited, .contentBox h3 a:link, .contentBox h3 a:visited {
-  color: #fff !important;
-  text-decoration: underline;
-}
-
-table, th, td {
-  border: none;
-}
-
-div.colbar {
-  background: #eee;
-  border-color: #999 #EEE #EEE #999;
-  border-width: 1px;
-  border-style: solid;
-}
-
-.toolgroup {
-  background: #efefef;
-}
-
-.toolgroup .label {
-  border-bottom: 1px solid #666;
-  border-right: 1px solid #666;
-  background: #ddd;
-  color: #555;
-}
-
-.toolgroup .body {
-  border-right: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-}
-
-#main {
-  border-top: 1px solid #999;
-}
-
-#rightcol div.www, #rightcol div.help {
-  border: 1px solid #ddd;
-}
-
-body.docs div.docs {
-  background-color: #fff;
-  border-left: 1px solid #ddd;
-  border-top: 1px solid #ddd;
-}
-
-#helptext .label {
-  background-image: url(../images/icon_help_sml.gif);
-  background-repeat: no-repeat;
-  background-position: 97%;
-}
-
-body.docs {
-  background: #eee url(../images/help_logo.gif) top right no-repeat !important;
-}
-
-.docs h2, .docs h3 {
-  border-top: solid 1px #000;
-}
-
-#apphead h2 em {
-  color: #777;
-}
-
-.tabs th {
-  border-right: 1px solid #333;
-  background-color: #ddd;
-  color: #fff;
-  border-left: 1px solid #fff;
-}
-
-.tabs td {
-  background-color: #999;
-  border-bottom: 1px solid #fff;
-  border-right: 1px solid #fff;
-  border-left: 1px solid #fff;
-}
-
-.tabs {
-  border-bottom: 6px #ddd solid;
-}
-
-.tabs th, .tabs th a:link, .tabs th a:visited {
-  color: #555;
-}
-
-.tabs td, .tabs td a:link, .tabs td a:visited {
-  color: #fff;
-}
-
-.tabs a {
-  text-decoration: none;
-}
-
-.axial th {
-  background-color: #ddd;
-  color: black;
-}
-
-.alert {
-  background-color: #ff9;
-}
-
-.expandedwaste {
-  background: url(../images/icon_arrowwaste2_sml.gif) no-repeat;
-}
-
-.collapsedwaste {
-  background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
-}
-
-.filebrowse .expanded, .filebrowse-alt .expanded {
-  background-image: url(../images/icon_arrowfolderopen2_sml.gif);
-  background-repeat: no-repeat;
-}
-
-.filebrowse .collapsed, .filebrowse-alt .collapsed {
-  background-image: url(../images/icon_arrowfolderclosed1_sml.gif);
-  background-repeat: no-repeat;
-}
-
-.filebrowse .leafnode, .filebrowse-alt .leafnode {
-  background-image: url(../images/icon_folder_sml.gif);
-  background-repeat: no-repeat;
-}
-
-.filebrowse .leaf, .filebrowse-alt .leaf {
-  background-image: url(../images/icon_doc_sml.gif);
-  background-repeat: no-repeat;
-}
-
-.sortup {
-  background: url(../images/icon_sortup.gif) no-repeat;
-}
-
-.sortdown {
-  background: url(../images/icon_sortdown.gif) no-repeat;
-}
-
-.collapsedwaste {
-  background: url(../images/icon_arrowwaste1_sml.gif) no-repeat;
-}
-
-body .grid td {
-  border-top: 1px solid #ccc;
-  border-left: 1px solid #ccc;
-  background-color: transparent;
-}
-
-.confirm {
-  color: #090;
-}
-
-.info {
-  color: #069;
-}
-
-.errormessage, .warningmessage, .donemessage, .infomessage {
-  border-top: 5px solid #900;
-  border-left: 1px solid #900;
-  background-image: url(../images/icon_error_lrg.gif);
-  background-repeat: no-repeat;
-  background-position: 5px 1.33em;
-}
-
-.warningmessage {
-  background-image: url(../images/icon_warning_lrg.gif);
-  border-color: #c60;
-}
-
-.donemessage {
-  background-image: url(../images/icon_success_lrg.gif);
-  border-color: #090;
-}
-
-.infomessage {
-  background-image: url(../images/icon_info_lrg.gif);
-  border-color: #069;
-}
-
-.docinfo {
-  background: url(../images/icon_doc_lrg.gif) no-repeat;
-}
-
-.dirinfo {
-  background: url(../images/icon_folder_lrg.gif) no-repeat;
-}
-
-.memberinfo {
-  background: url(../images/icon_members_lrg.gif) no-repeat;
-}
-
-.usergroupinfo {
-  background: url(../images/icon_usergroups_lrg.gif) no-repeat;
-}
-
-.errormark, .warningmark, .donemark, .infomark {
-  background: url(../images/icon_error_sml.gif) no-repeat;
-}
-
-.warningmark {
-  background-image: url(../images/icon_warning_sml.gif);
-}
-
-.donemark {
-  background-image: url(../images/icon_success_sml.gif);
-}
-
-.infomark {
-  background-image: url(../images/icon_info_sml.gif);
-}
-
-.cvsdiff, .cvsblame {
-  background-color: #ccc;
-}
-
-.cvsdiffadd {
-  background-color: #afa;
-}
-
-.cvsdiffremove {
-  background-color: #faa;
-}
-
-.cvsdiffchanges1 {
-  background-color: #ff7;
-}
-
-.cvsdiffchanges2 {
-  background-color: #ff7;
-}
-
-li.selection ul a {
-  background: #fff;
-}
-
-.band1 {
-  color: #fff;
-  background-color: #663;
-}
-
-.band2 {
-  color: #fff;
-  background-color: #66C;
-}
-
-.band3 {
-  background-color: #C99;
-}
-
-.band4 {
-  background-color: #CFF;
-}
-
-.band5 {
-  color: #fff;
-  background-color: #336;
-}
-
-.band6 {
-  color: #fff;
-  background-color: #966;
-}
-
-.band7 {
-  background-color: #9CC;
-}
-
-.band8 {
-  background-color: #FFC;
-}
-
-.band9 {
-  color: #fff;
-  background-color: #633;
-}
-
-.band10 {
-  color: #fff;
-  background-color: #699;
-}
-
-.band11 {
-  background-color: #CC9;
-}
-
-.band12 {
-  background-color: #CCF;
-}
-
-.band13 {
-  color: #fff;
-  background-color: #366;
-}
-
-.band14 {
-  color: #fff;
-  background-color: #996;
-}
-
-.band15 {
-  background-color: #99C;
-}
-
-.band16 {
-  background-color: #FCC;
-}
-
-.contentBox .helplink, #helptext .helplink {
-  cursor: help;
-}
-
-.legend th, .bars th {
-  background-color: #fff;
-}
-
-/* font and text properties, exclusive of link indication, alignment, text-indent */
-body, th, td, input, select {
-  font-family: Verdana, Helvetica, Arial, sans-serif;
-}
-
-code, pre {
-  font-family: 'Andale Mono', Courier, monospace;
-}
-
-body, .contentBox h2, .contentBox h3, #rightcol h2, pre, code, #apphead h2 small, h3, th, td {
-  font-size: x-small;
-  voice-family: "\"}\"";
-  voice-family: inherit;
-  font-size: small;
-}
-
-small, div#footer, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftColumn, .legend, .bars {
-  font-size: xx-small;
-  voice-family: "\"}\"";
-  voice-family: inherit;
-  font-size: x-small;
-}
-
-.tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
-  font-weight: bold;
-}
-
-li.selection ul {
-  font-weight: normal;
-}
-
-#apphead h2 em {
-  font-style: normal;
-}
-
-#banner h1 {
-  font-size: 1.25em;
-}
-
-/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
-#bodyColumn h2 {
-  margin-top: .3em;
-  margin-bottom: .5em;
-}
-
-p, ul, ol, dl, .bars table {
-  margin-top: .67em;
-  margin-bottom: .67em;
-}
-
-form {
-  margin: 0;
-}
-
-#bodyColumn {
-  padding-left: 12px;
-  padding-right: 12px;
-  width: 100%;
-  voice-family: "\"}\"";
-  voice-family: inherit;
-  width: auto;
-}
-
-html>body #bodyColumn {
-  width: auto;
-}
-
-.docs {
-  line-height: 1.4;
-}
-
-ol ol {
-  list-style-type: lower-alpha;
-}
-
-ol ol ol {
-  list-style-type: lower-roman;
-}
-
-.contentBox h2, .contentBox h3 {
-  padding: 5px;
-  margin-right: 2px;
-}
-
-.contentBox td, .contentBox th {
-  padding: 2px 3px;
-}
-
-.h2 p, .h3 p, .h2 dt, .h3 dt {
-  margin-right: 7px;
-  margin-left: 7px;
-}
-
-.tasknav {
-  margin-bottom: 1.33em;
-}
-
-div.colbar {
-  padding: 3px;
-  margin: 2px 2px 0;
-}
-
-.tabs {
-  margin-top: .67em;
-  margin-right: 2px;
-  margin-left: 2px;
-  padding-left: 8px;
-}
-
-.tabs td, .tabs th {
-  padding: 3px 9px;
-}
-
-#rightcol div.www, #rightcol div.help {
-  padding: 0 .5em;
-}
-
-body.docs #toc {
-  position: absolute;
-  top: 15px;
-  left: 0px;
-  width: 120px;
-  padding: 0 20px 0 0;
-}
-
-body.docs #toc ul, #toc ol {
-  margin-left: 0;
-  padding-left: 0;
-}
-
-body.docs #toc li {
-  margin-top: 7px;
-  padding-left: 10px;
-  list-style-type: none;
-}
-
-body.docs div.docs {
-  margin: 61px 0 0 150px;
-  padding: 1em 2em 1em 1em !important;
-}
-
-.docs p+p {
-  text-indent: 5%;
-  margin-top: -.67em;
-}
-
-.docs h2, .docs h3 {
-  margin-bottom: .1em;
-  padding-top: .3em;
-}
-
-.functnbar, .functnbar2, .functnbar3 {
-  padding: 5px;
-  margin: .67em 2px;
-}
-
-.functnbar3 {
-  margin-top: 0;
-}
-
-body {
-  padding: 1em;
-}
-
-body.composite, body.docs {
-  margin: 0;
-  padding: 0;
-}
-
-th, td {
-  text-align: left;
-  vertical-align: top;
-}
-
-.right {
-  text-align: right !important;
-}
-
-.center {
-  text-align: center !important;
-}
-
-.axial th, .axial th .strut {
-  text-align: right;
-}
-
-.contentBox .axial td th {
-  text-align: left;
-}
-
-body .stb {
-  margin-top: 1em;
-  text-indent: 0;
-}
-
-body .mtb {
-  margin-top: 2em;
-  text-indent: 0;
-}
-
-.courtesylinks {
-  margin-top: 1em;
-  padding-top: 1em;
-}
-
-dd {
-  margin-bottom: .67em;
-}
-
-.toolgroup {
-  margin-bottom: 6px;
-}
-
-.toolgroup .body {
-  padding: 4px 4px 4px 0;
-}
-
-.toolgroup .label {
-  padding: 4px;
-}
-
-.toolgroup .body div {
-  padding-bottom: .3em;
-  padding-left: 1em;
-}
-
-.toolgroup .body div div {
-  margin-top: .3em;
-  padding-bottom: 0;
-}
-
-.tier1 {
-  margin-left: 0;
-}
-
-.tier2 {
-  margin-left: 1.5em;
-}
-
-.tier3 {
-  margin-left: 3em;
-}
-
-.tier4 {
-  margin-left: 4.5em;
-}
-
-.tier5 {
-  margin-left: 6em;
-}
-
-.tier6 {
-  margin-left: 7.5em;
-}
-
-.tier7 {
-  margin-left: 9em;
-}
-
-.tier8 {
-  margin-left: 10.5em;
-}
-
-.tier9 {
-  margin-left: 12em;
-}
-
-.tier10 {
-  margin-left: 13.5em;
-}
-
-.filebrowse .expanded, .filebrowse .collapsed {
-  padding-left: 34px;
-}
-
-.filebrowse .leafnode, .filebrowse .leaf {
-  padding-left: 20px;
-}
-
-.messagechild {
-  padding-left: 34px;
-}
-
-.filebrowse-alt .expanded, .filebrowse-alt .collapsed, .filebrowse-alt .leaf, .filebrowse-alt .leafnode, .expandedwaste, .collapsedwaste, .sortup, .sortdown {
-  /* hide from macie5\*/
-  float: left;
-  /* resume */
-  display: inline-block;
-  height: 15px;
-  width: 34px;
-  padding-left: 0 !important;
-}
-
-.filebrowse-alt .leaf, .filebrowse-alt .leafnode, .sortup, .sortdown {
-  width: 20px;
-}
-
-.filebrowse ul, .filebrowse-alt ul {
-  list-style-type: none;
-  padding-left: 0;
-  margin-left: 0;
-}
-
-.filebrowse ul ul, .filebrowse-alt ul ul {
-  margin-left: 1.5em;
-  margin-top: 0;
-  padding-top: .67em;
-}
-
-.filebrowse li, .filebrowse-alt li {
-  margin-bottom: .67em;
-}
-
-td.filebrowse h2 {
-  margin-top: 0;
-}
-
-.errormessage, .warningmessage, .donemessage, .infomessage, .docinfo, .dirinfo, .memberinfo, .usergroupinfo {
-  margin: .67em 0;
-  padding: .33em 0 .67em 42px;
-  min-height: 32px;
-}
-
-.errormark, .warningmark, .donemark, .infomark {
-  padding-left: 20px;
-  min-height: 15px;
-}
-
-.alt {
-  display: none;
-}
-
-#banner h1 {
-  margin: 0;
-}
-
-.axial th, .axial th .strut, #leftColumn .strut {
-  width: 12em;
-}
-
-#breadcrumbs {
-  padding: 2px 8px;
-}
-
-/* Bad for IE
-.contentBox h2, .contentBox h3, .bars {
-  clear: both;
-}
-*/
-
-.legend {
-  float: right;
-}
-
-.legend th, .bars th {
-  text-align: right;
-  padding-left: 1em;
-}
-
-.bars table {
-  table-layout: fixed;
-}
-
-.bars th {
-  width: 12em;
-}
-
-#projectdocumentlist td.filebrowse-alt {
-  padding-right: .75em;
-}
-#organizationLogo img, #projectLogo img, #projectLogo span{
-  margin: 8px;
-}
diff --git a/doc/samplereport/css/maven-theme.css b/doc/samplereport/css/maven-theme.css
deleted file mode 100644
index ea20b09..0000000
--- a/doc/samplereport/css/maven-theme.css
+++ /dev/null
@@ -1,125 +0,0 @@
-body {
-  padding: 0px 0px 10px 0px;
-}
-body, td, select, input, li{
-  font-family: Verdana, Helvetica, Arial, sans-serif;
-  font-size: 13px;
-}
-code{
-  font-family: Courier, monospace;
-  font-size: 13px;
-}
-a {
-  text-decoration: none;
-}
-a:link {
-  color:#36a;
-}
-a:visited  {
-  color:#47a;
-}
-a:active, a:hover {
-  color:#69c;
-}
-#legend li.externalLink {
-  background: url(../images/external.png) left top no-repeat;
-  padding-left: 18px;
-}
-a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover {
-  background: url(../images/external.png) right center no-repeat;
-  padding-right: 18px;
-}
-#legend li.newWindow {
-  background: url(../images/newwindow.png) left top no-repeat;
-  padding-left: 18px;
-}
-a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover {
-  background: url(../images/newwindow.png) right center no-repeat;
-  padding-right: 18px;
-}
-h2 {
-  padding: 4px 4px 4px 6px;
-  border: 1px solid #999;
-  color: #900;
-  background-color: #ddd;
-  font-weight:900;
-  font-size: x-large;
-}
-h3 {
-  padding: 4px 4px 4px 6px;
-  border: 1px solid #aaa;
-  color: #900;
-  background-color: #eee;
-  font-weight: normal;
-  font-size: large;
-}
-h4 {
-  padding: 4px 4px 4px 6px;
-  border: 1px solid #bbb;
-  color: #900;
-  background-color: #fff;
-  font-weight: normal;
-  font-size: large;
-}
-h5 {
-  padding: 4px 4px 4px 6px;
-  color: #900;
-  font-size: normal;
-}
-p {
-  line-height: 1.3em;
-  font-size: small;
-}
-#breadcrumbs {
-  border-top: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-  background-color: #ccc;
-}
-#leftColumn {
-  margin: 10px 0 0 5px;
-  border: 1px solid #999;
-  background-color: #eee;
-}
-#navcolumn h5 {
-  font-size: smaller;
-  border-bottom: 1px solid #aaaaaa;
-  padding-top: 2px;
-  color: #000;
-}
-
-table.bodyTable th {
-  color: white;
-  background-color: #bbb;
-  text-align: left;
-  font-weight: bold;
-}
-
-table.bodyTable th, table.bodyTable td {
-  font-size: 1em;
-}
-
-table.bodyTable tr.a {
-  background-color: #ddd;
-}
-
-table.bodyTable tr.b {
-  background-color: #eee;
-}
-
-.source {
-  border: 1px solid #999;
-}
-dl {
-  padding: 4px 4px 4px 6px;
-  border: 1px solid #aaa;
-  background-color: #ffc;
-}
-dt {
-  color: #900;
-}
-#organizationLogo img, #projectLogo img, #projectLogo span{
-  margin: 8px;
-}
-#banner {
-  border-bottom: 1px solid #fff;
-}
diff --git a/doc/samplereport/css/print.css b/doc/samplereport/css/print.css
deleted file mode 100644
index 26ad7f0..0000000
--- a/doc/samplereport/css/print.css
+++ /dev/null
@@ -1,7 +0,0 @@
-#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {
-	display: none !important;
-}
-#bodyColumn, body.docs div.docs {
-	margin: 0 !important;
-	border: none !important
-}
diff --git a/doc/samplereport/images/add.gif b/doc/samplereport/images/add.gif
deleted file mode 100644
index ac0bdcc..0000000
Binary files a/doc/samplereport/images/add.gif and /dev/null differ
diff --git a/doc/samplereport/images/collapsed.gif b/doc/samplereport/images/collapsed.gif
deleted file mode 100644
index 6e71084..0000000
Binary files a/doc/samplereport/images/collapsed.gif and /dev/null differ
diff --git a/doc/samplereport/images/expanded.gif b/doc/samplereport/images/expanded.gif
deleted file mode 100644
index 0fef3d8..0000000
Binary files a/doc/samplereport/images/expanded.gif and /dev/null differ
diff --git a/doc/samplereport/images/external-classic.png b/doc/samplereport/images/external-classic.png
deleted file mode 100644
index 09a5425..0000000
Binary files a/doc/samplereport/images/external-classic.png and /dev/null differ
diff --git a/doc/samplereport/images/external.png b/doc/samplereport/images/external.png
deleted file mode 100644
index 3f999fc..0000000
Binary files a/doc/samplereport/images/external.png and /dev/null differ
diff --git a/doc/samplereport/images/file.gif b/doc/samplereport/images/file.gif
deleted file mode 100644
index 72c13cc..0000000
Binary files a/doc/samplereport/images/file.gif and /dev/null differ
diff --git a/doc/samplereport/images/fix.gif b/doc/samplereport/images/fix.gif
deleted file mode 100644
index 2585f13..0000000
Binary files a/doc/samplereport/images/fix.gif and /dev/null differ
diff --git a/doc/samplereport/images/folder-closed.gif b/doc/samplereport/images/folder-closed.gif
deleted file mode 100644
index 2baed62..0000000
Binary files a/doc/samplereport/images/folder-closed.gif and /dev/null differ
diff --git a/doc/samplereport/images/folder-open.gif b/doc/samplereport/images/folder-open.gif
deleted file mode 100644
index 3955d19..0000000
Binary files a/doc/samplereport/images/folder-open.gif and /dev/null differ
diff --git a/doc/samplereport/images/help_logo.gif b/doc/samplereport/images/help_logo.gif
deleted file mode 100644
index cc25c03..0000000
Binary files a/doc/samplereport/images/help_logo.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_alert.gif b/doc/samplereport/images/icon_alert.gif
deleted file mode 100644
index 4968bca..0000000
Binary files a/doc/samplereport/images/icon_alert.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_alertsml.gif b/doc/samplereport/images/icon_alertsml.gif
deleted file mode 100644
index 641308d..0000000
Binary files a/doc/samplereport/images/icon_alertsml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowfolder1_sml.gif b/doc/samplereport/images/icon_arrowfolder1_sml.gif
deleted file mode 100644
index 89408af..0000000
Binary files a/doc/samplereport/images/icon_arrowfolder1_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowfolder2_sml.gif b/doc/samplereport/images/icon_arrowfolder2_sml.gif
deleted file mode 100644
index d9e7e1c..0000000
Binary files a/doc/samplereport/images/icon_arrowfolder2_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowfolderclosed1_sml.gif b/doc/samplereport/images/icon_arrowfolderclosed1_sml.gif
deleted file mode 100644
index c48e8b6..0000000
Binary files a/doc/samplereport/images/icon_arrowfolderclosed1_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowfolderopen2_sml.gif b/doc/samplereport/images/icon_arrowfolderopen2_sml.gif
deleted file mode 100644
index 477e327..0000000
Binary files a/doc/samplereport/images/icon_arrowfolderopen2_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowmembers1_sml.gif b/doc/samplereport/images/icon_arrowmembers1_sml.gif
deleted file mode 100644
index b4dea83..0000000
Binary files a/doc/samplereport/images/icon_arrowmembers1_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowmembers2_sml.gif b/doc/samplereport/images/icon_arrowmembers2_sml.gif
deleted file mode 100644
index 0e74357..0000000
Binary files a/doc/samplereport/images/icon_arrowmembers2_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowusergroups1_sml.gif b/doc/samplereport/images/icon_arrowusergroups1_sml.gif
deleted file mode 100644
index 5177959..0000000
Binary files a/doc/samplereport/images/icon_arrowusergroups1_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowusergroups2_sml.gif b/doc/samplereport/images/icon_arrowusergroups2_sml.gif
deleted file mode 100644
index 574bb45..0000000
Binary files a/doc/samplereport/images/icon_arrowusergroups2_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowwaste1_sml.gif b/doc/samplereport/images/icon_arrowwaste1_sml.gif
deleted file mode 100644
index 25d75f7..0000000
Binary files a/doc/samplereport/images/icon_arrowwaste1_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_arrowwaste2_sml.gif b/doc/samplereport/images/icon_arrowwaste2_sml.gif
deleted file mode 100644
index 54dbf42..0000000
Binary files a/doc/samplereport/images/icon_arrowwaste2_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_confirmsml.gif b/doc/samplereport/images/icon_confirmsml.gif
deleted file mode 100644
index ca3c810..0000000
Binary files a/doc/samplereport/images/icon_confirmsml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_doc_lrg.gif b/doc/samplereport/images/icon_doc_lrg.gif
deleted file mode 100644
index b458267..0000000
Binary files a/doc/samplereport/images/icon_doc_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_doc_sml.gif b/doc/samplereport/images/icon_doc_sml.gif
deleted file mode 100644
index 239bfaa..0000000
Binary files a/doc/samplereport/images/icon_doc_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_error_lrg.gif b/doc/samplereport/images/icon_error_lrg.gif
deleted file mode 100644
index fccffd1..0000000
Binary files a/doc/samplereport/images/icon_error_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_error_sml.gif b/doc/samplereport/images/icon_error_sml.gif
deleted file mode 100644
index 61132ef..0000000
Binary files a/doc/samplereport/images/icon_error_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_folder_lrg.gif b/doc/samplereport/images/icon_folder_lrg.gif
deleted file mode 100644
index 3683e75..0000000
Binary files a/doc/samplereport/images/icon_folder_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_folder_sml.gif b/doc/samplereport/images/icon_folder_sml.gif
deleted file mode 100644
index 8e26f89..0000000
Binary files a/doc/samplereport/images/icon_folder_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_help_lrg.gif b/doc/samplereport/images/icon_help_lrg.gif
deleted file mode 100644
index c216295..0000000
Binary files a/doc/samplereport/images/icon_help_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_help_sml.gif b/doc/samplereport/images/icon_help_sml.gif
deleted file mode 100644
index 43bfd56..0000000
Binary files a/doc/samplereport/images/icon_help_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_info_lrg.gif b/doc/samplereport/images/icon_info_lrg.gif
deleted file mode 100644
index b390fd4..0000000
Binary files a/doc/samplereport/images/icon_info_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_info_sml.gif b/doc/samplereport/images/icon_info_sml.gif
deleted file mode 100644
index c6cb9ad..0000000
Binary files a/doc/samplereport/images/icon_info_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_infosml.gif b/doc/samplereport/images/icon_infosml.gif
deleted file mode 100644
index 1aa2d30..0000000
Binary files a/doc/samplereport/images/icon_infosml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_members_lrg.gif b/doc/samplereport/images/icon_members_lrg.gif
deleted file mode 100644
index 7ba2df6..0000000
Binary files a/doc/samplereport/images/icon_members_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_members_sml.gif b/doc/samplereport/images/icon_members_sml.gif
deleted file mode 100644
index 997e699..0000000
Binary files a/doc/samplereport/images/icon_members_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_sortdown.gif b/doc/samplereport/images/icon_sortdown.gif
deleted file mode 100644
index 9561bbe..0000000
Binary files a/doc/samplereport/images/icon_sortdown.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_sortleft.gif b/doc/samplereport/images/icon_sortleft.gif
deleted file mode 100644
index 4fd21e8..0000000
Binary files a/doc/samplereport/images/icon_sortleft.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_sortright.gif b/doc/samplereport/images/icon_sortright.gif
deleted file mode 100644
index ea8076e..0000000
Binary files a/doc/samplereport/images/icon_sortright.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_sortup.gif b/doc/samplereport/images/icon_sortup.gif
deleted file mode 100644
index 61942d6..0000000
Binary files a/doc/samplereport/images/icon_sortup.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_success_lrg.gif b/doc/samplereport/images/icon_success_lrg.gif
deleted file mode 100644
index 9af317d..0000000
Binary files a/doc/samplereport/images/icon_success_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_success_sml.gif b/doc/samplereport/images/icon_success_sml.gif
deleted file mode 100644
index 52e85a4..0000000
Binary files a/doc/samplereport/images/icon_success_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_usergroups_lrg.gif b/doc/samplereport/images/icon_usergroups_lrg.gif
deleted file mode 100644
index 3a4e356..0000000
Binary files a/doc/samplereport/images/icon_usergroups_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_usergroups_sml.gif b/doc/samplereport/images/icon_usergroups_sml.gif
deleted file mode 100644
index 9236101..0000000
Binary files a/doc/samplereport/images/icon_usergroups_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_warning_lrg.gif b/doc/samplereport/images/icon_warning_lrg.gif
deleted file mode 100644
index 83359d8..0000000
Binary files a/doc/samplereport/images/icon_warning_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_warning_sml.gif b/doc/samplereport/images/icon_warning_sml.gif
deleted file mode 100644
index 873bbb5..0000000
Binary files a/doc/samplereport/images/icon_warning_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_waste_lrg.gif b/doc/samplereport/images/icon_waste_lrg.gif
deleted file mode 100644
index e5434aa..0000000
Binary files a/doc/samplereport/images/icon_waste_lrg.gif and /dev/null differ
diff --git a/doc/samplereport/images/icon_waste_sml.gif b/doc/samplereport/images/icon_waste_sml.gif
deleted file mode 100644
index 6dd046d..0000000
Binary files a/doc/samplereport/images/icon_waste_sml.gif and /dev/null differ
diff --git a/doc/samplereport/images/logos/maven-feather.png b/doc/samplereport/images/logos/maven-feather.png
deleted file mode 100644
index 5beac16..0000000
Binary files a/doc/samplereport/images/logos/maven-feather.png and /dev/null differ
diff --git a/doc/samplereport/images/newwindow-classic.png b/doc/samplereport/images/newwindow-classic.png
deleted file mode 100644
index 5987117..0000000
Binary files a/doc/samplereport/images/newwindow-classic.png and /dev/null differ
diff --git a/doc/samplereport/images/newwindow.png b/doc/samplereport/images/newwindow.png
deleted file mode 100644
index 6287f72..0000000
Binary files a/doc/samplereport/images/newwindow.png and /dev/null differ
diff --git a/doc/samplereport/images/none.png b/doc/samplereport/images/none.png
deleted file mode 100644
index fef6d18..0000000
Binary files a/doc/samplereport/images/none.png and /dev/null differ
diff --git a/doc/samplereport/images/nw_maj.gif b/doc/samplereport/images/nw_maj.gif
deleted file mode 100644
index 452296b..0000000
Binary files a/doc/samplereport/images/nw_maj.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_maj_hi.gif b/doc/samplereport/images/nw_maj_hi.gif
deleted file mode 100644
index 54c3933..0000000
Binary files a/doc/samplereport/images/nw_maj_hi.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_maj_rond.gif b/doc/samplereport/images/nw_maj_rond.gif
deleted file mode 100644
index add42a4..0000000
Binary files a/doc/samplereport/images/nw_maj_rond.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_med.gif b/doc/samplereport/images/nw_med.gif
deleted file mode 100644
index d2b6d91..0000000
Binary files a/doc/samplereport/images/nw_med.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_med_hi.gif b/doc/samplereport/images/nw_med_hi.gif
deleted file mode 100644
index 0c2db4c..0000000
Binary files a/doc/samplereport/images/nw_med_hi.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_med_rond.gif b/doc/samplereport/images/nw_med_rond.gif
deleted file mode 100644
index 8aaa564..0000000
Binary files a/doc/samplereport/images/nw_med_rond.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_min.gif b/doc/samplereport/images/nw_min.gif
deleted file mode 100644
index bf4bc75..0000000
Binary files a/doc/samplereport/images/nw_min.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_min_036.gif b/doc/samplereport/images/nw_min_036.gif
deleted file mode 100644
index eb344a8..0000000
Binary files a/doc/samplereport/images/nw_min_036.gif and /dev/null differ
diff --git a/doc/samplereport/images/nw_min_hi.gif b/doc/samplereport/images/nw_min_hi.gif
deleted file mode 100644
index a8a30ab..0000000
Binary files a/doc/samplereport/images/nw_min_hi.gif and /dev/null differ
diff --git a/doc/samplereport/images/pdf.gif b/doc/samplereport/images/pdf.gif
deleted file mode 100644
index 7bce338..0000000
Binary files a/doc/samplereport/images/pdf.gif and /dev/null differ
diff --git a/doc/samplereport/images/poweredby_036.gif b/doc/samplereport/images/poweredby_036.gif
deleted file mode 100644
index 49d0345..0000000
Binary files a/doc/samplereport/images/poweredby_036.gif and /dev/null differ
diff --git a/doc/samplereport/images/product_logo.gif b/doc/samplereport/images/product_logo.gif
deleted file mode 100644
index 327b838..0000000
Binary files a/doc/samplereport/images/product_logo.gif and /dev/null differ
diff --git a/doc/samplereport/images/remove.gif b/doc/samplereport/images/remove.gif
deleted file mode 100644
index ad4b238..0000000
Binary files a/doc/samplereport/images/remove.gif and /dev/null differ
diff --git a/doc/samplereport/images/se_maj_rond.gif b/doc/samplereport/images/se_maj_rond.gif
deleted file mode 100644
index da2510e..0000000
Binary files a/doc/samplereport/images/se_maj_rond.gif and /dev/null differ
diff --git a/doc/samplereport/images/strich.gif b/doc/samplereport/images/strich.gif
deleted file mode 100644
index a33e79d..0000000
Binary files a/doc/samplereport/images/strich.gif and /dev/null differ
diff --git a/doc/samplereport/images/sw_maj_rond.gif b/doc/samplereport/images/sw_maj_rond.gif
deleted file mode 100644
index 110bdf4..0000000
Binary files a/doc/samplereport/images/sw_maj_rond.gif and /dev/null differ
diff --git a/doc/samplereport/images/sw_med_rond.gif b/doc/samplereport/images/sw_med_rond.gif
deleted file mode 100644
index 6671c3d..0000000
Binary files a/doc/samplereport/images/sw_med_rond.gif and /dev/null differ
diff --git a/doc/samplereport/images/sw_min.gif b/doc/samplereport/images/sw_min.gif
deleted file mode 100644
index d96369d..0000000
Binary files a/doc/samplereport/images/sw_min.gif and /dev/null differ
diff --git a/doc/samplereport/images/update.gif b/doc/samplereport/images/update.gif
deleted file mode 100644
index 71ca225..0000000
Binary files a/doc/samplereport/images/update.gif and /dev/null differ
diff --git a/doc/samplereport/index.html b/doc/samplereport/index.html
deleted file mode 100644
index b5eb4f1..0000000
--- a/doc/samplereport/index.html
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-    <title></title>
-    <style type="text/css" media="all">
-      @import url("./css/maven-base.css");
-      @import url("./css/maven-theme.css");
-      @import url("./css/site.css");
-    </style>
-    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-  </head>
-  <body class="composite">
-    <div id="banner">
-                          <span id="bannerLeft">
-    
-            Core Library
-    
-            </span>
-                    <div class="clear">
-        <hr/>
-      </div>
-    </div>
-    <div id="breadcrumbs">
-      <div class="xleft">Last Published: Tue Jan 24 22:40:49 EST 2006</div>
-      <div class="xright">      <a href="http://tacos.sourceforge.net">Core Library</a>
-      </div>
-      <div class="clear">
-        <hr/>
-      </div>
-    </div>
-    <div id="leftColumn"><div id="navcolumn">      <h5>Project Documentation</h5>
-    <ul>
-              
-        <li class="collapsed">
-          <ul>
-                  
-    <li class="none">
-          <strong><a href="surefire-report.html">Maven Surefire Report</a></strong>
-        </li>
-              </ul>
-        </li>
-          </ul>
-  <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
-              <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
-            </a>
-    </div></div>
-    <div id="bodyColumn">
-      <div id="contentBox">
-        <script type="text/javascript">
-function toggleDisplay(elementId) {
- var elm = document.getElementById(elementId + 'error');
- if (elm && typeof elm.style != "undefined") {
- if (elm.style.display == "none") {
- elm.style.display = "";
- document.getElementById(elementId + 'off').style.display = "none";
- document.getElementById(elementId + 'on').style.display = "inline";
- } else if (elm.style.display == "") { elm.style.display = "none";
- document.getElementById(elementId + 'off').style.display = "inline";
- document.getElementById(elementId + 'on').style.display = "none";
- } 
- } 
- }
-</script><h2><a name="Summary"></a>Summary</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"><th>Tests</th><th>Errors </th><th>Failures</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td>7</td><td>0</td><td>1</td><td>85.714%</td><td>190.072</td></tr></table><br />Note: failures  [...]
-      </div>
-    </div>
-    <div class="clear">
-      <hr/>
-    </div>
-    <div id="footer">
-      <div class="xright">©  
-          2001-2006
-    
-          Sourceforge
-      </div>
-      <div class="clear">
-        <hr/>
-      </div>
-    </div>
-  </body>
-</html>
diff --git a/doc/testng.css b/doc/testng.css
deleted file mode 100644
index cfd78f9..0000000
--- a/doc/testng.css
+++ /dev/null
@@ -1,163 +0,0 @@
-body, td, th {
-  font-family: Lucida Grande, Tahoma, Verdana, Arial, sans-serif;
-  font-size: 9pt;
-}
-
-table,th,tr,td {
-        border: none;
-}
-
-th {
-        background: #aaa;
-}
-
-td {
-        background: #efefef;
-}
-
-td {
-        padding-top: 3px;
-        padding-right: 4px;
-        padding-left: 4px;
-        padding-bottom: 3px;
-}
-
-h2 {
-        text-align: center;
-}
-
-h3 {
-        background: #efefef;
-        letter-spacing: 0.12em;
-        border-bottom: 1px dotted #aaa;
-        padding-top: 8px;
-        padding-left: 4px;
-        width: 70%;
-}
-
-hr {
-        height: 5px;
-        border: 0;
-        color: #aaa;
-        background-color: #aaa;
-}
-
-.doctype {
-  color: red
-}
-
-.xml-comment {
-  color: green;
-}
-
-.attribute {
-  color: blue;
-}
-
-.tag {
-  color: #7f0055;
-  font-weight: bold;
-}
-
-.float-right {
-  float: right;
-}
-
-.code {
-  margin-left: 20px;
-  margin-top: 10px;
-  background-color: #ffffdd;
-  border: 1pt solid silver;
-  border-color: #ccc #999 #999 #CCC;
-  color: #000000;
-  padding: 5px 5px 5px 7px;
-  font-size: 11px;
-  padding: .3em .6em;
-  font-family: Courier New
-}
-
-.box {
-  border: 1pt solid silver;
-  border-color: #ccc #999 #999 #CCC;
-  background-color: #ffffdd;
-}
-
-#menu {
-        font-size: small;
-        line-height: 0.9em;
-        clear: both;
-        margin-top: 10px;
-        }
-
-#menu li {
-        margin-bottom: 7px;
-        }
-
-#menu li li {
-        margin-top: 2px;
-        margin-bottom: 2px;
-        }
-
-#menu li.submenuitems {
-        margin-bottom: 2px;
-        }
-
-#menu a {
-        text-decoration: none;
-        }
-
-.e{margin-left:1em;text-indent:-1em;margin-right:1em}
-.m{color:blue}
-.t{color:#990000}
-
-A:link {
-  text-decoration: none;
-}
-
-A:hover.summary {
-  text-decoration: none;
-  color: #ff9900;
-}
-
-A:visited {
-  text-decoration: none;
-}
-
-
-
-
-
-
-/*********************************************/
-/* The following rules apply to the top menu */
-/*********************************************/
-#topmenu a {
-	text-decoration: none;
-}
-#topmenu a:link {
-	color: #0066bb; 
-}
-#topmenu a:visited {
-	color: #006699; 
-}
-#topmenu a:active {
-	color: red; 
-}
-#topmenu a:hover {
-	color: red; 
-}
-#topmenu table {
-	background-color: #ffcc66; 
-	text-align: center;
-}
-#topmenu td {
-  font-size: small;
-  font-weight: bold;
-}
-#topmenu td.current {
-  background: #ffff00;
-}
-/* The next rule is a patch because other rules are not scoped correctly */
-#topmenu td {
-    background-color: #ffcc66;
-}
diff --git a/eclipse-projects/beust.com/.project b/eclipse-projects/beust.com/.project
deleted file mode 100644
index 04906ab..0000000
--- a/eclipse-projects/beust.com/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>beust.com</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.UpdateSiteBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.UpdateSiteNature</nature>
-	</natures>
-</projectDescription>
diff --git a/eclipse-projects/beust.com/index.html b/eclipse-projects/beust.com/index.html
deleted file mode 100644
index 70c1b8c..0000000
--- a/eclipse-projects/beust.com/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<html>
-<head>
-<title>beust.com</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<style>@import url("web/site.css");</style>
-<script type="text/javascript">
-	var returnval = 0;
-	var stylesheet, xmlFile, cache, doc;
-	function init(){
-		// NSCP 7.1+ / Mozilla 1.4.1+ / Safari
-		// Use the standard DOM Level 2 technique, if it is supported
-		if (document.implementation && document.implementation.createDocument) {
-			xmlFile = document.implementation.createDocument("", "", null);
-			stylesheet = document.implementation.createDocument("", "", null);
-			if (xmlFile.load){
-				xmlFile.load("site.xml");
-				stylesheet.load("web/site.xsl");
-			} else {
-				alert("Document could not be loaded by browser.");
-			}
-			xmlFile.addEventListener("load", transform, false);
-			stylesheet.addEventListener("load", transform, false);
-		}
-		//IE 6.0+ solution
-		else if (window.ActiveXObject) {
-			xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0");
-			xmlFile.async = false;
-			xmlFile.load("site.xml");
-			stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0");
-			stylesheet.async = false;
-			stylesheet.load("web/site.xsl");
-			cache = new ActiveXObject("msxml2.XSLTemplate.3.0");
-			cache.stylesheet = stylesheet;
-			transformData();
-		}
-	}
-	// separate transformation function for IE 6.0+
-	function transformData(){
-		var processor = cache.createProcessor();
-		processor.input = xmlFile;
-		processor.transform();
-		data.innerHTML = processor.output;
-	}
-	// separate transformation function for NSCP 7.1+ and Mozilla 1.4.1+ 
-	function transform(){
-		returnval+=1;
-		if (returnval==2){
-			var processor = new XSLTProcessor();
-			processor.importStylesheet(stylesheet); 
-			doc = processor.transformToDocument(xmlFile);
-			document.getElementById("data").innerHTML = doc.documentElement.innerHTML;
-		}
-	}
-</script>
-</head>
-<body onload="init();">
-<!--[insert static HTML here]-->
-<div id="data"><!-- this is where the transformed data goes --></div>
-</body>
-</html>
diff --git a/eclipse-projects/beust.com/site.xml b/eclipse-projects/beust.com/site.xml
deleted file mode 100644
index 3c48252..0000000
--- a/eclipse-projects/beust.com/site.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <feature url="features/org.testng.feature_5.8.0.2.jar" id="org.testng.feature" version="5.8.0.2">
-      <category name="TestNG"/>
-   </feature>
-   <category-def name="TestNG" label="TestNG"/>
-</site>
diff --git a/eclipse-projects/beust.com/web/site.css b/eclipse-projects/beust.com/web/site.css
deleted file mode 100644
index 62c6f9f..0000000
--- a/eclipse-projects/beust.com/web/site.css
+++ /dev/null
@@ -1,12 +0,0 @@
-<STYLE type="text/css">
-td.spacer {padding-bottom: 10px; padding-top: 10px;}
-.title { font-family: sans-serif; color: #99AACC;}
-.bodyText { font-family: sans-serif; font-size: 9pt; color:#000000;  }
-.sub-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white;}
-.log-text {font-family: sans-serif; font-style: normal; font-weight: lighter; font-size: 8pt; color:black;}
-.big-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white; border-top:10px solid white;}
-.light-row {background:#FFFFFF}
-.dark-row {background:#EEEEFF}
-.header {background:#99AADD}
-#indent {word-wrap : break-word;width :300px;text-indent:10px;}
-</STYLE>
diff --git a/eclipse-projects/beust.com/web/site.xsl b/eclipse-projects/beust.com/web/site.xsl
deleted file mode 100644
index de497b1..0000000
--- a/eclipse-projects/beust.com/web/site.xsl
+++ /dev/null
@@ -1,214 +0,0 @@
-<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt">
-<xsl:output method="html" encoding="UTF-8"/>
-<xsl:key name="cat" match="category" use="@name"/>
-<xsl:template match="/">
-<xsl:for-each select="site">
-	<html>
-	<head>
-	<title>beust.com</title>
-	<style>@import url("web/site.css");</style>
-	</head>
-	<body>
-	<h1 class="title">beust.com</h1>
-	<p class="bodyText"><xsl:value-of select="description"/></p>
-	<table width="100%" border="0" cellspacing="1" cellpadding="2">
-	<xsl:for-each select="category-def">
-		<xsl:sort select="@label" order="ascending" case-order="upper-first"/>
-		<xsl:sort select="@name" order="ascending" case-order="upper-first"/>
-	<xsl:if test="count(key('cat', at name)) != 0">
-			<tr class="header">
-				<td class="sub-header" width="30%">
-					<xsl:value-of select="@name"/>
-				</td>
-				<td class="sub-header" width="70%">
-					<xsl:value-of select="@label"/>
-				</td>
-			</tr>
-			<xsl:for-each select="key('cat', at name)">
-			<xsl:sort select="ancestor::feature//@version" order="ascending"/>
-			<xsl:sort select="ancestor::feature//@id" order="ascending" case-order="upper-first"/>
-			<tr>
-				<xsl:choose>
-				<xsl:when test="(position() mod 2 = 1)">
-					<xsl:attribute name="class">dark-row</xsl:attribute>
-				</xsl:when>
-				<xsl:otherwise>
-					<xsl:attribute name="class">light-row</xsl:attribute>
-				</xsl:otherwise>
-				</xsl:choose>
-				<td class="log-text" id="indent">
-						<xsl:choose>
-						<xsl:when test="ancestor::feature//@label">
-							<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@label"/></a>
-							<br/>
-							<div id="indent">
-							(<xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/>)
-							</div>
-						</xsl:when>
-						<xsl:otherwise>
-						<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/></a>
-						</xsl:otherwise>
-						</xsl:choose>
-						<br />
-				</td>
-				<td>
-					<table>
-						<xsl:if test="ancestor::feature//@os">
-							<tr><td class="log-text" id="indent">Operating Systems:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@os"/></td>
-							</tr>
-						</xsl:if>
-						<xsl:if test="ancestor::feature//@ws">
-							<tr><td class="log-text" id="indent">Windows Systems:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@ws"/></td>
-							</tr>
-						</xsl:if>
-						<xsl:if test="ancestor::feature//@nl">
-							<tr><td class="log-text" id="indent">Languages:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@nl"/></td>
-							</tr>
-						</xsl:if>
-						<xsl:if test="ancestor::feature//@arch">
-							<tr><td class="log-text" id="indent">Architecture:</td>
-							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@arch"/></td>
-							</tr>
-						</xsl:if>
-					</table>
-				</td>
-			</tr>
-			</xsl:for-each>
-			<tr><td class="spacer"><br/></td><td class="spacer"><br/></td></tr>
-		</xsl:if>
-	</xsl:for-each>
-	<xsl:if test="count(feature)  > count(feature/category)">
-	<tr class="header">
-		<td class="sub-header" colspan="2">
-		Uncategorized
-		</td>
-	</tr>
-	</xsl:if>
-	<xsl:choose>
-	<xsl:when test="function-available('msxsl:node-set')">
-	   <xsl:variable name="rtf-nodes">
-		<xsl:for-each select="feature[not(category)]">
-			<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
-			<xsl:sort select="@version" order="ascending" />
-			<xsl:value-of select="."/>
-			<xsl:copy-of select="." />
-		</xsl:for-each>
-	   </xsl:variable>
-	   <xsl:variable name="myNodeSet" select="msxsl:node-set($rtf-nodes)/*"/>
-	<xsl:for-each select="$myNodeSet">
-	<tr>
-		<xsl:choose>
-		<xsl:when test="position() mod 2 = 1">
-		<xsl:attribute name="class">dark-row</xsl:attribute>
-		</xsl:when>
-		<xsl:otherwise>
-		<xsl:attribute name="class">light-row</xsl:attribute>
-		</xsl:otherwise>
-		</xsl:choose>
-		<td class="log-text" id="indent">
-			<xsl:choose>
-			<xsl:when test="@label">
-				<a href="{@url}"><xsl:value-of select="@label"/></a>
-				<br />
-				<div id="indent">
-				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
-				</div>
-			</xsl:when>
-			<xsl:otherwise>
-				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
-			</xsl:otherwise>
-			</xsl:choose>
-			<br /><br />
-		</td>
-		<td>
-			<table>
-				<xsl:if test="@os">
-					<tr><td class="log-text" id="indent">Operating Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@ws">
-					<tr><td class="log-text" id="indent">Windows Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@nl">
-					<tr><td class="log-text" id="indent">Languages:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@arch">
-					<tr><td class="log-text" id="indent">Architecture:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
-					</tr>
-				</xsl:if>
-			</table>
-		</td>
-	</tr>
-	</xsl:for-each>
-	</xsl:when>
-	<xsl:otherwise>
-	<xsl:for-each select="feature[not(category)]">
-	<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
-	<xsl:sort select="@version" order="ascending" />
-	<tr>
-		<xsl:choose>
-		<xsl:when test="count(preceding-sibling::feature[not(category)]) mod 2 = 1">
-		<xsl:attribute name="class">dark-row</xsl:attribute>
-		</xsl:when>
-		<xsl:otherwise>
-		<xsl:attribute name="class">light-row</xsl:attribute>
-		</xsl:otherwise>
-		</xsl:choose>
-		<td class="log-text" id="indent">
-			<xsl:choose>
-			<xsl:when test="@label">
-				<a href="{@url}"><xsl:value-of select="@label"/></a>
-				<br />
-				<div id="indent">
-				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
-				</div>
-			</xsl:when>
-			<xsl:otherwise>
-				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
-			</xsl:otherwise>
-			</xsl:choose>
-			<br /><br />
-		</td>
-		<td>
-			<table>
-				<xsl:if test="@os">
-					<tr><td class="log-text" id="indent">Operating Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@ws">
-					<tr><td class="log-text" id="indent">Windows Systems:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@nl">
-					<tr><td class="log-text" id="indent">Languages:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
-					</tr>
-				</xsl:if>
-				<xsl:if test="@arch">
-					<tr><td class="log-text" id="indent">Architecture:</td>
-					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
-					</tr>
-				</xsl:if>
-			</table>
-		</td>
-	</tr>
-	</xsl:for-each>
-	</xsl:otherwise>
-	</xsl:choose>
-	</table>
-	</body>
-	</html>
-</xsl:for-each>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/eclipse-projects/org.testng.eclipse/.project b/eclipse-projects/org.testng.eclipse/.project
deleted file mode 100644
index b2e6900..0000000
--- a/eclipse-projects/org.testng.eclipse/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.testng.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/eclipse-projects/org.testng.eclipse/build.properties b/eclipse-projects/org.testng.eclipse/build.properties
deleted file mode 100644
index 64f93a9..0000000
--- a/eclipse-projects/org.testng.eclipse/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-bin.includes = feature.xml
diff --git a/eclipse-projects/org.testng.eclipse/feature.xml b/eclipse-projects/org.testng.eclipse/feature.xml
deleted file mode 100644
index 7c0366d..0000000
--- a/eclipse-projects/org.testng.eclipse/feature.xml
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.testng.feature"
-      label="TestNG"
-      version="5.8.0.2"
-      provider-name="Cedric Beust">
-
-   <description url="http://testng.org">
-      This is the Eclise plug-in for TestNG (http://testng.org).
-   </description>
-
-   <copyright url="http://www.example.com/copyright">
-      [Enter Copyright Description here.]
-   </copyright>
-
-   <license>
-      Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-   </license>
-
-   <url>
-      <update url="http://beust.com/eclipse"/>
-   </url>
-
-   <plugin
-         id="org.testng.eclipse"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"/>
-
-</feature>
diff --git a/examples/.cvsignore b/examples/.cvsignore
deleted file mode 100644
index 5aa92e9..0000000
--- a/examples/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-build
-test-output
-test-report
-*.jar
diff --git a/examples/build.xml b/examples/build.xml
deleted file mode 100644
index 9d0238a..0000000
--- a/examples/build.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<project name="testng" default="all" basedir="..">
-
-   <property file="build.properties"/>
-
-   <property name="debug" value="true"/>
-   <property name="optimize" value="false"/>
-   <property name="build.compiler" value="javac1.5" />
-
-   <!-- dirs for test output -->
-   <property name="test.output" value="${example.dir}/build/test-output"/>
-   <property name="test.report" value="${example.dir}/build/test-report"/>
-
-   <target name="all" depends="prepare,compile,run"/>
-
-
-   <!-- ==================================================================== -->
-   <!-- Compile                                                              -->
-   <!-- ==================================================================== -->
-   <path id="compile.cp">
-      <pathelement location="${jdk15.testng.jar}"/>
-   </path>
-
-   <target name="compile"
-           description="compile the examples"
-           depends="prepare">
-      <echo message="                                 -- testng-compile-examples --"/>
-
-     <javac   debug="true"
-              fork="true"
-              source="1.5"
-              classpathref="compile.cp"
-              srcdir="${example.dir}/src"
-              destdir="${example.dir}/build/classes"
-      />
-   </target>
-
-   <target name="prepare">
-      <mkdir dir="${example.dir}/build/classes"/>
-      <mkdir dir="${test.output}"/>
-      <mkdir dir="${test.report}"/>
-   </target>
-
-   <!-- ==================================================================== -->
-   <!-- Run                                                             -->
-   <!-- ==================================================================== -->
-
-   <path id="run.cp">
-      <pathelement location="${jdk15.testng.jar}" />
-      <path refid="compile.cp"/>
-      <pathelement location="${example.dir}/build/classes"/>
-   </path>
-
-   <target  name="run"
-            description="run examples with java"
-            depends="compile">
-
-      <echo message="                                  testng-run "/>
-      <java fork="yes"
-            classpathref="run.cp"
-            classname="org.testng.TestNG">
-         <arg value="-d"/>
-         <arg value="${test.output}"/>
-         <arg value="${example.dir}/testng.xml"/>
-         <jvmarg value="-ea"/>
-      </java>
-      <echo>Some of these tests should have failed.  Statistics are available at</echo>
-      <echo>${test.output}\index.html for a TestNG HTML report</echo>
-   </target>
-
-   <target  name="run-task"
-            description="run examples using testng task"
-            depends="compile">
-      <echo message="                                 -- testng-run using the testng task--"/>
-     
-      <taskdef classpathref="compile.cp" name="testng" classname="com.beust.testng.TestNGAntTask"/>
-     
-      <testng
-               fork="yes"
-               classpathref="run.cp"
-               outputdir="${test.output}">
-         <fileset dir="${example.dir}" includes="testng.xml"/>
-      </testng>
-
-      <echo>Some of these tests should have failed, see the file test.out for the details</echo>
-      <junitreport todir="${test.report}">
-         <fileset dir="${test.output}">
-            <include name="*.xml"/>
-         </fileset>
-         <report format="noframes" todir="${test.report}"/>
-      </junitreport>
-   </target>
-
-   <target  name="run-task-noxml"
-            depends="compile"
-            description="run examples using testng task with just -testclass and no xml">
-      <testng
-               fork="yes"
-               classpathref="run.cp"
-               outputdir="${test.output}"
-               testclass="example1.Test1">
-      </testng>
-      <echo>Some of these tests should have failed, see the file test.out for the details</echo>
-      <antcall target="report"/>
-   </target>
-
-   <target  name="run-task-jar"
-            depends="compile,testjar"
-            description="run examples using testng task with just -testjar and no xml">
-      <!-- note that this invocation does not have build/ in the path -->
-      <testng
-               fork="yes"
-               classpathref="compile.cp"
-               outputdir="${test.output}"
-               testjar="${example.dir}/example.jar">
-      </testng>
-      <antcall target="report"/>
-      <echo>Some of these tests should have failed, see the file test.out for the details</echo>
-   </target>
-
-   <target name="testjar"
-      description="make a test jar with the property file and the classes we need in it">
-      <jar destfile="${example.dir}/example.jar">
-         <fileset dir="${example.dir}/build/classes" includes="**/*.class"/>
-         <fileset file="${example.dir}/testng.xml"/>
-      </jar>
-   </target>
-
-   <target name="report"
-      description="generate reports using junireport">
-      <junitreport todir="${test.report}">
-         <fileset dir="${test.output}">
-            <include name="*.xml"/>
-         </fileset>
-         <report format="noframes" todir="${test.report}"/>
-      </junitreport>
-   </target>
-
-   <target  name="clean"
-            description="clean up example results">
-      <delete dir="${example.dir}/build/classes"/>
-      <delete dir="${test.output}"/>
-      <delete dir="${test.report}"/>
-      <antcall target="prepare"/>
-   </target>
-
-</project>
diff --git a/examples/src/example1/Test1.java b/examples/src/example1/Test1.java
deleted file mode 100644
index 4e3d509..0000000
--- a/examples/src/example1/Test1.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package example1;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Test;
-
-/**
- * This class
- *
- * @author Cedric Beust, Apr 26, 2004
- * 
- */
-
- at Test(groups = { "functest" }, enabled = true )
-public class Test1 {
-  
-  @BeforeClass
-  public static void setupClass() {
-    ppp("SETTING UP THE CLASS");
-  }
-
-  @AfterClass
-  public static void tearDownClass1() {
-    ppp("TEARING DOWN THE CLASS PART 1");
-  }
-
-  @AfterClass
-  public static void tearDownClass2() {
-    ppp("TEARING DOWN THE CLASS PART 2");
-  }
-
-  @BeforeMethod
-  public void beforeTestMethod() {
-    ppp("BEFORE METHOD");  
-  }
-  
-  @AfterMethod
-  public void afterTestMethod() {
-    ppp("AFTER METHOD");  
-  }
-
-  @Test(groups = { "odd" })
-  public void testMethod1() {
-    ppp(".....  TESTING1");
-  }
-  
-  @Test(groups = {"even"} )
-  public void testMethod2() {
-    ppp(".....  TESTING2");
-  }
-  
-  @Test(groups = { "odd" })
-  public void testMethod3() {
-    ppp(".....  TESTING3");
-  }
-
-  @Test(groups = { "odd" }, enabled = false)
-  public void testMethod5() {
-    ppp(".....  TESTING5");
-  }
-  
-  @Test(groups = { "broken" })
-  public void testBroken() {
-    ppp(".....  TEST BROKEN");
-  }
-  
-  @Test(groups = { "fail" }, expectedExceptions =
-      { NumberFormatException.class, ArithmeticException.class } )
-  public void throwExpectedException1ShouldPass() {
-    throw new NumberFormatException();
-  }
-
-  @Test(groups = { "fail" }, expectedExceptions = 
-    { NumberFormatException.class, ArithmeticException.class } )
-  public void throwExpectedException2ShouldPass() {
-    throw new ArithmeticException();
-  }
-  
-  private static void ppp(String s) {
-  System.out.println("[Test1] " + s);
-}
-}
diff --git a/examples/src/priority/Priority.java b/examples/src/priority/Priority.java
deleted file mode 100644
index 9acac7a..0000000
--- a/examples/src/priority/Priority.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package priority;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({METHOD, TYPE})
-public @interface Priority {
-  int value() default 0;
-}
diff --git a/examples/src/priority/PriorityInterceptor.java b/examples/src/priority/PriorityInterceptor.java
deleted file mode 100644
index 45b3e3a..0000000
--- a/examples/src/priority/PriorityInterceptor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package priority;
-
-import org.testng.IMethodInstance;
-import org.testng.IMethodInterceptor;
-import org.testng.ITestContext;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-
-public class PriorityInterceptor implements IMethodInterceptor {
-
-  public List<IMethodInstance> intercept(List<IMethodInstance> methods,
-      ITestContext context)
-  {
-    Comparator<IMethodInstance> comparator = new Comparator<IMethodInstance>() {
-      
-      private int getPriority(IMethodInstance mi) {
-        int result = 0;
-        Method method = mi.getMethod().getMethod();
-        Priority a1 = method.getAnnotation(Priority.class);
-        if (a1 != null) {
-          result = a1.value();
-        } else {
-          Class<?> cls = method.getDeclaringClass();
-          Priority classPriority = cls.getAnnotation(Priority.class);
-          if (classPriority != null) {
-            result = classPriority.value();
-          }
-        }
-        return result;
-      }
-
-      public int compare(IMethodInstance m1, IMethodInstance m2) {
-        return getPriority(m1) - getPriority(m2);
-      }
-      
-    };
-    IMethodInstance[] array = methods.toArray(new IMethodInstance[methods.size()]);
-    Arrays.sort(array, comparator);
-
-    return Arrays.asList(array);
-  }
-
-}
diff --git a/examples/src/priority/PriorityTest.java b/examples/src/priority/PriorityTest.java
deleted file mode 100644
index 864cafb..0000000
--- a/examples/src/priority/PriorityTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package priority;
-
-import org.testng.annotations.Test;
-
-import priority.Priority;
-
-public class PriorityTest {
-
-  @Test
-  public void b1() { System.out.println("Default priority");}
-  
-  @Priority(-3)
-  @Test
-  public void a1()  { System.out.println("Priority -3");}
-  
-  @Priority(-3)
-  @Test
-  public void a2()  { System.out.println("Priority -3");}
-
-  @Priority(3)
-  @Test
-  public void c1()  { System.out.println("Priority 3");}
-
-  @Priority(3)
-  @Test
-  public void c2()  { System.out.println("Priority 3");}
-
-  @Priority(4)
-  @Test
-  public void d1()  { System.out.println("Priority 4");}
-}
diff --git a/examples/testng.xml b/examples/testng.xml
deleted file mode 100644
index ef60d3a..0000000
--- a/examples/testng.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="Example" verbose="1">
-
-  <listeners>
-    <listener class-name="priority.PriorityInterceptor" />
-  </listeners>
-  
-  <test name="Simple example" >
-<!--
-      <groups>
-      <run>
-        <include name="assert" />
-        <include name="fail" />
-        <include name="odd" />
-        <include name="even" />
-        <exclude name="broken" />
-      </run>        
-    </groups>
--->
-    <classes>
-      <class name="example1.Test1" />
-    </classes>
-  </test>
-  
-  <test name="Method interceptor example" >
-    <classes>
-      <class name="priority.PriorityTest" />
-    </classes>
-  </test>
-
-</suite>
diff --git a/gigaspaces/.classpath b/gigaspaces/.classpath
deleted file mode 100644
index 40194be..0000000
--- a/gigaspaces/.classpath
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" path="test/src"/>
-	<classpathentry kind="lib" path="3rdparty/JSpaces.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/TestNG"/>
-	<classpathentry kind="lib" path="3rdparty/jini/jsk-lib.jar"/>
-	<classpathentry kind="lib" path="3rdparty/jini/jsk-platform.jar"/>
-	<classpathentry kind="lib" path="3rdparty/common/backport-util-concurrent.jar"/>
-	<classpathentry kind="output" path="z_build"/>
-</classpath>
diff --git a/gigaspaces/.project b/gigaspaces/.project
deleted file mode 100644
index f89ddc5..0000000
--- a/gigaspaces/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>testng-gigaspaces</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/gigaspaces/build.xml b/gigaspaces/build.xml
deleted file mode 100644
index be3d929..0000000
--- a/gigaspaces/build.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<project name="testng-gigaspaces" default="both" basedir=".">
-
-	<target name="init">
-		<tstamp />
-		<property file="../build.properties" />
-		<property file="build.properties" />
-		<!-- Settings -->
-		<property name="jdk" value="jdk15" />
-		<property name="optimize" value="false" />
-		<property name="debug" value="true" />
-
-		<!--  Directories -->
-		<property name="src.dir" location="src" />
-		<property name="topbuild.dir" location="build" />
-		<property name="build.dir" location="${topbuild.dir}/${jdk}" />
-		<property name="classes.dir" location="${build.dir}/classes" />
-		<property name="dependencies.dir" location="3rdparty" />
-		<property name="topjavadocs.dir" location="javadocs" />
-		<property name="javadocs.dir" location="${topjavadocs.dir}/${jdk}" />
-
-		<property name="testng.gigaspaces.jar" location="testng-gigaspaces-${jdk}.jar" />
-
-		<condition property="source.version" value="1.4">
-			<equals arg1="${jdk}" arg2="jdk14"/>
-		</condition>
-		<condition property="source.version" value="1.5">
-			<equals arg1="${jdk}" arg2="jdk15"/>
-		</condition>
-	</target>
-
-	<target name="paths" depends="init">
-		<path id="src.path">
-			<pathelement path="${src.dir}" />
-		</path>
-		<path id="compile.path">
-			<fileset dir="${dependencies.dir}">
-				<include name="*.jar" />
-			</fileset>
-			<pathelement path="../testng-${testng.version}-${jdk}.jar" />
-		</path>
-	</target>
-
-	<target name="compile" depends="paths" description="compile sources">
-		<echo message="                                 -- Compiling ${jdk} sources --" />
-		<mkdir dir="${classes.dir}"/>
-		<javac 	target="jsr14"
-				debug="${debug}" optimize="${optimize}" 
-		        destdir="${classes.dir}">
-			<src refid="src.path" />
-			<classpath refid="compile.path" />
-		</javac>
-	</target>
-
-	<target name="jar" depends="compile">
-		<echo message="                                 -- Creating ${jdk} jar --" />
-		<jar destfile="${testng.gigaspaces.jar}">
-			<fileset dir="${classes.dir}" />
-		</jar>
-	</target>
-
-	<target name="javadoc" depends="paths" description="generate api documentation">
-		<echo message="                                 -- Generating javadocs for ${jdk} --" />
-		<mkdir dir="${javadocs.dir}" />
-		<javadoc destdir="${javadocs.dir}" source="${source.version}" windowtitle="TestNG GigaSpaces Support" classpathref="compile.path">
-			<fileset dir="${src.dir}/common" defaultexcludes="yes" includes="**/*.java" />
-			<fileset dir="${src.dir}/${jdk}" defaultexcludes="yes" includes="**/*.java" />
-		</javadoc>
-	</target>
-
-	<target name="both">
-		<property name="target" value="jar"/>
-		<antcall target="${target}">
-			<param name="jdk" value="jdk14"/>
-		</antcall>
-		<antcall target="${target}">
-			<param name="jdk" value="jdk15"/>
-		</antcall>
-	</target>
-
-	<target name="dist" description="builds both jdk14 and jdk15 variants">
-		<antcall target="both">
-			<param name="target" value="jar"/>
-		</antcall>
-	</target>
-
-	<target name="javadocs" description="builds both jdk14 and jdk15 javadocs">
-		<antcall target="both">
-			<param name="target" value="javadoc"/>
-		</antcall>
-	</target>
-
-	<target name="all" depends="dist,javadocs" description="build jar files and javadocs" />
-
-	<target name="clean" depends="paths" description="cleans all">
-		<delete dir="${topbuild.dir}" />
-		<delete dir="${topjavadocs.dir}" />
-		<delete file="testng-gigaspaces-jdk14.jar" />
-		<delete file="testng-gigaspaces-jdk15.jar" />
-	</target>
-
-</project>
diff --git a/gigaspaces/src/org/testng/gigaspaces/ResultEntry.java b/gigaspaces/src/org/testng/gigaspaces/ResultEntry.java
deleted file mode 100644
index 8e75638..0000000
--- a/gigaspaces/src/org/testng/gigaspaces/ResultEntry.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.testng.gigaspaces;
-
-import java.util.UUID;
-
-import org.testng.ISuite;
-
-/**
- * @author	Guy Korland
- * 
- * @date 	April 20, 2007
- */
-public class ResultEntry 
-{
-	private ISuite _suite;
-	private UUID 	  m_testID;
-
-	public ResultEntry() {}
-
-	public ResultEntry( ISuite suite, UUID testID)
-	{
-		_suite = suite;
-		m_testID = testID;
-	}
-
-	public ISuite getSuite()
-	{
-		return _suite;
-	}
-
-	public void setSuite( ISuite suite)
-	{
-		_suite = suite;
-	}
-	
-	public UUID getTestID()
-	{
-		return m_testID;
-	}
-
-	public void setTestID(UUID testid)
-	{
-		m_testID = testid;
-	}
-}
\ No newline at end of file
diff --git a/gigaspaces/src/org/testng/gigaspaces/SpaceMasterAdapter.java b/gigaspaces/src/org/testng/gigaspaces/SpaceMasterAdapter.java
deleted file mode 100644
index 93183c9..0000000
--- a/gigaspaces/src/org/testng/gigaspaces/SpaceMasterAdapter.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package org.testng.gigaspaces;
-
-import java.io.IOException;
-import java.util.Properties;
-import java.util.UUID;
-
-import net.jini.core.lease.Lease;
-
-import org.testng.remote.adapter.IMasterAdapter;
-import org.testng.remote.adapter.RemoteResultListener;
-import org.testng.xml.XmlSuite;
-
-import com.j_spaces.core.IJSpace;
-import com.j_spaces.core.client.SpaceFinder;
-
-import edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap;
-import edu.emory.mathcs.backport.java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Provides a Master adapter based on Gigaspaces space implementation.
- * 
- * @author	Guy Korland
- * 
- * @date 	April 20, 2007
- */
-public class SpaceMasterAdapter implements IMasterAdapter
-{
-	public static final String SPACE_URL = "gigaspaces.url";
-	
-	private IJSpace					m_space;
-	
-	final private ConcurrentHashMap m_listeners = new ConcurrentHashMap(); 
-	
-	final private SuitesCounter m_counter = new SuitesCounter();
-	private ResultCollector m_collector;
-	
-	/*
-	 * @see org.testng.remote.adapter.IWorkerApadter#init(java.util.Properties)
-	 */
-	public void init(Properties prop) throws Exception
-	{
-		String url = prop.getProperty(SPACE_URL, "/./TestNGSpace?groups=TestNG");
-		m_space = (IJSpace) SpaceFinder.find(url);
-		m_collector = new ResultCollector();
-		m_collector.start();
-	}
-
-	/*
-	 * @see org.testng.remote.adapter.IMasterAdapter#awaitTermination(long)
-	 */
-	public void awaitTermination(long timeout) throws InterruptedException
-	{
-		try
-		{
-			m_counter.waitFor( timeout);
-		}
-		finally
-		{
-			m_collector.shutDown();
-		}
-	}
-
-	/*
-	 * @see org.testng.remote.adapter.IMasterAdapter#runSuitesRemotely(org.testng.xml.XmlSuite, org.testng.remote.adapter.RemoteResultListener)
-	 */
-	public void runSuitesRemotely(XmlSuite suite, RemoteResultListener listener)
-	throws IOException
-	{
-		UUID testID = UUID.randomUUID();
-		SuiteEntry suiteEntry	= new SuiteEntry( suite, testID);
-		try
-		{
-			m_listeners.putIfAbsent(testID, listener);
-			m_space.write(suiteEntry, null, Lease.FOREVER);
-			m_counter.inc();
-		}
-		catch (Exception e)
-		{
-			m_listeners.remove( testID);
-			e.printStackTrace();
-		}
-	}
-
-	private class ResultCollector extends Thread
-	{
-		final private ResultEntry resultTemplate = new ResultEntry();
-		volatile private boolean m_shutdown = false;  
-
-		public ResultCollector()
-		{
-			this.setDaemon(true);
-			this.setName("ResultCollector");
-		}
-
-		public void run()
-		{
-			while( !m_shutdown)
-			{
-				try
-				{
-					ResultEntry rs = (ResultEntry) m_space.take(resultTemplate, null,
-					                                           Long.MAX_VALUE);
-					RemoteResultListener listener = (RemoteResultListener)m_listeners.remove(rs.getTestID());
-					listener.onResult(rs.getSuite());
-					m_counter.dec();
-				}
-				catch (Exception e)
-				{
-					e.printStackTrace();
-				}
-			}
-		}
-		
-		public void shutDown()
-		{
-			m_shutdown = true;
-			this.interrupt();
-		}
-	}
-
-
-	private static class SuitesCounter
-	{
-		private AtomicInteger m_count = new AtomicInteger(1); 
-		
-		public void dec()
-		{
-			int c = m_count.decrementAndGet();
-			if( c == 0)
-			{
-				synchronized (this)
-				{
-					notifyAll();
-				}
-			}
-		}
-		
-		public void inc()
-		{
-			m_count.incrementAndGet();
-		}
-		
-		public void waitFor( long timeout) throws InterruptedException
-		{
-			m_count.decrementAndGet();
-			synchronized (this)
-			{
-				wait( timeout);	
-			}
-			
-		}
-	}
-}
diff --git a/gigaspaces/src/org/testng/gigaspaces/SpaceWorkerAdapter.java b/gigaspaces/src/org/testng/gigaspaces/SpaceWorkerAdapter.java
deleted file mode 100644
index 647c992..0000000
--- a/gigaspaces/src/org/testng/gigaspaces/SpaceWorkerAdapter.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.testng.gigaspaces;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import net.jini.core.entry.UnusableEntryException;
-import net.jini.core.lease.Lease;
-import net.jini.core.lease.LeaseException;
-import net.jini.core.transaction.Transaction;
-import net.jini.core.transaction.TransactionException;
-import net.jini.core.transaction.TransactionFactory;
-import net.jini.core.transaction.Transaction.Created;
-import net.jini.core.transaction.server.TransactionManager;
-
-import org.testng.ISuite;
-import org.testng.internal.Utils;
-import org.testng.remote.adapter.IWorkerApadter;
-import org.testng.xml.XmlSuite;
-
-import com.j_spaces.core.IJSpace;
-import com.j_spaces.core.client.LocalTransactionManager;
-import com.j_spaces.core.client.SpaceFinder;
-
-
-/**
- * Provides a Worker adapter based on Gigaspaces space implementation.
- * 
- * @author	Guy Korland
- * 
- * @date 	April 20, 2007
- */
-public class SpaceWorkerAdapter implements IWorkerApadter
-{
-	public static final String SPACE_URL = "gigaspaces.url";
-	public static final String SLAVE_TIMEOUT = "gigaspaces.slave.timeout";
-	
-	final private SuiteEntry _suiteTemplate	= new SuiteEntry();
-
-	private long 					m_transactionTimeout;
-	private TransactionManager m_tm; 
-	private IJSpace				m_space;
-	private Transaction			m_currentTransaction;
-	private SuiteEntry			m_currentSuite;
-
-	public SpaceWorkerAdapter()
-	{
-	}
-	
-	/*
-	 * @see org.testng.remote.adapter.IWorkerApadter#init(java.util.Properties)
-	 */
-	public void init(Properties prop) throws Exception
-	{
-		String url = prop.getProperty(SPACE_URL, "jini://*/*/TestNGSpace?groups=TestNG");
-		m_space = (IJSpace) SpaceFinder.find(url);
-		m_tm = LocalTransactionManager.getInstance(m_space);
-		//default 5 min
-		m_transactionTimeout = Integer.parseInt( prop.getProperty(SLAVE_TIMEOUT, "300000"));
-	}
-
-	/*
-	 * @see org.testng.remote.adapter.IWorkerApadter#getSuite(long)
-	 */
-	public XmlSuite getSuite(long timeout) throws InterruptedException,
-	IOException
-	{
-		try
-		{
-			Created created = TransactionFactory.create(m_tm, m_transactionTimeout);
-			m_currentTransaction = created.transaction;
-			
-			m_currentSuite = (SuiteEntry) m_space.take( _suiteTemplate, m_currentTransaction, m_transactionTimeout);
-			created.lease.renew(m_transactionTimeout);
-			return m_currentSuite.getSuite();
-		}
-		catch (TransactionException e)
-		{
-			Utils.log( "Transaction error", 1, e.toString()); 
-		}
-		catch (LeaseException e)
-		{
-			Utils.log( "Lease error", 1, e.toString()); 
-		}
-		catch (UnusableEntryException e)
-		{
-			IOException ex = new IOException();
-			ex.initCause(e);
-			throw ex;
-		}
-		return null;
-	}
-
-	/*
-	 * @see org.testng.remote.adapter.IWorkerApadter#returnResult(org.testng.ISuite)
-	 */
-	public void returnResult(ISuite result) throws IOException
-	{
-		try
-		{
-			m_space.write(new ResultEntry(result, m_currentSuite.getTestID()), m_currentTransaction, Lease.FOREVER);
-			m_currentTransaction.commit();
-		}
-		catch (TransactionException e)
-		{
-			Utils.log( "Transaction error", 0, e.toString()); 
-		}
-		finally
-		{
-			m_currentTransaction = null;
-			m_currentSuite = null;
-		}
-	}
-}
diff --git a/gigaspaces/src/org/testng/gigaspaces/SuiteEntry.java b/gigaspaces/src/org/testng/gigaspaces/SuiteEntry.java
deleted file mode 100644
index b9fc373..0000000
--- a/gigaspaces/src/org/testng/gigaspaces/SuiteEntry.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.testng.gigaspaces;
-
-import java.util.UUID;
-
-import org.testng.xml.XmlSuite;
-
-/**
- * @author	Guy Korland
- * 
- * @date 	April 20, 2007
- */
-public class SuiteEntry
-{
-	private XmlSuite m_suite;
-	private UUID 	  m_testID;	
-	
-	public SuiteEntry() {}
-	
-	public SuiteEntry( XmlSuite suite, UUID testID)
-	{
-		m_suite = suite;
-		m_testID = testID;
-	}
-	
-	public XmlSuite getSuite()
-	{
-		return m_suite;
-	}
-	
-	public void setSuite( XmlSuite suite)
-	{
-		m_suite = suite;
-	}
-	
-	public String getSuiteName()
-	{
-		return m_suite.getName();
-	}
-	
-	public String getTestName()
-	{
-		return m_suite.getTest();
-	}
-	
-	public boolean isJUnit()
-	{
-		return m_suite.isJUnit();
-	}
-
-	public UUID getTestID()
-	{
-		return m_testID;
-	}
-
-	public void setTestID(UUID testid)
-	{
-		m_testID = testid;
-	}
-}
diff --git a/gigaspaces/test/src/test/gigaspaces/DistributedTest.java b/gigaspaces/test/src/test/gigaspaces/DistributedTest.java
deleted file mode 100644
index 3bbb060..0000000
--- a/gigaspaces/test/src/test/gigaspaces/DistributedTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package test.gigaspaces;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-import org.testng.remote.SuiteDispatcher;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.BaseDistributedTest;
-
-import testhelper.OutputDirectoryPatch;
-
-public class DistributedTest extends BaseDistributedTest {
-  
-  private List<Thread> m_hostThreads = new ArrayList<Thread>();
-
-  protected Thread startSlave(final String filename) {
-    Thread result = new Thread(new Runnable() {
-      public void run() {
-        TestNG.main(new String[] { "-slave", filename, "-d", OutputDirectoryPatch.getOutputDirectory() });       
-      }
-    });
-    result.setName("Slave-" + filename);
-    result.start();
-    m_hostThreads.add(result);
-    return result;
-  }
-  
-  private File createMasterProperties(String strategy)
-  throws IOException 
-  {
-    String fileName = "remote";
-    
-    File result = File.createTempFile(fileName, ".properties");
-    result.deleteOnExit();
-    Properties p = new Properties();
-    p.setProperty("testng.master.strategy", strategy);
-    p.setProperty("testng.verbose", "0");
-    p.setProperty("testng.master.adpter", "org.testng.gigaspaces.SpaceMasterAdapter");
-    p.setProperty("gigaspaces.url", "/./TestNGSpace?groups=TestNG");
-    FileOutputStream fos = new FileOutputStream(result);
-    p.store(fos, "Automatically generated by tests");
-    fos.close();    
-    
-    return result;
-  }
-  
-  private File createSlaveProperties()
-  throws IOException 
-  {
-    String fileName = "remote";
-    
-    File result = File.createTempFile(fileName, ".properties");
-    result.deleteOnExit();
-    Properties p = new Properties();
-    p.setProperty("testng.verbose", "0");
-    p.setProperty("testng.slave.adpter", "org.testng.gigaspaces.SpaceWorkerAdapter");
-    p.setProperty("gigaspaces.url", "jini://*/*/TestNGSpace?groups=TestNG&timeout=10000");
-    FileOutputStream fos = new FileOutputStream(result);
-    p.store(fos, "Automatically generated by tests");
-    fos.close();    
-    
-    return result;
-  }
-  
-  private XmlSuite createSuite(String name, Class[] classes) {
-    XmlSuite result = new XmlSuite();
-    result.setName(name);
-    
-    for (Class c : classes) {
-      XmlTest test1 = new XmlTest(result);
-      test1.setName(c.getName());
-      XmlClass class1 = new XmlClass(c);
-      test1.getXmlClasses().add(class1);
-    }
-    
-    return result;
-  }
-  
-//  @ Configuration(beforeTestClass = true) 
-  private void startSlaves() throws IOException{
-	  int port = new Random().nextInt(50000) + 2000;
-	  m_ports = new String[] { Integer.toString(port), Integer.toString(port+1)};
-
-	  File slaveFile = createSlaveProperties();
-	  startSlave( slaveFile.getCanonicalPath());
-	  
-	  slaveFile = createSlaveProperties();
-	  startSlave( slaveFile.getCanonicalPath());
-  }
-
-  private String[] m_ports = new String[2];
-
-  public TestListenerAdapter twoHosts(String strategy) throws IOException {  
-    TestNG tng = new TestNG();
-    tng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    
-    File masterFile = createMasterProperties(strategy);
-    tng.setMaster(masterFile.getAbsolutePath());
-    
-    XmlSuite suite = createSuite("DistributedSuite1", new Class[] { Test1.class, Test2.class });
-    tng.setXmlSuites(Arrays.asList(new XmlSuite[] { suite }));
-    
-    TestListenerAdapter result = new TestListenerAdapter();
-    tng.addListener(result);
-    tng.run();
-    
-    String[] passed = {
-        "f1", "f2"
-    };
-    String[] failed = {};
-    String[] skipped = {};
-
-    verifyTests("Passed", passed, toMap(result.getPassedTests()));
-    verifyTests("Failed", failed, toMap(result.getFailedTests()));
-    verifyTests("Skipped", skipped, toMap(result.getSkippedTests()));
-    
-    return result;
-  }
-  
-  @Test
-  public void twoHostsWithTestStrategy() throws IOException {
-    startSlaves();
-    TestListenerAdapter listener = twoHosts(SuiteDispatcher.STRATEGY_TEST);
-    
-    boolean found1 = false;
-    boolean found2 = false;
-    for (ITestResult tr : listener.getPassedTests()) {
-      String host = tr.getHost();
-      if (! found1) found1 = host.contains(m_ports[0]);
-      if (! found2) found2 = host.contains(m_ports[1]);
-    }
-    Assert.assertTrue(found1, "No tests ran on port " + m_ports[0]);
-    Assert.assertTrue(found2, "No tests ran on port " + m_ports[1]);    
-  }
-  
-  @Test
-  public void twoHostsWithSuiteStrategy() throws IOException {
-    startSlaves();
-    TestListenerAdapter listener = twoHosts( SuiteDispatcher.STRATEGY_SUITE);
-  }
-
-  private Map<String, ITestResult> toMap(List<ITestResult> results) {
-    Map<String, ITestResult> result = new HashMap<String, ITestResult>();
-    for (ITestResult tr : results) {
-      result.put(tr.getName(), tr);
-    }
-    
-    return result;
-  }
-  private void ppp(String string) {
-    System.out.println("[DistributedTest] " + string);
-  }
-}
-
diff --git a/gigaspaces/test/src/test/gigaspaces/Test1.java b/gigaspaces/test/src/test/gigaspaces/Test1.java
deleted file mode 100644
index cf320f0..0000000
--- a/gigaspaces/test/src/test/gigaspaces/Test1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.gigaspaces;
-
-import org.testng.annotations.Test;
-
-public class Test1 {
-  @Test
-  public void f1() {
-//    ppp("f1");
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[Test1] " + s);
-  }
-}
-
diff --git a/gigaspaces/test/src/test/gigaspaces/Test2.java b/gigaspaces/test/src/test/gigaspaces/Test2.java
deleted file mode 100644
index 83bd3eb..0000000
--- a/gigaspaces/test/src/test/gigaspaces/Test2.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.gigaspaces;
-
-import org.testng.annotations.Test;
-
-public class Test2 {
-  @Test 
-  public void f2() {
-//    ppp("f2");
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[Test2] " + s);
-  }    
-}
diff --git a/maven/plugin-resources/junitRpt-failed.jsl b/maven/plugin-resources/junitRpt-failed.jsl
deleted file mode 100644
index 641be50..0000000
--- a/maven/plugin-resources/junitRpt-failed.jsl
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-
-<jsl:stylesheet
-  select="$doc"
-  xmlns:j="jelly:core"
-  xmlns:jsl="jelly:jsl"
-  xmlns:x="jelly:xml"
-  xmlns:define="jelly:define"
-  xmlns:util="jelly:util"
-  xmlns:junit="junit"
-  xmlns:doc="doc"
-  trim="false">
-
-  <!-- This needs to be instantiated here to be available in the template matches -->
-  <j:useBean var="mavenTool" class="org.apache.maven.MavenTool"/>
-  <j:useBean var="numbers" class="java.text.DecimalFormat"/>
-  <j:useBean var="htmlescape" class="org.apache.velocity.anakia.Escape"/>
-  <j:useBean var="formatter" class="org.apache.maven.DVSLFormatter"/>
-  <j:useBean var="fileutil" class="org.apache.velocity.texen.util.FileUtil"/>
-  <j:useBean var="pathtool" class="org.apache.maven.util.DVSLPathTool"/>
-
-  
-  <define:taglib uri="junit">
-    <define:tag name="nav">
-      <p>
-        [
-        <a href="#Summary">summary</a>]
-        [
-        <a href="#Package List">package list</a>]
-        [
-        <a href="#Test Cases">test cases</a>]
-      </p>
-    </define:tag>
-    
-    <define:tag name="testSuiteHeader">
-      <tr>
-        <th>Name</th>
-        <th>Tests</th>
-        <th>Errors</th>
-        <th>Failures</th>
-        <th>Time(s)</th>
-      </tr>
-    </define:tag>
-    
-    <define:tag name="testCaseHeader">
-      <tr>
-        <th>Name</th>
-        <th>Status</th>
-        <th>Type</th>
-        <th>Time(s)</th>
-      </tr>
-    </define:tag>
-    
-    <define:tag name="displayFailure">
-      <j:choose>
-        <j:when test="${current.attribute('message') != null}">
-          <code>
-            ${htmlescape.getText(current.attribute('message').value)}
-          </code>
-        </j:when>
-        <j:otherwise>
-          N/A
-        </j:otherwise>
-      </j:choose>
-    </define:tag>
-  </define:taglib>
-
-  <jsl:template match="testsuites">
-    <document>
-
-      <properties>
-        <title>JUnit Test Results</title>
-      </properties>
-
-      <body>
-        <section name="Summary">
-          <junit:nav/>
-          <j:set var="testCount"><x:expr select="sum(testsuite/@tests)"/></j:set>
-          <j:set var="errorCount"><x:expr select="sum(testsuite/@errors)"/></j:set>
-          <j:set var="failureCount"><x:expr select="sum(testsuite/@failures)"/></j:set>
-          <j:set var="timeCount"><x:expr select="sum(testsuite/@time)"/></j:set>
-          <j:set var="successRate"><x:expr select="($testCount - ($failureCount + $errorCount)) div $testCount"/></j:set>
-          <table>
-            <tr>
-              <th>Tests</th>
-              <th>Errors</th>
-              <th>Failures</th>
-              <th>Success rate</th>
-              <th>Time(s)</th>
-            </tr>
-            <tr>
-              <td>
-                <doc:formatAsNumber string="${testCount}" pattern="0"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${errorCount}" pattern="0"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${failureCount}" pattern="0"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${successRate}" pattern="0.00%"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${timeCount}" pattern="0.00"/>
-              </td>
-            </tr>
-          </table>
-          <p>
-            Note:
-            <i>failures</i> are anticipated and checked for with
-            assertions while
-            <i>errors</i> are unanticipated.
-          </p>
-        </section>
-
-        <section name="Package List">
-          <junit:nav/>
-          <table>
-            <!--
-            <junit:testSuiteHeader/>
-            -->
-            <x:set var="testsuites" select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]"/>
-            <j:forEach var="testsuite" items="${testsuites}">
-              <x:set var="errorCount" select="sum($testsuite/@errors)"/>
-              <x:set var="failureCount" select="sum($testsuite/@failures)"/>
-          
-              <j:if test="${errorCount.intValue() gt 0 or failureCount.intValue() gt 0}">
-              
-              <j:set var="package" value="${testsuite.attribute('package').value}"/>
-              <x:set var="quotedPackage" select='"${package}"'/>
-              <j:set var="testCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@tests)"/></j:set>
-              <j:set var="errorCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@errors)"/></j:set>
-              <j:set var="failureCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@failures)"/></j:set>
-              <j:set var="timeCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@time)"/></j:set>
-    
-              <tr>
-                <td>
-                  <a href="#${package}">${package}</a>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${testCount}" pattern="0"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${failureCount}" pattern="0"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${errorCount}" pattern="0"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${timeCount}" pattern="0.00"/>
-                </td>
-              </tr>
-              </j:if>
-            </j:forEach>
-            
-          </table>
-          <p>
-            Note: package statistics are not computed recursively, they only
-            sum up all of its testsuites numbers.
-          </p>
-
-          <j:forEach var="testsuite" items="${testsuites}">
-            <j:set var="package" value="${testsuite.attribute('package').value}"/>
-            <x:set var="quotedPackage" select='"${package}"'/>
-            <x:set var="errorCount" select="sum($testsuite/@errors)"/>
-            <x:set var="failureCount" select="sum($testsuite/@failures)"/>
-          
-            <j:if test="${errorCount.intValue() gt 0 or failureCount.intValue() gt 0}">
-            
-            <a name="${package}"></a>
-            <subsection name="${package}">
-              <table>
-                <x:forEach var="test" select="/testsuites/testsuite[./@package = $quotedPackage]">
-                  <x:set var="errorCount" select="count($test/testcase/error)"/>
-                  <x:set var="failureCount" select="count($test/testcase/failure)"/>
-          
-                  <j:if test="${errorCount.intValue() gt 0 or failureCount.intValue() gt 0}">
-            
-                  <tr>
-                    <td>
-                      <a href="#${test.attribute('name').value}">${testcase.attribute("classname").value}.${test.attribute('name').value}</a>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${test.attribute('tests').value}" pattern="0"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${test.attribute('errors').value}" pattern="0"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${test.attribute('failures').value}" pattern="0"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${test.attribute('time').value}" pattern="0.000"/>
-                    </td>
-                  </tr>
-                  </j:if>
-                </x:forEach>
-              </table>
-            </subsection>
-            </j:if>
-          </j:forEach>
-        </section>
-
-        <section name="Test Cases">
-          <junit:nav/>
-    
-          <x:set var="testsuites" select="./testsuite"/>
-          <j:forEach var="testsuite" items="${testsuites}">
-            <!--j:set var="errorCount"><x:expr select="count($testsuite/testcase/error)"/></j:set-->
-            <x:set var="errorCount" select="count($testsuite/testcase/error)"/>
-            <x:set var="failureCount" select="count($testsuite/testcase/failure)"/>
-          
-            <j:if test="${errorCount.intValue() gt 0 or failureCount.intValue() gt 0}">
-            <a name="${testsuite.attribute('name').value}"></a>
-            <subsection name="${testsuite.attribute('name').value}">
-              <table>
-               
-                ## test can even not be started at all (failure to load the class)
-                ## so report the error directly
-                ##
-
-                <x:set var="errors" select="$testsuite/error"/>
-                <j:forEach var="error" items="${errors}">
-                  <tr>
-                    <td colspan="4">
-                      <junit:displayFailure current="${error}"/>
-                    </td>
-                  </tr>
-                </j:forEach>
-    
-    
-    
-                <x:set var="testcases" select="$testsuite/testcase"/>
-                <j:forEach var="testcase" items="${testcases}">
-                  <j:set var="failure" value="${testcase.selectSingleNode('failure')}"/>
-                  <j:set var="error" value="${testcase.selectSingleNode('error')}"/>
-                  <j:if test="${!empty(failure) or !empty(error)}">
-                  <tr>
-                    <td>[${testcase.attribute("classname").value}]${testcase.attribute("name").value}</td>
-                    <j:choose>
-                      <j:when test="${failure != null}">
-                        <td style="width: 60px; color: red; font-weight: bold">Failure</td>
-                      </j:when>
-                      <j:when test="${error != null}">
-                        <td style="width: 60px; color: red; font-weight: bold">Error</td>
-                      </j:when>
-                      <j:otherwise>
-                        <td style="width: 60px;">Success</td>
-                      </j:otherwise>
-                    </j:choose>
-                    <j:choose>
-                      <j:when test="${testcase.attribute('time') != null}">
-                        <td width="60px">
-                          <doc:formatAsNumber string="${testcase.attribute('time').value}" pattern="0.00"/>
-                        </td>
-                      </j:when>
-                      <j:otherwise>
-                        <td width="60px"></td>
-                      </j:otherwise>
-                    </j:choose>
-                  </tr>
-                    <j:choose>
-                      <j:when test="${failure != null}">
-                        <tr>
-                          <td colspan="3" style="padding-left: 50px">
-                            <junit:displayFailure current="${failure}"/>
-                          </td>
-                       </tr>
-                      </j:when>
-                      <j:when test="${error != null}">
-                        <tr>
-                          <td colspan="3" style="padding-left: 50px">
-                            <junit:displayFailure current="${error}"/>
-                          </td>
-                        </tr>
-                      </j:when>
-                    </j:choose>
-                  </j:if>
-                </j:forEach>
-              </table>
-            </subsection>
-            </j:if>
-          </j:forEach>
-        </section>
-      </body>
-    </document>
-  </jsl:template>
-</jsl:stylesheet>
diff --git a/maven/plugin-resources/junitRpt.jsl b/maven/plugin-resources/junitRpt.jsl
deleted file mode 100644
index 8bf3270..0000000
--- a/maven/plugin-resources/junitRpt.jsl
+++ /dev/null
@@ -1,375 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-
-<jsl:stylesheet
-  select="$doc"
-  xmlns:j="jelly:core"
-  xmlns:jsl="jelly:jsl"
-  xmlns:x="jelly:xml"
-  xmlns:define="jelly:define"
-  xmlns:util="jelly:util"
-  xmlns:junit="junit"
-  xmlns:doc="doc"
-  trim="false">
-
-  <j:useBean var="stringTool" class="org.apache.maven.util.StringTool"/>
-  
-  <define:taglib uri="junit">
-    <define:tag name="nav">
-      <p>
-        [<a href="#Summary">summary</a>]
-        [<a href="#Package List">package list</a>]
-        [<a href="#Test Cases">test cases</a>]
-      </p>
-    </define:tag>
-    
-    <define:tag name="testSuiteHeader">
-      <tr>
-        <th>Name</th>
-        <th>Tests</th>
-        <th>Errors</th>
-        <th>Failures</th>
-        <th>Time(s)</th>
-      </tr>
-    </define:tag>
-    
-    <define:tag name="testCaseHeader">
-      <tr>
-        <th>Name</th>
-        <th>Status</th>
-        <th>Type</th>
-        <th>Time(s)</th>
-      </tr>
-    </define:tag>
-    
-    <define:tag name="displayFailure">
-      <j:choose>
-        <j:when test="${current.attribute('message') != null}">
-          <code>
-${current.attributeValue('message')}
-          </code>
-        </j:when>
-        <j:otherwise>
-          N/A
-        </j:otherwise>
-      </j:choose>
-    </define:tag>
-    
-    <!-- defined here to easily change images globally or set up relative paths -->
-    <define:tag name="displayImage">
-      <j:choose>
-        <j:when test="${kind == 'failure'}">
-          <img src="images/icon_warning_sml.gif" width="15" height="15" alt="Failure" />
-        </j:when>
-        <j:when test="${kind == 'error'}">
-          <img src="images/icon_error_sml.gif" width="15" height="15" alt="Error" />
-        </j:when>
-        <j:when test="${kind == 'success'}">
-          <img src="images/icon_success_sml.gif" width="15" height="15" alt="Success" />
-        </j:when>
-      </j:choose>
-    </define:tag>
-    
-  </define:taglib>
-
-  <jsl:template match="testsuites">
-    <document>
-
-      <properties>
-        <title>JUnit Test Results</title>
-      </properties>
-
-      <body>
-        <section name="Summary">
-          <junit:nav/>
-          <j:set var="testCount"><x:expr select="sum(testsuite/@tests)"/></j:set>
-          <j:set var="errorCount"><x:expr select="sum(testsuite/@errors)"/></j:set>
-          <j:set var="failureCount"><x:expr select="sum(testsuite/@failures)"/></j:set>
-          <j:set var="timeCount"><x:expr select="sum(testsuite/@time)"/></j:set>
-          <j:set var="successRate"><x:expr select="($testCount - ($failureCount + $errorCount)) div $testCount"/></j:set>
-          <table summary="JUnit result summary">
-          	<thead>
-           	 <tr>
-				  <th>Tests</th>
-				  <th>Errors</th>
-				  <th>Failures</th>
-				  <th>Success rate</th>
-				  <th>Time(s)</th>
-				</tr>
-            </thead>
-            <tr>
-              <td>
-                <doc:formatAsNumber string="${testCount}" pattern="0"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${errorCount}" pattern="0"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${failureCount}" pattern="0"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${successRate}" pattern="0.00%"/>
-              </td>
-              <td>
-                <doc:formatAsNumber string="${timeCount}" pattern="0.00"/>
-              </td>
-            </tr>
-          </table>
-          <p>
-            Note:
-            <i>failures</i> are anticipated and checked for with
-            assertions while
-            <i>errors</i> are unanticipated.
-          </p>
-          <p>
-          	<h3><a href="../testng-output/index.html">TestNG Default Report</a></h3>Click [ <a href="../testng-output/index.html">here</a> ] to see the default report output.
-          </p>
-        </section>
-
-        <section name="Package List">
-          <junit:nav/>
-          <table summary="Package List">
-          	<thead>
-            	<tr>
-				  <th>Package</th><th>Tests</th><th>Errors</th><th>Failures</th><th>Success Rate</th><th>Time</th>
-				</tr>
-            </thead>
-            <x:set var="testsuites" select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]"/>
-            <j:forEach var="testsuite" items="${testsuites}">
-              <j:set var="package" value="${testsuite.attribute('package').value}"/>
-              <x:set var="quotedPackage" select='"${package}"'/>
-              <j:set var="testCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@tests)"/></j:set>
-              <j:set var="errorCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@errors)"/></j:set>
-              <j:set var="failureCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@failures)"/></j:set>
-              <j:set var="timeCount"><x:expr select="sum(./testsuite[./@package = $quotedPackage]/@time)"/></j:set>
-              <j:set var="successRate"><x:expr select="($testCount - ($failureCount + $errorCount)) div $testCount"/></j:set>    
-              <tr>
-                <td>
-                  <a href="#${package}">${package}</a>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${testCount}" pattern="0"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${errorCount}" pattern="0"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${failureCount}" pattern="0"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${successRate}" pattern="0.00%"/>
-                </td>
-                <td>
-                  <doc:formatAsNumber string="${timeCount}" pattern="0.00"/>
-                </td>
-              </tr>
-            </j:forEach>
-          </table>
-          <p>
-            Note: package statistics are not computed recursively, they only
-            sum up all of its testsuites numbers.
-          </p>
-
-          <j:forEach var="testsuite" items="${testsuites}">
-            <j:set var="package" value="${testsuite.attribute('package').value}"/>
-            <x:set var="quotedPackage" select='"${package}"'/>
-
-            <a name="${package}"></a>
-            <subsection name="${package}">
-              <table summary="Tests for ${package}">
-              	<thead>
-                	<tr>
-					  <th colspan="2">TestNG Test Name</th><th>Tests</th><th>Errors</th><th>Failures</th><th>Success Rate</th><th>Time</th>
-					</tr>
-                </thead>
-                <x:forEach var="test" select="/testsuites/testsuite[./@package = $quotedPackage]">
-                  <j:set var="testCount"><x:expr select="${test.attribute('tests').value}" /></j:set>
-                  <j:set var="errorCount"><x:expr select="${test.attribute('errors').value}" /></j:set>
-                  <j:set var="failureCount"><x:expr select="${test.attribute('failures').value}" /></j:set>
-                  <j:set var="successRate"><x:expr select="($testCount - ($failureCount + $errorCount)) div $testCount"/></j:set>
-                  <tr>
-            <td>
-              <j:choose>
-                <j:when test="${errorCount != 0}">
-                  <junit:displayImage kind="error" />
-                </j:when>
-                <j:when test="${failureCount != 0}">
-                  <junit:displayImage kind="failure" />
-                </j:when>
-                <j:otherwise>
-                  <junit:displayImage kind="success" />
-                </j:otherwise>
-              </j:choose>
-              
-						</td> 
-						
-                    <td>
-                      <a href="#${test.attribute('name').value}">${test.attribute('name').value}</a>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${testCount}" pattern="0"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${errorCount}" pattern="0"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${failureCount}" pattern="0"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${successRate}" pattern="0.00%"/>
-                    </td>
-                    <td>
-                      <doc:formatAsNumber string="${test.attribute('time').value}" pattern="0.000"/>
-                    </td>
-                  </tr>
-                </x:forEach>
-              </table>
-            </subsection>
-          </j:forEach>
-        </section>
-
-        <section name="Test Cases">
-          <junit:nav/>
-    
-          <x:set var="testsuites" select="./testsuite"/>
-          <j:forEach var="testsuite" items="${testsuites}">
-            <a name="${testsuite.attribute('name').value}"></a>
-            <subsection name="${testsuite.attribute('name').value}">
-              <table summary="Testsuite: ${testsuite.attribute('name').value}">
-
-                <x:set var="errors" select="$testsuite/error"/>
-                <j:forEach var="error" items="${errors}">
-                  <tr>
-                    <td colspan="4">
-                      <junit:displayFailure current="${error}"/>
-                    </td>
-                  </tr>
-                </j:forEach>
-    
-    
-    
-                <x:set var="testcases" select="$testsuite/testcase"/>
-                <j:forEach var="testcase" items="${testcases}">
-                  <j:set var="failure" value="${testcase.selectSingleNode('failure')}"/>
-                  <j:set var="error" value="${testcase.selectSingleNode('error')}"/>
-                  <j:set var="testname" value="${testcase.attribute('name').value}"/>
-                  <tr>
-
-                    <td style="width:20px">      	
-                    <j:choose>
-                      <j:when test="${failure != null}">
-                        <a href="#${testname}"><junit:displayImage kind="failure" /></a>
-                      </j:when>
-                      <j:when test="${error != null}">
-                        <a href="#${testname}"><junit:displayImage kind="error" /></a>
-                      </j:when>
-                      <j:otherwise>
-                        <junit:displayImage kind="success" />
-                      </j:otherwise>
-                    </j:choose>
-                    
-                    </td>             
-                              
-                    <td style="width:98%">[${testcase.attribute("classname").value}]${testcase.attribute("name").value}</td>
-                    
-                    <td style="width:60px">
-                      <j:if test="${testcase.attribute('time') != null}">
-                        <doc:formatAsNumber string="${testcase.attribute('time').value}" pattern="0.00"/>
-                      </j:if>
-                    </td>
-                  </tr>
-                    <j:choose>
-                      <j:when test="${failure != null}">
-                        <tr>
-                          <td colspan="3" style="padding-left: 20px">
-                            <junit:displayFailure current="${failure}"/>
-                          </td>
-                       </tr>
-                      </j:when>
-                      <j:when test="${error != null}">
-                        <tr>
-                          <td colspan="3" style="padding-left: 20px">
-                            <junit:displayFailure current="${error}"/>
-                          </td>
-                        </tr>
-                      </j:when>
-                    </j:choose>
-                </j:forEach>
-              </table>
-            </subsection>
-          </j:forEach>
-        </section>
-       
-       <x:set var="errorCheck" select="/testsuites/testsuite/testcase/*" />
-       <j:if test="${!empty(errorCheck)}">
-        
-          <section name="Failure details">
-          
-              <x:forEach var="testcase" select="/testsuites/testsuite/testcase" trim="false">
-                <j:set var="failure" value="${testcase.selectSingleNode('failure')}"/>
-                <j:set var="error" value="${testcase.selectSingleNode('error')}"/>
-                <j:if test="${empty(failure)}">
-                  <j:set var="failure" value="${error}"/>
-                </j:if>
-                
-                <j:if test="${!empty(failure)}">
-                  <j:set var="testname" value="${testcase.attribute('classname').value}.${testcase.attribute('name').value}()"/>      
-                  <table summary="Failure details for ${testname}">
-                    <thead>
-                      <tr>
-                        <td style="width:20px">
-                          <j:choose>
-                            <j:when test="${!empty(error)}">
-                              <junit:displayImage kind="error" />
-                            </j:when>
-                            <j:otherwise>
-                              <junit:displayImage kind="failure"/>
-                            </j:otherwise>
-                          </j:choose>
-                        </td>
-                        <td style="width:96%"><strong><a name="${testname}">${testname}</a></strong></td>
-                      </tr>
-                    </thead>
-                    <tbody>
-                      <tr>
-                        <td colspan="2"><junit:displayFailure current="${failure}"/></td>
-                      </tr>
-                      <tr>
-                        <td colspan="2">
-                          <!-- removing stacktrace generated by maven -->
-                          <!-- no way to preserve newlines, jelly strips out everything -->
-<code>
-${stringTool.splitStringAtLastDelim(stringTool.splitStringAtLastDelim(failure.text, 'at org.apache.commons.jelly.tags.ant.AntTag.doTag').get(0),
-'at sun.reflect.NativeMethodAccessorImpl.invoke0(').get(0)}
-</code>
-                        </td>
-                      </tr>
-                    </tbody>
-                  </table>
-                </j:if>
-                
-              </x:forEach>
-        </section>
-        </j:if>
-        
-      </body>
-    </document>
-  </jsl:template>
-</jsl:stylesheet>
diff --git a/maven/plugin.jelly b/maven/plugin.jelly
deleted file mode 100755
index 5e86a15..0000000
--- a/maven/plugin.jelly
+++ /dev/null
@@ -1,88 +0,0 @@
-<project xmlns:j="jelly:core"
-    xmlns:ant="jelly:ant" 
-    xmlns:doc="doc"
-    xmlns:maven="jelly:maven"
-    xmlns:util="jelly:util" >
-
-
-  <!-- ================================================================== -->
-  <!-- Registration                                                       -->
-  <!-- ================================================================== -->
-  <goal name="maven-testng-plugin:register">
-      <doc:registerReport 
-        name="TestNG Tests"
-        pluginName="maven-testng-plugin"
-        description="Report on the results of the TestNG framework tests."
-        link="testng-report"/>
-   </goal>
-
-   <goal name="maven-testng-plugin:deregister">
-      <doc:deregisterReport name="TestNG Tests"/>
-   </goal>
-
-
-   <goal name="testng-init">
-	  <ant:taskdef classpath="${plugin.getDependencyClasspath()}" 
-	               name="testng" 
-	               classname="org.testng.TestNGAntTask" />
-  </goal>
-
-  <goal name="testng" prereqs="testng-init,test:compile">
-
-      <ant:mkdir dir="${maven.testng.output.dir}"/>
-
-      <testng fork="yes"
-	          outputDir="${maven.testng.output.dir}"
-	          sourceDir="${maven.testng.source.dir}"
-	          classpath="${maven.build.dir}/test-classes/;${maven.build.dir}/classes/">
-			
-		  <xmlfileset dir="${maven.testng.suitexml.dir}" 
-		              includes="${maven.testng.suitexml.name}"/>
-	
-		  <ant:classpath>
-		      <ant:path refid="maven.dependency.classpath"/>
-		  </ant:classpath>
-      </testng>
-  </goal>
-
-
-
-	<!-- ================= TestNG JUnitreport Goal ======================== -->
-	
-	<goal name="maven-testng-junit-report" prereqs="testng">   
-	    <ant:mkdir dir="${maven.testng.report.dir}"/>
-            
-	    <!-- There seems to be an issue with transformer properties- this forces the correct one -->
-	    <!-- for Java 1.5 and others below it. This error should be avoided:  -->
-	    <!-- Provider com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl not found  -->	    
-	    <j:choose>
-		    <j:when test="${systemScope['java.runtime.version'].startsWith('1.5')}">
-			${systemScope.setProperty('javax.xml.transform.TransformerFactory','com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl')}	
-		    </j:when>
-		    <j:otherwise>
-			${systemScope.setProperty('javax.xml.transform.TransformerFactory','org.apache.xalan.processor.TransformerFactoryImpl')}
-		   </j:otherwise>
-           </j:choose>
-
-	    <junitreport todir="${maven.testng.report.dir}" tofile="TestNG-Suites.xml">
-	        <fileset dir="${maven.testng.output.dir}">
-	            <include name="*.xml"/>
-	        </fileset>
-	        <report format="noframes" todir="${maven.testng.report.dir}"/>
-	        <ant:classpath>
-	          <ant:path refid="maven.dependency.classpath"/>  
-	          <ant:pathelement path="plugin.getDependencyClasspath()"/>
-	        </ant:classpath>
-	    </junitreport>
-	</goal>
-
-	<!-- ==== TestNG Stylize the JUnitReports to Maven Styles Goal ======= -->
-	
-	<goal name="testng:junit-report" prereqs="maven-testng-junit-report">
-	    <doc:jsl input="${maven.testng.report.dir}/TestNG-Suites.xml"
-	            output="testng-report.xml"
-	            stylesheet="${plugin.resources}/junitRpt.jsl"
-	            outputMode="xml"
-	            prettyPrint="true"/>
-	</goal>
-</project>
\ No newline at end of file
diff --git a/maven/plugin.properties b/maven/plugin.properties
deleted file mode 100755
index edba5d5..0000000
--- a/maven/plugin.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-maven.testng.suitexml.name=testng.xml
-maven.testng.suitexml.dir=${basedir}/test/conf
-maven.testng.output.dir=${maven.build.dir}/testng-output
-maven.testng.source.dir=${basedir}/test/java/
-maven.testng.report.dir=${maven.build.dir}/testngJunitReport
diff --git a/maven/project.properties b/maven/project.properties
deleted file mode 100755
index 6a90a54..0000000
--- a/maven/project.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-maven.junit.fork=yes
-maven.repo.remote = http://www.vanwardtechnologies.com/repository/,http://www.ibiblio.org/maven/
-maven.test.search.classdir = true
diff --git a/maven/project.xml b/maven/project.xml
deleted file mode 100755
index 5283aec..0000000
--- a/maven/project.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<project>
-    <pomVersion>3</pomVersion>
-    <id>maven-testng-plugin</id>
-    <name>TestNG Maven Plugin</name>
-    <currentVersion>1.2</currentVersion>
-    <organization>
-        <name>testng.org</name>
-    </organization>
-    <inceptionYear>2005</inceptionYear>
-    <package>org.testng</package>
-
-    <logo/>
-    <description>TestNG Plugin</description>
-    <shortDescription>TestNG Plugin</shortDescription>
-    <url>http://www.testng.org</url>
-    <issueTrackingUrl/>
-    <siteAddress/>
-    <siteDirectory/>
-    <distributionDirectory/>
-    <repository>
-        <connection/>
-        <url/>
-    </repository>
-    <mailingLists/>
-    <developers>
-      <developer>
-        <name>Andrew Glover</name>
-        <id>aglover</id>
-        <email>aglover AT vanwardtechnologies DOT com</email>
-        <organization>Vanward Technologies</organization>
-      </developer>
-      <developer>
-        <name>Fred Olivieri</name>
-        <id>folivieri</id>
-        <email></email>
-        <organization>Quest Software</organization>
-      </developer>
-    </developers>
-
-    <dependencies>
-
-		<dependency>
-		  <groupId>testng</groupId>
-		  <artifactId>testng-1.4</artifactId>		 
-		  <jar>testng-4.4-jdk14.jar</jar>
-		</dependency>
-		
-		<dependency>
-		  <groupId>testng</groupId>
-		  <artifactId>testng-1.5</artifactId>		     
-		  <jar>testng-4.4-jdk15.jar</jar>
-		</dependency>
-
-	    <dependency>
-	      <groupId>commons-jelly</groupId>
-	      <artifactId>commons-jelly-tags-jsl</artifactId>
-	      <version>20030211.143151</version>
-	    </dependency>
-    
-	    <dependency>
-	      <groupId>commons-jelly</groupId>
-	      <artifactId>commons-jelly-tags-xml</artifactId>
-	      <version>20030211.142705</version>
-	      <url>http://jakarta.apache.org/commons/jelly/libs/xml/</url>
-	    </dependency>
-    
-	     <dependency>
-	        <groupId>xalan</groupId>
-	        <artifactId>xalan</artifactId>
-	        <version>2.6.0</version>
-	        <type>jar</type>
-	        <properties>
-	            <classloader>root</classloader>
-	        </properties>
-	     </dependency>
-
-	</dependencies>
-
-    <build>
-        <sourceDirectory>src/java</sourceDirectory>
-        <unitTestSourceDirectory>test/java</unitTestSourceDirectory>
-        <integrationUnitTestSourceDirectory/>
-        <aspectSourceDirectory></aspectSourceDirectory>
-        <unitTest/>
-             
-        <resources>
-            <resource>
-                <includes>
-                    <include>*.jelly</include>
-                    <include>*.xml</include>
-                    <include>*.properties</include>
-                </includes>
-            </resource>
-        </resources>
-    </build>
-</project>
diff --git a/resources/testng.css b/resources/testng.css
deleted file mode 100644
index 3904800..0000000
--- a/resources/testng.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.invocation-failed,  .test-failed  { background-color: #DD0000; }
-.invocation-percent, .test-percent { background-color: #006600; }
-.invocation-passed,  .test-passed  { background-color: #00AA00; }
-.invocation-skipped, .test-skipped { background-color: #CCCC00; }
-
-.main-page {
-  font-size: x-large;
-}
-
diff --git a/sandbox/src/org/testng/DefaultTestContext.java b/sandbox/src/org/testng/DefaultTestContext.java
deleted file mode 100644
index 544a799..0000000
--- a/sandbox/src/org/testng/DefaultTestContext.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.testng;
-
-import java.util.Collection;
-import java.util.Date;
-
-
-/**
- * This class/interface 
- */
-public class DefaultTestContext implements ITestContext {
-
-  /**
-   * @see org.testng.ITestContext#getAllTestMethods()
-   */
-  public ITestNGMethod[] getAllTestMethods() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getEndDate()
-   */
-  public Date getEndDate() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getExcludedGroups()
-   */
-  public String[] getExcludedGroups() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getExcludedMethods()
-   */
-  public Collection<ITestNGMethod> getExcludedMethods() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getFailedButWithinSuccessPercentageTests()
-   */
-  public IResultMap getFailedButWithinSuccessPercentageTests() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getFailedConfigurations()
-   */
-  public IResultMap getFailedConfigurations() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getFailedTests()
-   */
-  public IResultMap getFailedTests() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getHost()
-   */
-  public String getHost() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getIncludedGroups()
-   */
-  public String[] getIncludedGroups() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getName()
-   */
-  public String getName() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getOutputDirectory()
-   */
-  public String getOutputDirectory() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getPassedConfigurations()
-   */
-  public IResultMap getPassedConfigurations() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getPassedTests()
-   */
-  public IResultMap getPassedTests() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getSkippedConfigurations()
-   */
-  public IResultMap getSkippedConfigurations() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getSkippedTests()
-   */
-  public IResultMap getSkippedTests() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getStartDate()
-   */
-  public Date getStartDate() {
-    return null;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getSuite()
-   */
-  public ISuite getSuite() {
-    return null;
-  }
-
-}
diff --git a/sandbox/src/org/testng/ITestResult.java b/sandbox/src/org/testng/ITestResult.java
deleted file mode 100644
index 42ef7af..0000000
--- a/sandbox/src/org/testng/ITestResult.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-
-/**
- * This class describes the result of a test.
- *
- * @author Cedric Beust, May 2, 2004
- * @since May 2, 2004
- * @version $Revision: 150 $, $Date: 2006-09-22 23:20:00 +0000 (Fri, 22 Sep 2006) $
- * 
- */
-public interface ITestResult extends Serializable {
-  
-  //
-  // Test status
-  //
-  public static final int SUCCESS = 1;
-  public static final int FAILURE = 2;
-  public static final int SKIP = 3;
-  public static final int SUCCESS_PERCENTAGE_FAILURE = 4;
-  public static final int STARTED= 16; 
-  
-  /**
-   * @return The status of this result, using one of the constants
-   * above.
-   */
-  public int getStatus();
-  public void setStatus(int status);
-  
-  /**
-   * @return The test method this result represents.
-   */
-  public ITestNGMethod getMethod();
-  
-  /**
-   * @return The parameters this method was invoked with.
-   */
-  public Object[] getParameters();
-  public void setParameters(Object[] parameters);
-
-  /**
-   * @return The test class used this object is a result for.
-   */
-  public IClass getTestClass();
-  
-  /**
-   * @return The throwable that was thrown while running the
-   * method, or null if no exception was thrown.
-   */  
-  public Throwable getThrowable();
-  public void setThrowable(Throwable throwable);
-  
-  /**
-   * @return the start date for this test, in milliseconds.
-   */
-  public long getStartMillis();
-  
-  /**
-   * @return the end date for this test, in milliseconds.
-   */
-  public long getEndMillis();
-  public void setEndMillis(long millis);
-  
-  /**
-   * @return The name of this TestResult, typically identical to the name
-   * of the method.
-   */
-  public String getName();
-  
-  /**
-   * @return true if if this test run is a SUCCESS
-   */
-  public boolean isSuccess();
-  
-  /**
-   * @return The host where this suite was run, or null if it was run locally.  The
-   * returned string has the form:  host:port
-   */
-  public String getHost();
-
-}
diff --git a/sandbox/src/org/testng/TestClass.java b/sandbox/src/org/testng/TestClass.java
deleted file mode 100644
index a121b40..0000000
--- a/sandbox/src/org/testng/TestClass.java
+++ /dev/null
@@ -1,240 +0,0 @@
-package org.testng;
-
-import org.testng.internal.ConfigurationMethod;
-import org.testng.internal.NoOpTestClass;
-import org.testng.internal.RunInfo;
-import org.testng.internal.TestNGMethod;
-import org.testng.internal.annotations.IAnnotationFinder;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class represents a test class:
- * - The test methods
- * - The configuration methods (test and method)
- * - The class file
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TestClass extends NoOpTestClass implements ITestClass {
-	/* generated */
-	private static final long serialVersionUID = -8077917128278361294L;
-  transient private IAnnotationFinder m_annotationFinder = null;
-  // The Strategy used to locate test methods (TestNG, JUnit, etc...)
-  transient private ITestMethodFinder m_testMethodFinder = null;
-
-  transient protected Map<Class, Class> m_testClasses = new HashMap<Class, Class>();
-  transient protected Map<Class, Object[]> m_instanceMap = new HashMap<Class, Object[]>();
-  
-  private IClass m_iClass = null;
-  private TestRunner m_testRunner = null;
-  private RunInfo m_runInfo = null;
-  
-  public TestClass(IClass cls, 
-                   String testName,
-                   ITestMethodFinder testMethodFinder, 
-                   IAnnotationFinder annotationFinder,
-                   RunInfo runInfo, 
-                   TestRunner testRunner) {
-    init(cls, testName, testMethodFinder, annotationFinder, runInfo, testRunner);
-  }
-  
-  public TestClass(IClass cls, TestClass tc) {
-    init(cls, 
-         tc.getTestName(), 
-         tc.getTestMethodFinder(), 
-         tc.getAnnotationFinder(),
-         tc.getRunInfo(), 
-         tc.getTestRunner());
-  }
-  
-  public String getTestName() {
-    return m_testName;
-  }
-  
-  public IAnnotationFinder getAnnotationFinder() {
-    return m_annotationFinder;
-  }
-  
-  private void init(IClass cls, 
-                    String testName,
-                    ITestMethodFinder testMethodFinder, 
-                    IAnnotationFinder annotationFinder,
-                    RunInfo runInfo, 
-                    TestRunner testRunner) {
-    log(3, "Creating TestClass for " + cls);
-    m_iClass = cls;
-    m_testClass = cls.getRealClass();
-    m_testName = testName;
-    m_runInfo = runInfo;
-    m_testRunner = testRunner;
-    m_testMethodFinder = testMethodFinder;
-    m_annotationFinder = annotationFinder;
-//    m_testMethodFinder.setTestClass(this);
-    initMethods();
-    initTestClassesAndInstances();
-  }
-  
-  private void initTestClassesAndInstances() {
-    //
-    // TestClasses and instances
-    //
-   Object[] instances = getInstances(false);
-    for (Object instance : instances) {
-      Class cls = instance.getClass();
-      if (null == m_testClasses.get(cls)) {
-        m_testClasses.put(cls, cls);
-        m_instanceMap.put(cls, instances);
-      }
-    }
-    
-  }
-    
-  public Object[] getInstances(boolean create) {
-    return m_iClass.getInstances(create);
-  }
-  
-  public long[] getInstanceHashCodes() {
-    return m_iClass.getInstanceHashCodes();
-  }
-  
-  public int getInstanceCount() {
-    return m_iClass.getInstanceCount();
-  }
-  
-  public void addInstance(Object instance) {
-    m_iClass.addInstance(instance);
-  }
-
-  private void initMethods() {
-    ITestNGMethod[] methods = m_testMethodFinder.getTestMethods(m_testClass);
-    m_testMethods = createTestMethods(methods);
-
-    m_beforeSuiteMethods = ConfigurationMethod
-        .createSuiteConfigurationMethods(m_testMethodFinder.getBeforeSuiteMethods(m_testClass),
-                                         m_annotationFinder,
-                                         true);
-    m_afterSuiteMethods = ConfigurationMethod
-        .createSuiteConfigurationMethods(m_testMethodFinder.getAfterSuiteMethods(m_testClass), 
-                                         m_annotationFinder,
-                                         false); 
-
-
-    m_beforeTestConfMethods = ConfigurationMethod 
-        .createTestConfigurationMethods(m_testMethodFinder.getBeforeTestConfigurationMethods(m_testClass), 
-                                        m_annotationFinder,
-                                        true);
-    m_afterTestConfMethods = ConfigurationMethod
-        .createTestConfigurationMethods(m_testMethodFinder.getAfterTestConfigurationMethods(m_testClass), 
-                                        m_annotationFinder,
-                                        false);
-
-    m_beforeClassMethods = ConfigurationMethod
-        .createClassConfigurationMethods(m_testMethodFinder.getBeforeClassMethods(m_testClass), 
-                                         m_annotationFinder,
-                                         true);
-    m_afterClassMethods = ConfigurationMethod
-        .createClassConfigurationMethods(m_testMethodFinder.getAfterClassMethods(m_testClass), 
-                                         m_annotationFinder,
-                                         false);
-    
-    m_beforeGroupsMethods = ConfigurationMethod
-    .createBeforeConfigurationMethods(m_testMethodFinder.getBeforeGroupsConfigurationMethods(m_testClass), 
-                                          m_annotationFinder,
-                                          true);
-    m_afterGroupsMethods = ConfigurationMethod
-    .createAfterConfigurationMethods(m_testMethodFinder.getAfterGroupsConfigurationMethods(m_testClass),
-                                          m_annotationFinder,
-                                          false); 
-    
-
-
-    m_beforeTestMethods = ConfigurationMethod
-        .createTestMethodConfigurationMethods(m_testMethodFinder.getBeforeTestMethods(m_testClass), 
-                                              m_annotationFinder,
-                                              true);
-    m_afterTestMethods = ConfigurationMethod
-        .createTestMethodConfigurationMethods(m_testMethodFinder.getAfterTestMethods(m_testClass),
-                                              m_annotationFinder,
-                                              false);
-    
-  }
-  
-  /**
-   * Create the test methods that belong to this class (rejects
-   * all those that belong to a different class).
-   */
-  private ITestNGMethod[] createTestMethods(ITestNGMethod[] methods) {
-    List<ITestNGMethod> vResult = new ArrayList<ITestNGMethod>();
-    for (ITestNGMethod tm : methods) {
-      Method m = tm.getMethod();
-      if (m.getDeclaringClass().isAssignableFrom(m_testClass)) {
-        log(3, "Adding method " + tm + " on TestClass " + m_testClass);
-        vResult.add(new TestNGMethod(/* tm.getRealClass(), */ m, m_annotationFinder));
-      }
-      else {
-        log(3, "Rejecting method " + tm + " for TestClass " + m_testClass);
-      }
-    }
-    
-    ITestNGMethod[] result = vResult.toArray(new ITestNGMethod[vResult.size()]);
-    return result;
-  }
-  
-  public TestRunner getTestRunner() {
-    return m_testRunner;
-  }
-  
-  public RunInfo getRunInfo() {
-    return m_runInfo;
-  }
-    
-  public ITestMethodFinder getTestMethodFinder() {
-    return m_testMethodFinder;
-  }
-  
-  private void log(int level, String s) {
-    if (TestRunner.getVerbose() >= level) {
-      ppp(s);
-    }
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[TestClass] " + s);
-  }
-
-//  public Class[] getTestClasses() {
-//    return m_testClasses.keySet().toArray(new Class[m_testClasses.size()]);
-//  }
-  
-  public void dump() {
-    ppp("\n======\nTESTCLASS: " + m_testClass.getName());
-    for (ITestNGMethod m : m_beforeClassMethods) {
-      ppp("BeforeClass : " + m);
-    }
-    for (ITestNGMethod m : m_beforeTestMethods) {
-      ppp("BeforeMethod:\t" + m);
-    }
-    for (ITestNGMethod m : m_testMethods) {
-      ppp("Test        :\t\t" + m);
-    }
-    for (ITestNGMethod m : m_afterTestMethods) {
-      ppp("AfterMethod :\t" + m);
-    }
-    for (ITestNGMethod m : m_afterClassMethods) {
-      ppp("AfterClass  : " + m);
-    }
-    ppp("\n======\n");
-  }
-  
-  @Override
-  public String toString() {
-    return "[TestClass " + m_testClass + "]";
-  }
-  
-}
\ No newline at end of file
diff --git a/sandbox/src/org/testng/internal/BaseTestMethod.java b/sandbox/src/org/testng/internal/BaseTestMethod.java
deleted file mode 100644
index 164a02d..0000000
--- a/sandbox/src/org/testng/internal/BaseTestMethod.java
+++ /dev/null
@@ -1,612 +0,0 @@
-package org.testng.internal;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.IClass;
-import org.testng.ITestClass;
-import org.testng.ITestNGMethod;
-import org.testng.TestClass;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.ITestOrConfiguration;
-import org.testng.internal.thread.IAtomicInteger;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-/**
- * Superclass to represent both @Test and @Configuration methods.
- */
-public abstract class BaseTestMethod implements ITestNGMethod {
-  /** The test class on which the test method was found. Note that this is not 
-   * necessarily the declaring class. */
-  protected ITestClass m_testClass;
-  private IClass m_iClass;
-  
-  protected final transient Class m_methodClass;
-  protected final transient Method m_method;
-  protected String m_id = "";
-  protected long m_date = System.currentTimeMillis();
-  protected final transient IAnnotationFinder m_annotationFinder;
-  protected String[] m_groups = {};
-  protected String[] m_groupsDependedUpon = {};
-  protected String[] m_methodsDependedUpon = {};
-  protected String[] m_beforeGroups = {};
-  protected String[] m_afterGroups = {};
-  private boolean m_isAlwaysRun;
-  
-  // Methods are not serialized, but we can serialize their hashCode  
-  private final String m_signature;
-  private final String m_methodName;
-  // If a depended group is not found
-  private String m_missingGroup;
-  private String m_description = null;
-  protected IAtomicInteger m_currentInvocationCount = ThreadUtil.createAtomicInteger(0);
-  private int m_parameterInvocationCount = 1;
-  
-  /**
-   * Constructs a <code>BaseTestMethod</code> TODO cquezel JavaDoc.
-   *
-   * @param method
-   * @param annotationFinder
-   */
-  public BaseTestMethod(Method method, IAnnotationFinder annotationFinder) {
-    m_methodClass = method.getDeclaringClass();
-    m_method = method;
-    m_methodName = m_method.getName();
-    m_annotationFinder = annotationFinder;
-    m_signature = initSignature();
-  }
-
-  private void initTestClass() {
-    
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAlwaysRun() {
-    return m_isAlwaysRun;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param alwaysRun
-   */
-  protected void setAlwaysRun(boolean alwaysRun) {
-    m_isAlwaysRun = alwaysRun;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public Class getRealClass() {
-    return m_methodClass;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public ITestClass getTestClass() {
-    return m_testClass;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setTestClass(ITestClass tc) {
-//    assert null != tc;
-    Assert.assertNotNull(tc, "ITestClass cannot be null");
-    if(!m_method.getDeclaringClass().isAssignableFrom(tc.getRealClass())) {
-      TestClass casted= (TestClass) tc;
-      m_iClass= new ClassImpl(m_method.getDeclaringClass(), null, new HashMap<Class, IClass>(),
-          new XmlTest(new XmlSuite()), m_annotationFinder);
-      m_testClass= new TestClass(m_iClass, casted.getTestName(), casted.getTestMethodFinder(),  m_annotationFinder, 
-          casted.getRunInfo() , casted.getTestRunner());
-
-    }
-    else {
-//    Assert.assertTrue(m_method.getDeclaringClass().isAssignableFrom(tc.getRealClass()),
-//        "Method declaration class is not assignable from the " + tc.getRealClass());
-//    if (! tc.getRealClass().equals(m_method.getDeclaringClass())) {
-//      assert m_method.getDeclaringClass().isAssignableFrom(tc.getRealClass()) :
-//        "\nMISMATCH : " + tc.getRealClass() + " " + m_method.getDeclaringClass();
-//    }
-      m_testClass = tc;
-    }
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param o
-   * @return
-   */
-  public int compareTo(Object o) {
-    int result = -2;
-    Class thisClass = getRealClass();
-    Class otherClass = ((ITestNGMethod) o).getRealClass();
-    if (thisClass.isAssignableFrom(otherClass)) 
-      result = -1;
-    else if (otherClass.isAssignableFrom(thisClass)) 
-      result = 1;
-    else if (equals(o)) 
-      result = 0;
-    
-    return result;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public Method getMethod() {
-    return m_method;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getMethodName() {
-    return m_methodName;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public Object[] getInstances() {
-    return m_testClass.getInstances(false);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public long[] getInstanceHashCodes() {
-    return m_testClass.getInstanceHashCodes();
-  }
-
-  /**
-   * {@inheritDoc}
-   * @return the addition of groups defined on the class and on this method.
-   */
-  public String[] getGroups() {
-    return m_groups;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getGroupsDependedUpon() {
-    return m_groupsDependedUpon;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getMethodsDependedUpon() {
-    return m_methodsDependedUpon;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isTest() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeSuiteConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterSuiteConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeTestConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterTestConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeGroupsConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterGroupsConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeClassConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterClassConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeMethodConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterMethodConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public long getTimeOut() {
-    return 0L;
-  }
-  
-  /**
-   * {@inheritDoc}  
-   * @return the number of times this method needs to be invoked.
-   */
-  public int getInvocationCount() {
-    return 1;
-  }
-  
-  /**
-   * No-op.
-   */
-  public void setInvocationCount(int counter) {
-  }
-
-  /**
-   * {@inheritDoc} Default value for successPercentage.
-   */
-  public int getSuccessPercentage() {
-    return 100;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getId() {
-    return m_id;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setId(String id) {
-    m_id = id;
-  }
-  
-
-  /**
-   * {@inheritDoc} 
-   * @return Returns the date.
-   */
-  public long getDate() {
-    return m_date;
-  }
-
-  /**
-   * {@inheritDoc} 
-   * @param date The date to set.
-   */
-  public void setDate(long date) {
-    m_date = date;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean canRunFromClass(IClass testClass) {
-    return m_methodClass.isAssignableFrom(testClass.getRealClass());
-  }
-
-  /**
-   * {@inheritDoc} Compares two BaseTestMethod using the test class then the associated 
-   * Java Method. 
-   */
-  @Override
-  public boolean equals(Object obj) {
-    // TODO CQ document why this try block exists.
-    try {
-      BaseTestMethod other = (BaseTestMethod) obj;
-      
-      boolean isEqual = m_testClass == null ? other.m_testClass == null
-          : m_testClass.getRealClass().equals(other.m_testClass.getRealClass());
-      
-      return isEqual && m_method.equals(other.m_method);
-    }
-    catch(Exception ex) {
-      return false;
-    }
-  }
-  
-  /**
-   * {@inheritDoc} This implementation returns the associated Java Method's hash code.
-   * @Return the associated Java Method's hash code. 
-   */
-  @Override
-  public int hashCode() {
-    return m_method.hashCode();
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param annotationClass
-   */
-  protected void initGroups(Class annotationClass) {
-    //
-    // Init groups
-    //
-    {
-      ITestOrConfiguration annotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod(),
-          annotationClass);
-      ITestOrConfiguration classAnnotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod().getDeclaringClass(),
-          annotationClass);
-      
-      setGroups(getStringArray(null != annotation ? annotation.getGroups() : null, 
-          null != classAnnotation ? classAnnotation.getGroups() : null));    
-    }
-    
-    //
-    // Init groups depended upon
-    //
-    {
-      ITestOrConfiguration annotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod(),
-          annotationClass);
-      ITestOrConfiguration classAnnotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod().getDeclaringClass(),
-          annotationClass);
-  
-      setGroupsDependedUpon(
-          getStringArray(null != annotation ? annotation.getDependsOnGroups() : null, 
-          null != classAnnotation ? classAnnotation.getDependsOnGroups() : null));
-      
-      String[] methodsDependedUpon =
-        getStringArray(null != annotation ? annotation.getDependsOnMethods() : null, 
-        null != classAnnotation ? classAnnotation.getDependsOnMethods() : null);
-      // Qualify these methods if they don't have a package
-      for (int i = 0; i < methodsDependedUpon.length; i++) {
-        String m = methodsDependedUpon[i];
-        if (m.indexOf(".") < 0) {
-          methodsDependedUpon[i] = 
-            MethodHelper.calculateMethodCanonicalName(m_methodClass, methodsDependedUpon[i]);
-        }
-      }
-      setMethodsDependedUpon(methodsDependedUpon);
-    }
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  protected IAnnotationFinder getAnnotationFinder() {
-    return m_annotationFinder;
-  }
-  
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  protected IClass getIClass() {
-    return m_testClass;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  protected String getSignature() {
-    return m_signature;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  private String initSignature() {
-    Method m = getMethod();
-    String cls = m.getDeclaringClass().getName();
-    StringBuffer result = new StringBuffer(cls + "." + m.getName() + "(");
-    int i = 0;
-    for (Class p : m.getParameterTypes()) {
-      if (i++ > 0) result.append(", ");
-      result.append(p.getName());
-    }
-    result.append(")");
-
-    return result.toString();
-    
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public String toString() {
-    return getSignature();
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param methodArray
-   * @param classArray
-   * @return
-   */
-  protected String[] getStringArray(String[] methodArray, String[] classArray) {
-    List<String> vResult = new ArrayList<String>();
-    if (null != methodArray) {
-      for (String m : methodArray) {
-        vResult.add(m);
-      }
-    }
-    if (null != classArray) {
-      for (String m : classArray) {
-        vResult.add(m);
-      }
-    }
-    
-    return vResult.toArray(new String[vResult.size()]);
-  }
-
-  protected void setGroups(String[] groups) {
-    m_groups = groups;
-  }
-  
-  protected void setGroupsDependedUpon(String[] groups) {
-    m_groupsDependedUpon = groups;
-  }
-  
-  protected void setMethodsDependedUpon(String[] methods) {
-    m_methodsDependedUpon = methods;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void addMethodDependedUpon(String method) {
-    String[] newMethods = new String[m_methodsDependedUpon.length + 1];
-    newMethods[0] = method;
-    for (int i =1; i < newMethods.length; i++) {
-      newMethods[i] = m_methodsDependedUpon[i - 1];
-    }
-    m_methodsDependedUpon = newMethods;
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[BaseTestMethod] " + s);
-  }
-
-  /** Compares two ITestNGMethod by date. */
-  public static final Comparator DATE_COMPARATOR = new Comparator() {
-    public int compare(Object o1, Object o2) {
-      try {
-        ITestNGMethod m1 = (ITestNGMethod) o1;
-        ITestNGMethod m2 = (ITestNGMethod) o2;
-        return (int) (m1.getDate() - m2.getDate());
-      }
-      catch(Exception ex) {
-        return 0; // TODO CQ document this logic
-      }
-    }
-  };
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getMissingGroup() {
-    return m_missingGroup;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setMissingGroup(String group) {
-    m_missingGroup = group;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public int getThreadPoolSize() {
-    return 0;
-  }
-
-  /**
-   * No-op.
-   * @param threadPoolSize
-   */
-  public void setThreadPoolSize(int threadPoolSize) {
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param description
-   */
-  public void setDescription(String description) {
-    m_description = description;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getDescription() {
-    return m_description;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getBeforeGroups() {
-    return m_beforeGroups;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getAfterGroups() {
-    return m_afterGroups;
-  }
-  
-  public void incrementCurrentInvocationCount() {
-    m_currentInvocationCount.incrementAndGet();
-  }
-  
-  public int getCurrentInvocationCount() {
-    return m_currentInvocationCount.get();
-  }
-
-  public void setParameterInvocationCount(int n) {
-    m_parameterInvocationCount = n;
-  }
-  
-  public int getParameterInvocationCount() {
-    return m_parameterInvocationCount;
-  }  
-  
-  public abstract ITestNGMethod clone();
-}
diff --git a/sandbox/src/org/testng/internal/TestNGMethodFinder.java b/sandbox/src/org/testng/internal/TestNGMethodFinder.java
deleted file mode 100644
index 827a780..0000000
--- a/sandbox/src/org/testng/internal/TestNGMethodFinder.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package org.testng.internal;
-
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-
-import org.testng.ITestMethodFinder;
-import org.testng.ITestNGMethod;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.IConfiguration;
-import org.testng.internal.annotations.ITest;
-import org.testng.internal.mix.RequiresConfiguration;
-
-/**
- * The default strategy for finding test methods:  look up
- * annotations @Test in front of methods.
- *
- * @author Cedric Beust, May 3, 2004
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- * @param <ITestNGMetthod>
- */
-public class TestNGMethodFinder<ITestNGMetthod> implements ITestMethodFinder {
-  private static final int BEFORE_SUITE = 1;
-  private static final int AFTER_SUITE = 2;
-  private static final int BEFORE_TEST = 3;
-  private static final int AFTER_TEST = 4;
-  private static final int BEFORE_CLASS = 5;
-  private static final int AFTER_CLASS = 6;
-  private static final int BEFORE_TESTMETHOD = 7;
-  private static final int AFTER_TESTMETHOD = 8;
-  private static final int BEFORE_GROUPS = 9;
-  private static final int AFTER_GROUPS = 10;
-    
-  private RunInfo m_runInfo = null;
-  private IAnnotationFinder m_annotationFinder = null;
-
-  public TestNGMethodFinder(RunInfo runInfo,
-                            IAnnotationFinder annotationFinder)
-  {
-    m_runInfo = runInfo;
-    m_annotationFinder = annotationFinder;
-  }
-
-  public ITestNGMethod[] getTestMethods(Class clazz) {
-    return AnnotationHelper.findMethodsWithAnnotation(
-        clazz, ITest.class, m_annotationFinder);
-  }
-
-  public ITestNGMethod[] getBeforeClassMethods(Class cls) {
-    return findAllConfiguration(cls, BEFORE_CLASS);
-//    return findConfiguration(cls, false, true, false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getAfterClassMethods(Class cls) {
-    return findConfiguration(cls, AFTER_CLASS);
-//    return findConfiguration(cls, false /* method */, false, /* before */
-//                             false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getBeforeTestMethods(Class cls) {
-    return findConfiguration(cls, BEFORE_TESTMETHOD);
-//    return findConfiguration(cls, true /* method */, true /* before */,
-//                             false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getAfterTestMethods(Class cls) {
-    return findConfiguration(cls, AFTER_TESTMETHOD);
-//    return findConfiguration(cls, true /* method */, false /* before */,
-//                             false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getBeforeSuiteMethods(Class cls) {
-    return findConfiguration(cls, BEFORE_SUITE);
-//    return findConfiguration(cls,
-//                             false /*method */, true /* before */,
-//                             true /* suite */);
-  }
-
-  public ITestNGMethod[] getAfterSuiteMethods(Class cls) {
-    return findConfiguration(cls, AFTER_SUITE);
-//    return findConfiguration(cls, false /* method */, false /* before */,
-//                             true /* suite */);
-  }
-
-  public ITestNGMethod[] getBeforeTestConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, BEFORE_TEST);
-  }
-
-  public ITestNGMethod[] getAfterTestConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, AFTER_TEST);
-  }
-  
-  public ITestNGMethod[] getBeforeGroupsConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, BEFORE_GROUPS);    
-  }
-
-  public ITestNGMethod[] getAfterGroupsConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, AFTER_GROUPS);        
-  }
-
-  private ITestNGMethod[] findAllConfiguration(final Class clazz, final int configurationType) {
-    RequiresConfiguration reqConf= (RequiresConfiguration) clazz.getAnnotation(RequiresConfiguration.class);
-    List<ITestNGMethod> result= new ArrayList<ITestNGMethod>();
-    if(null != reqConf) {
-      Class[] confMixins= reqConf.value();
-      for(Class cls: confMixins) {
-        result.addAll(Arrays.asList(findConfiguration(cls, configurationType)));
-      }
-    }
-    result.addAll(Arrays.asList(findConfiguration(clazz, configurationType)));
-    
-    return result.toArray(new ITestNGMethod[result.size()]);
-  }
-  
-  private ITestNGMethod[] findConfiguration(final Class clazz, final int configurationType) {
-    List<ITestNGMethod> vResult = new ArrayList<ITestNGMethod>();
-    
-    Set<Method> methods = ClassHelper.getAvailableMethods(clazz);
-
-    for(Method m : methods) {
-      IConfiguration configuration = AnnotationHelper.findConfiguration(m_annotationFinder, m);
-
-      if(null == configuration) {
-        continue;
-      }
-      
-      boolean create = false;
-      boolean isBeforeSuite = false;
-      boolean isAfterSuite = false;
-      boolean isBeforeTest = false;
-      boolean isAfterTest = false;
-      boolean isBeforeClass = false;
-      boolean isAfterClass = false;
-      boolean isBeforeTestMethod = false;
-      boolean isAfterTestMethod = false;
-      String[] beforeGroups = null;
-      String[] afterGroups = null;
-      
-      switch(configurationType) {
-        case BEFORE_SUITE:
-          create = configuration.getBeforeSuite();
-          isBeforeSuite = true;
-          break;
-        case AFTER_SUITE:
-          create = configuration.getAfterSuite();
-          isAfterSuite = true;
-          break;
-        case BEFORE_TEST:
-          create = configuration.getBeforeTest();
-          isBeforeTest = true;
-          break;
-        case AFTER_TEST:
-          create = configuration.getAfterTest();
-          isAfterTest = true;
-          break;
-        case BEFORE_CLASS:
-          create = configuration.getBeforeTestClass();
-          isBeforeClass = true;
-          break;
-        case AFTER_CLASS:
-          create = configuration.getAfterTestClass();
-          isAfterClass = true;
-          break;
-        case BEFORE_TESTMETHOD:
-          create = configuration.getBeforeTestMethod();
-          isBeforeTestMethod = true;
-          break;
-        case AFTER_TESTMETHOD:
-          create = configuration.getAfterTestMethod();
-          isAfterTestMethod = true;
-          break;
-        case BEFORE_GROUPS:
-          beforeGroups = configuration.getBeforeGroups();
-          create = beforeGroups.length > 0;
-          isBeforeTestMethod = true;
-          break;
-        case AFTER_GROUPS:
-          afterGroups = configuration.getAfterGroups();
-          create = afterGroups.length > 0;
-          isBeforeTestMethod = true;
-          break;
-      }
-    
-      if(create) {
-        addConfigurationMethod(clazz, 
-                               vResult, 
-                               m, 
-                               isBeforeSuite, 
-                               isAfterSuite, 
-                               isBeforeTest, 
-                               isAfterTest, 
-                               isBeforeClass, 
-                               isAfterClass, 
-                               isBeforeTestMethod, 
-                               isAfterTestMethod,
-                               beforeGroups,
-                               afterGroups);
-      }
-    }
-
-    ITestNGMethod[] unorderedResult = vResult.toArray(new ITestNGMethod[vResult.size()]);
-
-    List<ITestNGMethod> excludedMethods = new ArrayList<ITestNGMethod>();
-    boolean unique = 
-      configurationType == BEFORE_SUITE || configurationType == AFTER_SUITE;
-    ITestNGMethod[] tmResult = MethodHelper.collectAndOrderConfigurationMethods(unorderedResult,
-                                                                                m_runInfo,
-                                                                                m_annotationFinder,
-                                                                                unique,
-                                                                                excludedMethods);
-
-    return tmResult;
-  }
-   
-
-
-  private void addConfigurationMethod(Class clazz,
-                                      List<ITestNGMethod> results,
-                                      Method method,
-                                      boolean isBeforeSuite,
-                                      boolean isAfterSuite,
-                                      boolean isBeforeTest,
-                                      boolean isAfterTest,
-                                      boolean isBeforeClass,
-                                      boolean isAfterClass,
-                                      boolean isBeforeTestMethod,
-                                      boolean isAfterTestMethod,
-                                      String[] beforeGroups,
-                                      String[] afterGroups) 
-  {
-    if(method.getDeclaringClass().isAssignableFrom(clazz)) {
-      ITestNGMethod confMethod = new ConfigurationMethod(method,
-                                                         m_annotationFinder,
-                                                         isBeforeSuite,
-                                                         isAfterSuite,
-                                                         isBeforeTest,
-                                                         isAfterTest,
-                                                         isBeforeClass,
-                                                         isAfterClass,
-                                                         isBeforeTestMethod,
-                                                         isAfterTestMethod,
-                                                         beforeGroups,
-                                                         afterGroups);
-      results.add(confMethod);
-    }
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[DefaultTestMethodFinder] " + s);
-  }
-  
-
-}
diff --git a/sandbox/src/org/testng/internal/mix/RequiresConfiguration.java b/sandbox/src/org/testng/internal/mix/RequiresConfiguration.java
deleted file mode 100644
index 556d2c2..0000000
--- a/sandbox/src/org/testng/internal/mix/RequiresConfiguration.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.testng.internal.mix;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-
-/**
- * This class/interface 
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.TYPE)
-public @interface RequiresConfiguration {
-  public Class[] value();
-}
diff --git a/sandbox/src/org/testng/internal/mix/TestConfiguration.java b/sandbox/src/org/testng/internal/mix/TestConfiguration.java
deleted file mode 100644
index 8d121c4..0000000
--- a/sandbox/src/org/testng/internal/mix/TestConfiguration.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.testng.internal.mix;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-
-/**
- * A marker annotation for injecting @Configuration methods.
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.FIELD)
-public @interface TestConfiguration {
-}
diff --git a/sandbox/test/org/testng/internal/DefaultInstanceFactory.java b/sandbox/test/org/testng/internal/DefaultInstanceFactory.java
deleted file mode 100644
index c821391..0000000
--- a/sandbox/test/org/testng/internal/DefaultInstanceFactory.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package org.testng.internal;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
-import org.testng.IClass;
-import org.testng.TestNGException;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.IParameters;
-import org.testng.xml.XmlTest;
-
-
-/**
- * This class/interface 
- */
-public class DefaultInstanceFactory implements IInstanceFactory {
-  public Object createInstance(
-      Class declaringClass, 
-      Map<Class, IClass> classes, 
-      XmlTest xmlTest, 
-      IAnnotationFinder finder) 
-  {
-    Object result = null;
-
-    try {
-      //
-      // Any annotated constructor?
-      //
-      Constructor constructor = findAnnotatedConstructor(finder, declaringClass);
-      if (null != constructor) {
-        IParameters annotation = (IParameters) finder.findAnnotation(constructor, IParameters.class);
-
-        String[] parameterNames = annotation.getValue();
-        Object[] parameters = Parameters.createParameters(constructor,
-                                                          "@Parameters",
-                                                          parameterNames,
-                                                          xmlTest.getParameters(),
-                                                          xmlTest.getSuite());
-        result = constructor.newInstance(parameters);
-      }
-
-      //
-      // No, just try to instantiate the parameterless constructor (or the one
-      // with a String)
-      //
-      else {
-
-        // If this class is a (non-static) nested class, the constructor contains a hidden
-        // parameter of the type of the enclosing class
-        Class[] parameterTypes = new Class[0];
-        Object[] parameters = new Object[0];
-        Class ec = getEnclosingClass(declaringClass);
-        boolean isStatic = 0 != (declaringClass.getModifiers() & Modifier.STATIC);
-
-        // Only add the extra parameter if the nested class is not static
-        if ((null != ec) && !isStatic) {
-          parameterTypes = new Class[] { ec };
-
-          // Create an instance of the enclosing class so we can instantiate
-          // the nested class (actually, we reuse the existing instance).
-          IClass enclosingIClass = classes.get(ec);
-          Object[] enclosingInstances = null;
-          if (null != enclosingIClass) {
-            enclosingInstances = enclosingIClass.getInstances(false);
-            if ((null == enclosingInstances) || (enclosingInstances.length == 0)) {
-              Object o = ec.newInstance();
-              enclosingIClass.addInstance(o);
-              enclosingInstances = new Object[] { o };
-            }
-          }
-          else {
-            enclosingInstances = new Object[] { ec.newInstance() };
-          }
-          Object enclosingClassInstance = enclosingInstances[0];
-
-          // Utils.createInstance(ec, classes, xmlTest, finder);
-          parameters = new Object[] { enclosingClassInstance };
-        } // isStatic
-        Constructor ct = declaringClass.getDeclaredConstructor(parameterTypes);
-        result = ct.newInstance(parameters);
-      }
-    }
-    catch (TestNGException ex) {
-      // We need to pass this along
-      throw ex;
-    }
-    catch (InvocationTargetException ex) {
-      throw new TestNGException("Cannot instantiate class " + declaringClass.getName(), ex);
-    }
-    catch (IllegalAccessException ex) {
-      result = tryOtherConstructor(declaringClass);
-    }
-    catch (NoSuchMethodException ex) {
-      result = tryOtherConstructor(declaringClass);
-    }
-    catch (InstantiationException ex) {
-      result = tryOtherConstructor(declaringClass);
-    }
-    catch (Throwable cause) {
-      // Something else went wrong when running the constructor
-      throw new TestNGException("An error occured while instantiating class " + declaringClass.getName(), cause);
-    }
-
-    return result;
-  }
-
-  /**
-   * Class.getEnclosingClass() only exists on JDK5, so reimplementing it
-   * here.
-   */
-  private static Class getEnclosingClass(Class declaringClass) {
-    Class result = null;
-
-    String className = declaringClass.getName();
-    int index = className.indexOf("$");
-    if (index != -1) {
-      String ecn = className.substring(0, index);
-      try {
-        result = Class.forName(ecn);
-      }
-      catch (ClassNotFoundException e) {
-        e.printStackTrace();
-      }
-    }
-
-    return result;
-  }
-  
-  private static Object tryOtherConstructor(Class declaringClass) {
-    Object result = null;
-    try {
-      Constructor ctor = declaringClass.getConstructor(new Class[] { String.class });
-      result = ctor.newInstance(new Object[] { "Default test name" });
-    }
-    catch (Exception e) {
-      String message = e.getMessage();
-      if ((message == null) && (e.getCause() != null)) {
-        message = e.getCause().getMessage();
-      }
-      String error = "Could not create an instance of class " + declaringClass
-      + ((message != null) ? (": " + message) : "")
-        + ".\nPlease make sure it has a constructor that accepts either a String or no parameter.";
-      throw new TestNGException(error);
-    }
-
-    return result;
-  }
-  
-  /**
-   * Find the best constructor given the parameters found on the annotation
-   */
-  private static Constructor findAnnotatedConstructor(IAnnotationFinder finder, Class declaringClass) {
-    Constructor[] constructors = declaringClass.getDeclaredConstructors();
-
-    for (int i = 0; i < constructors.length; i++) {
-      Constructor result = constructors[i];
-      IParameters annotation = (IParameters) finder.findAnnotation(result, IParameters.class);
-
-      if (null != annotation) {
-        String[] parameters = annotation.getValue();
-        Class[] parameterTypes = result.getParameterTypes();
-        if (parameters.length != parameterTypes.length) {
-          throw new TestNGException("Parameter count mismatch:  " + result + "\naccepts "
-                                    + parameterTypes.length
-                                    + " parameters but the @Test annotation declares "
-                                    + parameters.length);
-        }
-        else {
-          return result;
-        }
-      }
-    }
-
-    return null;
-  }
-}
diff --git a/sandbox/test/org/testng/internal/IInstanceFactory.java b/sandbox/test/org/testng/internal/IInstanceFactory.java
deleted file mode 100644
index eb37fb7..0000000
--- a/sandbox/test/org/testng/internal/IInstanceFactory.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.testng.internal;
-
-import java.util.Map;
-
-import org.testng.IClass;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-
-/**
- * This class/interface 
- */
-public interface IInstanceFactory {
-  Object createInstance(
-      Class declaringClass,
-      Map<Class, IClass> classes,
-      XmlTest xmlTest,
-      IAnnotationFinder finder);
-}
diff --git a/sandbox/test/org/testng/internal/mix/ConfigurationMixin.java b/sandbox/test/org/testng/internal/mix/ConfigurationMixin.java
deleted file mode 100644
index f0871b3..0000000
--- a/sandbox/test/org/testng/internal/mix/ConfigurationMixin.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.testng.internal.mix;
-
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-
-/**
- * This class/interface
- */
-public class ConfigurationMixin {
-  @BeforeClass
-  public void beforeClass() {
-    System.out.println("beforeClass");
-  }
-
-  @AfterClass
-  public void afterClass() {
-    System.out.println("afterClass");
-  }
-
-  @BeforeMethod
-  public void beforeMethod() {
-    System.out.println("beforeMethod");
-  }
-
-  @AfterMethod
-  public void afterMethod() {
-    System.out.println("afterMethod");
-  }
-}
diff --git a/sandbox/test/org/testng/internal/mix/InjectConfigurationMixinTest.java b/sandbox/test/org/testng/internal/mix/InjectConfigurationMixinTest.java
deleted file mode 100644
index fd2c62a..0000000
--- a/sandbox/test/org/testng/internal/mix/InjectConfigurationMixinTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng.internal.mix;
-
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
- at RequiresConfiguration(ConfigurationMixin.class)
-public class InjectConfigurationMixinTest {
-  public InjectConfigurationMixinTest() {
-    System.out.println("<clinit>");
-  }
-  
-  @TestConfiguration
-  private ConfigurationMixin m_mixin= new ConfigurationMixin();
-  
-  @Test
-  public void dummyTest() {
-    System.out.println("dummy test");
-  }
-}
diff --git a/spring/.classpath b/spring/.classpath
deleted file mode 100644
index d401428..0000000
--- a/spring/.classpath
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/common"/>
-	<classpathentry kind="src" path="src/jdk15"/>
-	<classpathentry kind="src" path="sandbox/src"/>
-	<classpathentry kind="lib" path="3rdparty/commons-logging-1.0.4.jar"/>
-	<classpathentry kind="lib" path="3rdparty/spring-beans-1.2.3.jar"/>
-	<classpathentry kind="lib" path="3rdparty/spring-context-1.2.3.jar"/>
-	<classpathentry kind="lib" path="3rdparty/spring-core-1.2.3.jar"/>
-	<classpathentry kind="lib" path="3rdparty/spring-dao-1.2.3.jar"/>
-	<classpathentry kind="lib" path="3rdparty/spring-jdbc-1.2.3.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/TestNG"/>
-	<classpathentry kind="output" path="z_build"/>
-</classpath>
diff --git a/spring/.cvsignore b/spring/.cvsignore
deleted file mode 100644
index 05344d4..0000000
--- a/spring/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-build
-javadocs
-testng-spring-jdk*
diff --git a/spring/.project b/spring/.project
deleted file mode 100644
index 3b43e1b..0000000
--- a/spring/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>testng-spring</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/spring/LICENSE.txt b/spring/LICENSE.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/spring/LICENSE.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/spring/README.TXT b/spring/README.TXT
deleted file mode 100644
index 7fd4e05..0000000
--- a/spring/README.TXT
+++ /dev/null
@@ -1,23 +0,0 @@
-This area provides spring support classes for testng.
-
-They provide the following services:
-	- Context caching
-	- Dependency Injection for test classes
-	- Inherited instance variables useful for testing.
-	- Transaction management appropriate to tests.
-
-Please refer to http://static.springframework.org/spring/docs/1.2.x/reference/testing.html for more details.
-
-The code here is based on spring's test support classes found in the org.springframework.test package.
-
-Here is a list of the modifications that were performed:
-
-	1- Renamed package name from org.springframework.test to org.testng.spring.test to avoid conflicts.
-	2- Removed dependency on JUnit from AbstractSpringContextTests class
-			Removed import org.junit stuff
-			Removed extends TestCase
-	3- Added javadoc tags in setup and teardown methods of AbstractDependencyInjectionSpringContextTests (jdk14 src tree) 
-			to make it compatible with testng.
-	4- Added annotations in setup and teardown methods of AbstractDependencyInjectionSpringContextTests (jdk15 src tree) 
-			to make it compatible with testng.
-
diff --git a/spring/build.xml b/spring/build.xml
deleted file mode 100644
index 6842fd7..0000000
--- a/spring/build.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<project name="testng-spring" default="both" basedir=".">
-
-	<target name="init">
-		<tstamp />
-    <property file="../build.properties" />
-		<property file="build.properties" />
-		<!-- Settings -->
-		<property name="jdk" value="jdk14" />
-    <property name="optimize" value="false" />
-    <property name="debug" value="true" />
-		
-    <!--  Directories -->
-    <property name="src.dir" location="src" />
-    <property name="topbuild.dir" location="build" />
-    <property name="build.dir" location="${topbuild.dir}/${jdk}" />
-    <property name="classes.dir" location="${build.dir}/classes" />	  	
-    <property name="dependencies.dir" location="3rdparty" />
-		<property name="topjavadocs.dir" location="javadocs" />
-		<property name="javadocs.dir" location="${topjavadocs.dir}/${jdk}" />
-		
-	  	<property name="testng.spring.jar" location="testng-spring-${jdk}.jar" />
-
-		<condition property="source.version" value="1.4"><equals arg1="${jdk}" arg2="jdk14"/></condition>
-		<condition property="source.version" value="1.5"><equals arg1="${jdk}" arg2="jdk15"/></condition>
-	</target>
-	
-	<target name="paths" depends="init">
-		<path id="src.path">
-			<pathelement path="${src.dir}/common" />
-			<pathelement path="${src.dir}/${jdk}" />
-		</path>
-		<path id="compile.path">
-      <fileset dir="${dependencies.dir}">
-        <include name="*.jar" />
-      </fileset>
-			<pathelement path="../testng-${testng.version}-${jdk}.jar" />
-		</path>
-	</target>
-	
-	<target name="compile" depends="paths" description="compile sources">
-		<echo message="                                 -- Compiling ${jdk} sources --" />
-		<mkdir dir="${classes.dir}"/>
-		<javac 	source="${source.version}" target="${source.version}"
-				debug="${debug}" optimize="${optimize}" 
-		        destdir="${classes.dir}">
-			<src refid="src.path" />
-			<classpath refid="compile.path" />
-		</javac>
-	</target>
-
-	<target name="jar" depends="compile">
-		<echo message="                                 -- Creating ${jdk} jar --" />
-		<jar destfile="${testng.spring.jar}">
-			<fileset dir="${classes.dir}" />
-		</jar>
-	</target>
-
-	<target name="javadoc" depends="paths" description="generate api documentation">
-		<echo message="                                 -- Generating javadocs for ${jdk} --" />
-		<mkdir dir="${javadocs.dir}" />
-	    <javadoc destdir="${javadocs.dir}" source="${source.version}" windowtitle="TestNG Spring Support" classpathref="compile.path">
-			<fileset dir="${src.dir}/common" defaultexcludes="yes" includes="**/*.java" />
-	      	<fileset dir="${src.dir}/${jdk}" defaultexcludes="yes" includes="**/*.java" />
-	    </javadoc>
-	</target>
-	
-	<target name="both">
-		<property name="target" value="jar"/>
-		<antcall target="${target}">
-			<param name="jdk" value="jdk14"/>
-		</antcall>
-		<antcall target="${target}">
-			<param name="jdk" value="jdk15"/>
-		</antcall>
-	</target>
-	
-	<target name="dist" description="builds both jdk14 and jdk15 variants">
-		<antcall target="both"><param name="target" value="jar"/></antcall>
-	</target>
-	
-	<target name="javadocs" description="builds both jdk14 and jdk15 javadocs">
-		<antcall target="both"><param name="target" value="javadoc"/></antcall>
-	</target>
-	
-	<target name="all" depends="dist,javadocs" description="build jar files and javadocs" />
-	
-	<target name="clean" depends="paths" description="cleans all">
-		<delete dir="${topbuild.dir}" />
-		<delete dir="${topjavadocs.dir}" />
-		<delete file="testng-spring-jdk14.jar" />
-		<delete file="testng-spring-jdk15.jar" />
-	</target>
-	
-</project>
diff --git a/spring/src/common/org/testng/spring/test/AbstractDependencyInjectionSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractDependencyInjectionSpringContextTests.java
deleted file mode 100644
index dc006e3..0000000
--- a/spring/src/common/org/testng/spring/test/AbstractDependencyInjectionSpringContextTests.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright 2002-2007 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.testng.spring.test;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.LinkedList;
-
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
-
-/**
- * Convenient superclass for tests depending on a Spring context.
- * The test instance itself is populated by Dependency Injection.
- *
- * <p>Really for integration testing, not unit testing.
- * You should <i>not</i> normally use the Spring container
- * for unit tests: simply populate your POJOs in plain JUnit tests!
- *
- * <p>This supports two modes of populating the test:
- * <ul>
- * <li>Via Setter Dependency Injection. Simply express dependencies on objects
- * in the test fixture, and they will be satisfied by autowiring by type.
- * <li>Via Field Injection. Declare protected variables of the required type
- * which match named beans in the context. This is autowire by name,
- * rather than type. This approach is based on an approach originated by
- * Ara Abrahmian. Setter Dependency Injection is the default: set the
- * "populateProtectedVariables" property to true in the constructor to switch
- * on Field Injection.
- * </ul>
- *
- * @author Rod Johnson
- * @author Rob Harrop
- * @author Rick Evans
- * @since 1.1.1
- * @see #setDirty
- * @see #contextKey
- * @see #getContext
- * @see #getConfigLocations
- */
-public abstract class AbstractDependencyInjectionSpringContextTests extends AbstractSingleSpringContextTests {
-
-	/**
-	 * Constant that indicates no autowiring at all.
-	 * @see #setAutowireMode
-	 */
-	public static final int AUTOWIRE_NO = 0;
-
-	/**
-	 * Constant that indicates autowiring bean properties by name.
-	 * @see #setAutowireMode
-	 */
-	public static final int AUTOWIRE_BY_NAME = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME;
-
-	/**
-	 * Constant that indicates autowiring bean properties by type.
-	 * @see #setAutowireMode
-	 */
-	public static final int AUTOWIRE_BY_TYPE = AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE;
-
-
-	private boolean populateProtectedVariables = false;
-
-	private int autowireMode = AUTOWIRE_BY_TYPE;
-
-	private boolean dependencyCheck = true;
-
-	private String[] managedVariableNames;
-
-
-	/**
-	 * Default constructor for AbstractDependencyInjectionSpringContextTests.
-	 */
-	public AbstractDependencyInjectionSpringContextTests() {
-	}
-
-	/**
-	 * Set whether to populate protected variables of this test case.
-	 * Default is "false".
-	 */
-	public final void setPopulateProtectedVariables(boolean populateFields) {
-		this.populateProtectedVariables = populateFields;
-	}
-
-	/**
-	 * Return whether to populate protected variables of this test case.
-	 */
-	public final boolean isPopulateProtectedVariables() {
-		return populateProtectedVariables;
-	}
-
-	/**
-	 * Set the autowire mode for test properties set by Dependency Injection.
-	 * <p>The default is "AUTOWIRE_BY_TYPE". Can be set to "AUTOWIRE_BY_NAME"
-	 * or "AUTOWIRE_NO" instead.
-	 * @see #AUTOWIRE_BY_TYPE
-	 * @see #AUTOWIRE_BY_NAME
-	 * @see #AUTOWIRE_NO
-	 */
-	public final void setAutowireMode(int autowireMode) {
-		this.autowireMode = autowireMode;
-	}
-
-	/**
-	 * Return the autowire mode for test properties set by Dependency Injection.
-	 */
-	public final int getAutowireMode() {
-		return autowireMode;
-	}
-
-	/**
-	 * Set whether or not dependency checking should be performed
-	 * for test properties set by Dependency Injection.
-	 * <p>The default is "true", meaning that tests cannot be run
-	 * unless all properties are populated.
-	 */
-	public final void setDependencyCheck(boolean dependencyCheck) {
-		this.dependencyCheck = dependencyCheck;
-	}
-
-	/**
-	 * Return whether or not dependency checking should be performed
-	 * for test properties set by Dependency Injection.
-	 */
-	public final boolean isDependencyCheck() {
-		return dependencyCheck;
-	}
-
-
-	/**
-	 * Prepare this test instance, injecting dependencies into its
-	 * protected fields and its bean properties.
-	 */
-	protected void prepareTestInstance() throws Exception {
-		injectDependencies();
-	}
-
-	/**
-	 * Inject dependencies into 'this' instance (that is, this test instance).
-	 * <p>The default implementation populates protected variables if the
-	 * {@link #populateProtectedVariables() appropriate flag is set}, else
-	 * uses autowiring if autowiring is switched on (which it is by default).
-	 * <p>You can certainly override this method if you want to totally control
-	 * how dependencies are injected into 'this' instance.
-	 * @throws Exception in the case of any errors
-	 * @see #populateProtectedVariables() 
-	 */
-	private void injectDependencies() throws Exception {
-		if (isPopulateProtectedVariables()) {
-			if (this.managedVariableNames == null) {
-				initManagedVariableNames();
-			}
-			populateProtectedVariables();
-		}
-		else if (getAutowireMode() != AUTOWIRE_NO) {
-			getApplicationContext().getBeanFactory().autowireBeanProperties(
-					this, getAutowireMode(), isDependencyCheck());
-		}
-	}
-
-	private void initManagedVariableNames() throws IllegalAccessException {
-		LinkedList managedVarNames = new LinkedList();
-		Class clazz = getClass();
-
-		do {
-			Field[] fields = clazz.getDeclaredFields();
-			if (logger.isDebugEnabled()) {
-				logger.debug("Found " + fields.length + " fields on " + clazz);
-			}
-
-			for (int i = 0; i < fields.length; i++) {
-				Field field = fields[i];
-				field.setAccessible(true);
-				if (logger.isDebugEnabled()) {
-					logger.debug("Candidate field: " + field);
-				}
-				if (isProtectedInstanceField(field)) {
-					Object oldValue = field.get(this);
-					if (oldValue == null) {
-						managedVarNames.add(field.getName());
-						if (logger.isDebugEnabled()) {
-							logger.debug("Added managed variable '" + field.getName() + "'");
-						}
-					}
-					else {
-						if (logger.isDebugEnabled()) {
-							logger.debug("Rejected managed variable '" + field.getName() + "'");
-						}
-					}
-				}
-			}
-			clazz = clazz.getSuperclass();
-		}
-		while (!clazz.equals(AbstractDependencyInjectionSpringContextTests.class));
-
-		this.managedVariableNames = (String[]) managedVarNames.toArray(new String[managedVarNames.size()]);
-	}
-
-	private boolean isProtectedInstanceField(Field field) {
-		int modifiers = field.getModifiers();
-		return !Modifier.isStatic(modifiers) && Modifier.isProtected(modifiers);
-	}
-
-	private void populateProtectedVariables() throws IllegalAccessException {
-		for (int i = 0; i < this.managedVariableNames.length; i++) {
-			String varName = this.managedVariableNames[i];
-			Object bean = null;
-			try {
-				Field field = findField(getClass(), varName);
-				bean = getApplicationContext().getBean(varName, field.getType());
-				field.setAccessible(true);
-				field.set(this, bean);
-				if (logger.isDebugEnabled()) {
-					logger.debug("Populated field: " + field);
-				}
-			}
-			catch (NoSuchFieldException ex) {
-				if (logger.isWarnEnabled()) {
-					logger.warn("No field with name '" + varName + "'");
-				}
-			}
-			catch (NoSuchBeanDefinitionException ex) {
-				if (logger.isWarnEnabled()) {
-					logger.warn("No bean with name '" + varName + "'");
-				}
-			}
-		}
-	}
-
-	private Field findField(Class clazz, String name) throws NoSuchFieldException {
-		try {
-			return clazz.getDeclaredField(name);
-		}
-		catch (NoSuchFieldException ex) {
-			Class superclass = clazz.getSuperclass();
-			if (superclass != AbstractSpringContextTests.class) {
-				return findField(superclass, name);
-			}
-			else {
-				throw ex;
-			}
-		}
-	}
-
-}
diff --git a/spring/src/common/org/testng/spring/test/AbstractSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractSpringContextTests.java
deleted file mode 100644
index b46a964..0000000
--- a/spring/src/common/org/testng/spring/test/AbstractSpringContextTests.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2002-2006 the original author or authors.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.testng.spring.test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.util.ObjectUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Superclass for TestNG test cases using a Spring context.
- *
- * <p>Maintains a static cache of contexts by key. This has significant performance
- * benefit if initializing the context would take time. While initializing a 
- * Spring context itself is very quick, some beans in a context, such as
- * a LocalSessionFactoryBean for working with Hibernate, may take some time
- * to initialize. Hence it often makes sense to do that initializing once.
- *
- * <p>Any ApplicationContext created by this class will be asked to register a JVM
- * shutdown hook for itself. Unless the context gets closed early, all context
- * instances will be automatically closed on JVM shutdown. This allows for freeing
- * external resources held by beans within the context, e.g. temporary files.
- *
- * <p>Normally you won't extend this class directly but rather extend one of
- * its subclasses.
- *
- * @author Rod Johnson
- * @author Juergen Hoeller
- * @since 1.1.1
- * @see AbstractDependencyInjectionSpringContextTests
- * @see AbstractTransactionalSpringContextTests
- * @see AbstractTransactionalDataSourceSpringContextTests
- */
-public abstract class AbstractSpringContextTests {
-
-  /** Logger available to subclasses */
-  protected final Log logger = LogFactory.getLog(getClass());
-  
-  /**
-   * Map of context keys returned by subclasses of this class, to
-	 * Spring contexts. This needs to be static, as JUnit tests are
-   * destroyed and recreated between running individual test methods.
-   */
-  private static Map contextKeyToContextMap = new HashMap();
-
-
-  /**
-	 * Default constructor for AbstractSpringContextTests.
-   */
-	public AbstractSpringContextTests() {
-	}
-
-	/**
-	 * Explicitly add an ApplicationContext instance under a given key.
-	 * <p>This is not meant to be used by subclasses. It is rather exposed
-	 * for special test suite environments.
-	 * @param key the context key
-	 * @param context the ApplicationContext instance
-	 */
-	public final void addContext(Object key, ConfigurableApplicationContext context) {
-		assert context != null : "ApplicationContext must not be null";
-		contextKeyToContextMap.put(contextKeyString(key), context);
-  }
-
-  /**
-	 * Return whether there is a cached context for the given key.
-	 * @param contextKey the context key
-   */
-	protected final boolean hasCachedContext(Object contextKey) {
-		return contextKeyToContextMap.containsKey(contextKey);
-  }
-
-  /**
-   * Obtain an ApplicationContext for the given key, potentially cached.
-   * @param key the context key
-   * @return the corresponding ApplicationContext instance (potentially cached)
-   */
-  protected final ConfigurableApplicationContext getContext(Object key) throws Exception {
-    String keyString = contextKeyString(key);
-    ConfigurableApplicationContext ctx =
-        (ConfigurableApplicationContext) contextKeyToContextMap.get(keyString);
-    if (ctx == null) {
-      ctx = loadContext(key);
-      ctx.registerShutdownHook();
-      contextKeyToContextMap.put(keyString, ctx);
-    }
-    return ctx;
-  }
-
-  /**
-	 * Mark the context with the given key as dirty. This will cause the
-	 * cached context to be reloaded before the next test case is executed.
-	 * <p>Call this method only if you change the state of a singleton
-	 * bean, potentially affecting future tests.
-   */
-	protected final void setDirty(Object contextKey) {
-		String keyString = contextKeyString(contextKey);
-		ConfigurableApplicationContext ctx =
-				(ConfigurableApplicationContext) contextKeyToContextMap.remove(keyString);
-		if (ctx != null) {
-			ctx.close();
-    }
-  }
-
-
-	/**
-	 * Subclasses can override this to return a String representation of
-	 * their context key for use in logging.
-	 * @param contextKey the context key
-	 */
-	protected String contextKeyString(Object contextKey) {
-		return ObjectUtils.nullSafeToString(contextKey);
-	}
-
-	/**
-	 * Load a new ApplicationContext for the given key.
-	 * <p>To be implemented by subclasses.
-	 * @param key the context key
-	 * @return the corresponding ApplicationContext instance (new)
-	 */
-	protected abstract ConfigurableApplicationContext loadContext(Object key) throws Exception;
-
-}
diff --git a/spring/src/common/org/testng/spring/test/AbstractTransactionalDataSourceSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractTransactionalDataSourceSpringContextTests.java
deleted file mode 100644
index e48614b..0000000
--- a/spring/src/common/org/testng/spring/test/AbstractTransactionalDataSourceSpringContextTests.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright 2002-2007 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.testng.spring.test;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.sql.DataSource;
-
-import org.springframework.core.io.Resource;
-import org.springframework.dao.DataAccessException;
-import org.springframework.dao.DataAccessResourceFailureException;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.util.StringUtils;
-
-/**
- * Subclass of AbstractTransactionalSpringContextTests that adds some convenience
- * functionality for JDBC access. Expects a {@link javax.sql.DataSource} bean
- * to be defined in the Spring application context.
- *
- * <p>This class exposes a {@link org.springframework.jdbc.core.JdbcTemplate}
- * and provides an easy way to delete from the database in a new transaction.
- *
- * @author Rod Johnson
- * @author Juergen Hoeller
- * @since 1.1.1
- * @see #setDataSource(javax.sql.DataSource)
- * @see #getJdbcTemplate()
- */
-public abstract class AbstractTransactionalDataSourceSpringContextTests
-    extends AbstractTransactionalSpringContextTests {
-
-	protected JdbcTemplate jdbcTemplate;
-
-	/**
-	 * Did this test delete any tables? If so, we forbid transaction completion,
-	 * and only allow rollback.
-	 */
-	private boolean zappedTables;
-
-
-	/**
-	 * Default constructor for AbstractTransactionalDataSourceSpringContextTests.
-	 */
-	public AbstractTransactionalDataSourceSpringContextTests() {
-	}
-
-	/**
-	 * Setter: DataSource is provided by Dependency Injection.
-	 */
-	public void setDataSource(DataSource dataSource) {
-		this.jdbcTemplate = new JdbcTemplate(dataSource);
-	}
-
-	/**
-	 * Return the JdbcTemplate that this base class manages.
-	 */
-	public final JdbcTemplate getJdbcTemplate() {
-		return this.jdbcTemplate;
-	}
-
-
-	/**
-	 * Convenient method to delete all rows from these tables.
-	 * Calling this method will make avoidance of rollback by calling
-	 * <code>setComplete()</code> impossible.
-	 * @see #setComplete
-	 */
-	protected void deleteFromTables(String[] names) {
-		for (int i = 0; i < names.length; i++) {
-			int rowCount = this.jdbcTemplate.update("DELETE FROM " + names[i]);
-			if (logger.isInfoEnabled()) {
-				logger.info("Deleted " + rowCount + " rows from table " + names[i]);
-			}
-		}
-		this.zappedTables = true;
-	}
-
-	/**
-	 * Overridden to prevent the transaction committing if a number of tables have been
-	 * cleared, as a defensive measure against accidental <i>permanent</i> wiping of a database.
-	 * @see org.springframework.test.AbstractTransactionalSpringContextTests#setComplete()
-	 */
-	protected final void setComplete() {
-		if (this.zappedTables) {
-			throw new IllegalStateException("Cannot set complete after deleting tables");
-		}
-		super.setComplete();
-	}
-	
-	/**
-	 * Count the rows in the given table
-	 * @param tableName table name to count rows in
-	 * @return the number of rows in the table
-	 */
-	protected int countRowsInTable(String tableName) {
-		return this.jdbcTemplate.queryForInt("SELECT COUNT(0) FROM " + tableName);
-	}
-	
-	
-	/**
-	 * Execute the given SQL script. Will be rolled back by default,
-	 * according to the fate of the current transaction.
-	 * @param sqlResourcePath Spring resource path for the SQL script.
-	 * Should normally be loaded by classpath. There should be one statement
-	 * per line. Any semicolons will be removed.
-	 * <b>Do not use this method to execute DDL if you expect rollback.</b>
-	 * @param continueOnError whether or not to continue without throwing
-	 * an exception in the event of an error
-	 * @throws DataAccessException if there is an error executing a statement
-	 * and continueOnError was false
-	 */
-	protected void executeSqlScript(String sqlResourcePath, boolean continueOnError) throws DataAccessException {
-		if (logger.isInfoEnabled()) {
-			logger.info("Executing SQL script '" + sqlResourcePath + "'");
-		}
-
-		long startTime = System.currentTimeMillis();
-		List statements = new LinkedList();
-		Resource res = getApplicationContext().getResource(sqlResourcePath);
-		try {
-			LineNumberReader lnr = new LineNumberReader(new InputStreamReader(res.getInputStream()));
-			String currentStatement = lnr.readLine();
-			while (currentStatement != null) {
-				currentStatement = StringUtils.replace(currentStatement, ";", "");
-				statements.add(currentStatement);				
-				currentStatement = lnr.readLine();
-			}
-			
-			for (Iterator itr = statements.iterator(); itr.hasNext(); ) {
-				String statement = (String) itr.next();
-				try {
-					int rowsAffected = this.jdbcTemplate.update(statement);
-					if (logger.isDebugEnabled()) {
-						logger.debug(rowsAffected + " rows affected by SQL: " + statement);
-					}
-				}
-				catch (DataAccessException ex) {
-					if (continueOnError) {
-						if (logger.isWarnEnabled()) {
-							logger.warn("SQL: " + statement + " failed", ex);
-						}
-					}
-					else {
-						throw ex;
-					}
-				}
-			}
-			long elapsedTime = System.currentTimeMillis() - startTime;
-			logger.info("Done executing SQL script '" + sqlResourcePath + "' in " + elapsedTime + " ms");
-		}
-		catch (IOException ex) {
-			throw new DataAccessResourceFailureException("Failed to open SQL script '" + sqlResourcePath + "'", ex);
-		}
-	}
-
-}
diff --git a/spring/src/common/org/testng/spring/test/AbstractTransactionalSpringContextTests.java b/spring/src/common/org/testng/spring/test/AbstractTransactionalSpringContextTests.java
deleted file mode 100644
index 1331e77..0000000
--- a/spring/src/common/org/testng/spring/test/AbstractTransactionalSpringContextTests.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright 2002-2006 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.testng.spring.test;
-
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.TransactionDefinition;
-import org.springframework.transaction.TransactionException;
-import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.support.DefaultTransactionDefinition;
-
-/**
- * Convenient superclass for tests that should occur in a transaction, but normally
- * will roll the transaction back on the completion of each test.
- *
- * <p>This is useful in a range of circumstances, allowing the following benefits:
- * <ul>
- * <li>Ability to delete or insert any data in the database, without affecting other tests
- * <li>Providing a transactional context for any code requiring a transaction
- * <li>Ability to write anything to the database without any need to clean up.
- * </ul>
- *
- * <p>This class is typically very fast, compared to traditional setup/teardown scripts.
- *
- * <p>If data should be left in the database, call the <code>setComplete()</code>
- * method in each test. The "defaultRollback" property, which defaults to "true",
- * determines whether transactions will complete by default.
- *
- * <p>It is even possible to end the transaction early; for example, to verify lazy
- * loading behavior of an O/R mapping tool. (This is a valuable away to avoid
- * unexpected errors when testing a web UI, for example.)  Simply call the
- * <code>endTransaction()</code> method. Execution will then occur without a
- * transactional context.
- *
- * <p>The <code>startNewTransaction()</code> method may be called after a call to
- * <code>endTransaction()</code> if you wish to create a new transaction, quite
- * independent of the old transaction. The new transaction's default fate will be to
- * roll back, unless <code>setComplete()</code> is called again during the scope of the
- * new transaction. Any number of transactions may be created and ended in this way.
- * The final transaction will automatically be rolled back when the test case is
- * torn down.
- *
- * <p>Transactional behavior requires a single bean in the context implementing the
- * PlatformTransactionManager interface. This will be set by the superclass's
- * Dependency Injection mechanism. If using the superclass's Field Injection mechanism,
- * the implementation should be named "transactionManager". This mechanism allows the
- * use of this superclass even when there's more than one transaction manager in the context.
- * 
- * <p><i>This superclass can also be used without transaction management, if no
- * PlatformTransactionManager bean is found in the context provided. Be careful about
- * using this mode, as it allows the potential to permanently modify data.
- * This mode is available only if dependency checking is turned off in
- * the AbstractDependencyInjectionSpringContextTests superclass. The non-transactional
- * capability is provided to enable use of the same subclass in different environments.</i>
- *
- * @author Rod Johnson
- * @author Juergen Hoeller
- * @since 1.1.1
- */
-public abstract class AbstractTransactionalSpringContextTests extends AbstractDependencyInjectionSpringContextTests {
-
-	/** The transaction manager to use */
-	protected PlatformTransactionManager transactionManager;
-
-	/** Should we roll back by default? */
-	private boolean defaultRollback = true;
-
-	/** Should we commit the current transaction? */
-	private boolean complete = false;
-
-	/** Number of transactions started */
-	private int transactionsStarted = 0;
-	
-	/**
-	 * Default transaction definition is used.
-	 * Subclasses can change this to cause different behaviour.
-	 */
-	private TransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
-
-	/**
-	 * TransactionStatus for this test. Typical subclasses won't need to use it.
-	 */
-	protected TransactionStatus transactionStatus;
-
-
-	/**
-	 * Default constructor for AbstractTransactionalSpringContextTests.
-	 */
-	public AbstractTransactionalSpringContextTests() {
-	}
-
-	/**
-	 * Specify the transaction manager to use. No transaction management will be available
-	 * if this is not set. (This mode works only if dependency checking is turned off in
-	 * the AbstractDependencyInjectionSpringContextTests superclass.)
-	 * <p>Populated through dependency injection by the superclass.
-	 */
-	public void setTransactionManager(PlatformTransactionManager ptm) {
-		this.transactionManager = ptm;
-	}
-
-	/**
-	 * Subclasses can set this value in their constructor to change
-	 * default, which is always to roll the transaction back.
-	 */
-	public void setDefaultRollback(boolean defaultRollback) {
-		this.defaultRollback = defaultRollback;
-	}
-
-
-	/**
-	 * Call in an overridden <code>runBare()</code> method to prevent transactional execution.
-	 */
-	protected void preventTransaction() {
-		this.transactionDefinition = null;
-	}
-
-	/**
-	 * Override the transaction attributes that will be used.
-	 * Call in an overridden <code>runBare()</code> method so that
-	 * <code>setUp()</code> and <code>tearDown()</code> behavior is modified.
-	 * @param customDefinition custom definition to override with
-	 */
-	protected void setTransactionDefinition(TransactionDefinition customDefinition) {
-		this.transactionDefinition = customDefinition;
-	}
-
-
-	/**
-	 * This implementation creates a transaction before test execution.
-	 * Override <code>onSetUpBeforeTransaction()</code> and/or
-	 * <code>onSetUpInTransaction()</code> to add custom set-up behavior.
-	 * @see #onSetUpBeforeTransaction()
-	 * @see #onSetUpInTransaction()
-	 */
-	protected final void onSetUp() throws Exception {
-		this.complete = !this.defaultRollback;
-
-		if (this.transactionManager == null) {
-			logger.info("No transaction manager set: test will NOT run within a transaction");
-		}
-		else if (this.transactionDefinition == null) {
-			logger.info("No transaction definition set: test will NOT run within a transaction");
-		}
-		else {
-			onSetUpBeforeTransaction();
-			startNewTransaction();
-			try {
-				onSetUpInTransaction();
-			}
-			catch (Exception ex) {
-				endTransaction();
-				throw ex;
-			}
-		}
-	}
-
-	/**
-	 * Subclasses can override this method to perform any setup operations,
-	 * such as populating a database table, <i>before</i> the transaction
-	 * created by this class. Only invoked if there <i>is</i> a transaction:
-	 * that is, if <code>preventTransaction()</code> has not been invoked in
-	 * an overridden <code>runTest()</code> method.
-	 * @throws Exception simply let any exception propagate
-	 * @see #preventTransaction()
-	 */
-	protected void onSetUpBeforeTransaction() throws Exception {
-	}
-
-	/**
-	 * Subclasses can override this method to perform any setup operations,
-	 * such as populating a database table, <i>within</i> the transaction
-	 * created by this class.
-	 * <p><b>NB:</b> Not called if there is no transaction management, due to no
-	 * transaction manager being provided in the context.
-	 * <p>If any {@link Throwable} is thrown, the transaction that has been started
-	 * prior to the execution of this method will be {@link #endTransaction() ended}
-	 * (or rather an attempt will be made to {@link #endTransaction() end it gracefully});
-	 * The offending {@link Throwable} will then be rethrown.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onSetUpInTransaction() throws Exception {
-	}
-
-
-	/**
-	 * This implementation ends the transaction after test execution.
-	 * Override <code>onTearDownInTransaction()</code> and/or
-	 * <code>onTearDownAfterTransaction()</code> to add custom tear-down behavior.
-	 * <p>Note that <code>onTearDownInTransaction()</code> will only be called
-	 * if a transaction is still active at the time of the test shutdown.
-	 * In particular, it will <code>not</code> be called if the transaction has
-	 * been completed with an explicit <code>endTransaction()</code> call before.
-	 * @throws Exception simply let any exception propagate
-	 * @see #onTearDownInTransaction()
-	 * @see #onTearDownAfterTransaction()
-	 * @see #endTransaction()
-	 */
-	protected final void onTearDown() throws Exception {
-		// Call onTearDownInTransaction and end transaction if the transaction is still active.
-		if (this.transactionStatus != null && !this.transactionStatus.isCompleted()) {
-			try {
-				onTearDownInTransaction();
-			}
-			finally {
-				endTransaction();
-			}
-		}
-		// Call onTearDownAfterTransaction if there was at least one transaction,
-		// even if it has been completed early through an endTransaction() call.
-		if (this.transactionsStarted > 0) {
-			onTearDownAfterTransaction();
-		}
-	}
-
-	/**
-	 * Subclasses can override this method to run invariant tests here.
-	 * The transaction is <i>still active</i> at this point, so any changes
-	 * made in the transaction will still be visible. However, there is no need
-	 * to clean up the database, as a rollback will follow automatically.
-	 * <p><b>NB:</b> Not called if there is no actual transaction, for example
-	 * due to no transaction manager being provided in the application context.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onTearDownInTransaction() throws Exception {
-	}
-
-	/**
-	 * Subclasses can override this method to perform cleanup after a transaction
-	 * here. At this point, the transaction is <i>not active anymore</i>.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onTearDownAfterTransaction() throws Exception {
-	}
-
-
-	/**
-	 * Cause the transaction to commit for this test method,
-	 * even if default is set to rollback.
-	 * @throws IllegalStateException if the operation cannot be set to
-	 * complete as no transaction manager was provided
-	 */
-	protected void setComplete() throws UnsupportedOperationException {
-		if (this.transactionManager == null) {
-			throw new IllegalStateException("No transaction manager set");
-		}
-		this.complete = true;
-	}
-
-  /**
-   * Cause the transaction to rollback for this test method,
-   * even if default is set to complete.
-   * @throws IllegalStateException if the operation cannot be set to
-   * complete as no transaction manager was provided
-   */
-  protected void setRollback() throws UnsupportedOperationException {
-    if (this.transactionManager == null) {
-      throw new IllegalStateException("No transaction manager set");
-    }
-    this.complete = false;
-  }
-  
-  /**
-	 * Immediately force a commit or rollback of the transaction,
-	 * according to the complete flag.
-	 * <p>Can be used to explicitly let the transaction end early,
-	 * for example to check whether lazy associations of persistent objects
-	 * work outside of a transaction (that is, have been initialized properly).
-	 * @see #setComplete()
-	 */
-	protected void endTransaction() {
-		if (this.transactionStatus != null) {
-			try {
-				if (!this.complete) {
-					this.transactionManager.rollback(this.transactionStatus);
-					logger.info("Rolled back transaction after test execution");
-				}
-				else {
-					this.transactionManager.commit(this.transactionStatus);
-					logger.info("Committed transaction after test execution");
-				}
-			}
-			finally {
-				this.transactionStatus = null;
-			}
-		}
-	}
-
-	/**
-	 * Start a new transaction. Only call this method if <code>endTransaction()</code>
-	 * has been called. <code>setComplete()</code> can be used again in the new transaction.
-	 * The fate of the new transaction, by default, will be the usual rollback.
-	 * @see #endTransaction()
-	 * @see #setComplete()
-	 */
-	protected void startNewTransaction() throws TransactionException {
-		if (this.transactionStatus != null) {
-			throw new IllegalStateException("Cannot start new transaction without ending existing transaction: " +
-					"Invoke endTransaction() before startNewTransaction()");
-		}
-		if (this.transactionManager == null) {
-			throw new IllegalStateException("No transaction manager set");
-		}
-
-		this.transactionStatus = this.transactionManager.getTransaction(this.transactionDefinition);
-		++this.transactionsStarted;
-		this.complete = !this.defaultRollback;
-
-		if (logger.isInfoEnabled()) {
-			logger.info("Began transaction (" + this.transactionsStarted + "): transaction manager [" +
-					this.transactionManager + "]; default rollback = " + this.defaultRollback);
-		}
-	}
-
-}
diff --git a/spring/src/common/org/testng/spring/test/package.html b/spring/src/common/org/testng/spring/test/package.html
deleted file mode 100644
index 3958135..0000000
--- a/spring/src/common/org/testng/spring/test/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
-<body>
-
-Superclasses for tests requiring Spring application contexts,
-including support for transactional execution of test cases,
-with automatic rollback on completion.
-Useful as base classes for application-specific tests.
-<br/>
-The superclasses in this package are ideal for integration testing. 
-<i>Unit</i> testing should not normally involve the Spring container,
-but should test classes in isolation.
-
-</body>
-</html>
diff --git a/spring/src/jdk14/org/testng/spring/test/AbstractSingleSpringContextTests.java b/spring/src/jdk14/org/testng/spring/test/AbstractSingleSpringContextTests.java
deleted file mode 100644
index d79d16e..0000000
--- a/spring/src/jdk14/org/testng/spring/test/AbstractSingleSpringContextTests.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright 2002-2007 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.testng.spring.test;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.util.StringUtils;
-
-/**
- * Abstract JUnit test class that holds and exposes a single Spring
- * {@link org.springframework.context.ApplicationContext ApplicationContext}.
- *
- * <p>This class will cache contexts based on a <i>context key</i>: normally the
- * config locations String array describing the Spring resource descriptors making
- * up the context. Unless the {@link #setDirty()} method is called by a test, the
- * context will not be reloaded, even across different subclasses of this test.
- * This is particularly beneficial if your context is slow to construct, for example
- * if you are using Hibernate and the time taken to load the mappings is an issue.
- *
- * <p>For such standard usage, simply override the {@link #getConfigLocations()}
- * method and provide the desired config files.
- *
- * <p>If you don't want to load a standard context from an array of config locations,
- * you can override the {@link #contextKey()} method. In conjunction with this you
- * typically need to override the {@link #loadContext(Object)} method, which by
- * default loads the locations specified in the {@link #getConfigLocations()} method.
- *
- * <p><b>WARNING:</b> When doing integration tests from within Eclipse, only use
- * classpath resource URLs. Else, you may see misleading failures when changing
- * context locations.
- *
- * @author Juergen Hoeller
- * @author Rod Johnson
- * @since 2.0
- * @see #getConfigLocations()
- * @see #contextKey()
- * @see #loadContext(Object)
- * @see #getApplicationContext()
- */
-public abstract class AbstractSingleSpringContextTests extends AbstractSpringContextTests {
-
-	/** Application context this test will run against */
-	protected ConfigurableApplicationContext applicationContext;
-
-	private int loadCount = 0;
-
-
-	/**
-	 * Default constructor for AbstractDependencyInjectionSpringContextTests.
-	 */
-	public AbstractSingleSpringContextTests() {
-	}
-
-	/**
-   * @testng.configuration beforeTestMethod = "true"
-	 * This implementation is final.
-	 * Override <code>onSetUp</code> for custom behavior.
-	 * @see #onSetUp()
-	 */
-	protected final void setUp() throws Exception {
-		this.applicationContext = getContext(contextKey());
-		prepareTestInstance();
-		onSetUp();
-	}
-
-	/**
-	 * Prepare this test instance, for example populating its fields.
-	 * The context has already been loaded at the time of this callback.
-	 * <p>This implementation does nothing.
-	 */
-	protected void prepareTestInstance() throws Exception {
-	}
-
-	/**
-	 * Subclasses can override this method in place of the
-	 * <code>setUp()</code> method, which is final in this class.
-	 * This implementation does nothing.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onSetUp() throws Exception {
-	}
-
-	/**
-	 * Called to say that the "applicationContext" instance variable is dirty and
-	 * should be reloaded. We need to do this if a test has modified the context
-	 * (for example, by replacing a bean definition).
-	 */
-	protected void setDirty() {
-		setDirty(contextKey());
-	}
-
-	/**
-	 * This implementation is final.
-	 * Override <code>onTearDown</code> for custom behavior.
-	 * @see #onTearDown()
-   * @testng.configuration beforeTestMethod = "true"
-	 */
-	protected final void tearDown() throws Exception {
-		onTearDown();
-	}
-
-	/**
-	 * Subclasses can override this to add custom behavior on teardown.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onTearDown() throws Exception {
-	}
-
-
-	/**
-	 * Return a key for this context. Default is the config location array
-	 * as determined by {@link #getConfigLocations()}.
-	 * <p>If you override this method, you will typically have to override
-	 * {@link #loadContext(Object)} as well, being able to handle the key type
-	 * that this method returns.
-	 * @see #getConfigLocations()
-	 */
-	protected Object contextKey() {
-		return getConfigLocations();
-	}
-
-	/**
-	 * This implementation assumes a key of type String array and loads
-	 * a context from the given locations.
-	 * <p>If you override {@link #contextKey()}, you will typically have to
-	 * override this method as well, being able to handle the key type
-	 * that <code>contextKey()</code> returns.
-	 * @see #getConfigLocations()
-	 */
-	protected ConfigurableApplicationContext loadContext(Object key) throws Exception {
-		return loadContextLocations((String[]) key);
-	}
-
-	/**
-	 * Subclasses must implement this method to return the locations of their
-	 * config files, unless they override {@link #contextKey()} and
-	 * {@link #loadContext(Object)} instead.
-	 * <p>A plain path will be treated as class path location, e.g.:
-	 * "org/springframework/whatever/foo.xml". Note however that you may prefix path
-	 * locations with standard Spring resource prefixes. Therefore, a config location
-	 * path prefixed with "classpath:" with behave the same as a plain path, but a
-	 * config location such as "file:/some/path/path/location/appContext.xml" will
-	 * be treated as a filesystem location.
-	 * <p>The default implementation returns an empty array.
-	 * @return an array of config locations
-	 */
-	protected String[] getConfigLocations() {
-		return new String[0];
-	}
-
-	/**
-	 * Load an ApplicationContext from the given config locations.
-	 * @param locations the config locations
-	 * @return the corresponding ApplicationContext instance (potentially cached)
-	 */
-	protected ConfigurableApplicationContext loadContextLocations(String[] locations) throws Exception {
-		++this.loadCount;
-		if (logger.isInfoEnabled()) {
-			logger.info("Loading context for: " + StringUtils.arrayToCommaDelimitedString(locations));
-		}
-		return new ClassPathXmlApplicationContext(locations);
-	}
-
-	/**
-	 * Return the ApplicationContext that this base class manages.
-	 */
-	public final ConfigurableApplicationContext getApplicationContext() {
-		return this.applicationContext;
-	}
-
-	/**
-	 * Return the current number of context load attempts.
-	 */
-	public final int getLoadCount() {
-		return this.loadCount;
-	}
-
-}
diff --git a/spring/src/jdk15/org/testng/spring/test/AbstractAnnotationAwareTransactionalTests.java b/spring/src/jdk15/org/testng/spring/test/AbstractAnnotationAwareTransactionalTests.java
deleted file mode 100644
index ed4d407..0000000
--- a/spring/src/jdk15/org/testng/spring/test/AbstractAnnotationAwareTransactionalTests.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.testng.spring.test;
-
-import java.util.Map;
-import java.lang.reflect.Method;
-import javax.sql.DataSource;
-
-import org.springframework.transaction.annotation.AnnotationTransactionAttributeSource;
-import org.springframework.transaction.interceptor.TransactionAttributeSource;
-import org.springframework.transaction.TransactionDefinition;
-import org.springframework.test.annotation.*;
-import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
-import org.springframework.context.ApplicationContext;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-/**
- * @author Hani Suleiman
- *         Date: Jan 26, 2007
- *         Time: 8:17:20 AM
- */
-public abstract class AbstractAnnotationAwareTransactionalTests
-		extends AbstractTransactionalDataSourceSpringContextTests {
-	
-	protected SimpleJdbcTemplate simpleJdbcTemplate;
-	
-	private TransactionAttributeSource transactionAttributeSource = new AnnotationTransactionAttributeSource();
-	
-	protected ProfileValueSource profileValueSource = SystemProfileValueSource.getInstance();
-
-
-	@Override
-	public void setDataSource(DataSource dataSource) {
-		super.setDataSource(dataSource);
-		// JdbcTemplate will be identically configured
-		this.simpleJdbcTemplate = new SimpleJdbcTemplate(this.jdbcTemplate);
-	}
-
-	// TODO code to try to load (and cache!) ProfileValueSource
-	// from a given URL? It's easy enough to do, of course.
-	protected void findUniqueProfileValueSourceFromContext(ApplicationContext ac) {
-		Map beans = ac.getBeansOfType(ProfileValueSource.class);
-		if (beans.size() == 1) {
-			this.profileValueSource = (ProfileValueSource) beans.values().iterator().next();
-		}
-	}
-
-	@BeforeMethod
-  protected void checkTransaction(Method testMethod) throws Throwable {		
-		TransactionDefinition explicitTransactionDefinition =
-				this.transactionAttributeSource.getTransactionAttribute(testMethod, getClass());
-		if (explicitTransactionDefinition != null) {
-			logger.info("Custom transaction definition [" + explicitTransactionDefinition + " for test method " + testMethod.getName());
-			setTransactionDefinition(explicitTransactionDefinition);
-		}
-		else if (testMethod.isAnnotationPresent(NotTransactional.class)) {
-			// Don't have any transaction...
-			preventTransaction();
-		}		
-	}
-
-  @AfterMethod
-  protected void checkDirtiesContext(Method testMethod) {
-    if (testMethod.isAnnotationPresent(DirtiesContext.class)) {
-      AbstractAnnotationAwareTransactionalTests.this.setDirty();
-    }    
-  }  
-}
diff --git a/spring/src/jdk15/org/testng/spring/test/AbstractSingleSpringContextTests.java b/spring/src/jdk15/org/testng/spring/test/AbstractSingleSpringContextTests.java
deleted file mode 100644
index 8b66352..0000000
--- a/spring/src/jdk15/org/testng/spring/test/AbstractSingleSpringContextTests.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright 2002-2007 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.testng.spring.test;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.util.StringUtils;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.AfterMethod;
-
-/**
- * Abstract JUnit test class that holds and exposes a single Spring
- * {@link org.springframework.context.ApplicationContext ApplicationContext}.
- *
- * <p>This class will cache contexts based on a <i>context key</i>: normally the
- * config locations String array describing the Spring resource descriptors making
- * up the context. Unless the {@link #setDirty()} method is called by a test, the
- * context will not be reloaded, even across different subclasses of this test.
- * This is particularly beneficial if your context is slow to construct, for example
- * if you are using Hibernate and the time taken to load the mappings is an issue.
- *
- * <p>For such standard usage, simply override the {@link #getConfigLocations()}
- * method and provide the desired config files.
- *
- * <p>If you don't want to load a standard context from an array of config locations,
- * you can override the {@link #contextKey()} method. In conjunction with this you
- * typically need to override the {@link #loadContext(Object)} method, which by
- * default loads the locations specified in the {@link #getConfigLocations()} method.
- *
- * <p><b>WARNING:</b> When doing integration tests from within Eclipse, only use
- * classpath resource URLs. Else, you may see misleading failures when changing
- * context locations.
- *
- * @author Juergen Hoeller
- * @author Rod Johnson
- * @since 2.0
- * @see #getConfigLocations()
- * @see #contextKey()
- * @see #loadContext(Object)
- * @see #getApplicationContext()
- */
-public abstract class AbstractSingleSpringContextTests extends AbstractSpringContextTests {
-
-	/** Application context this test will run against */
-	protected ConfigurableApplicationContext applicationContext;
-
-	private int loadCount = 0;
-
-
-	/**
-	 * Default constructor for AbstractDependencyInjectionSpringContextTests.
-	 */
-	public AbstractSingleSpringContextTests() {
-	}
-
-	/**
-	 * This implementation is final.
-	 * Override <code>onSetUp</code> for custom behavior.
-	 * @see #onSetUp()
-	 */
-  @BeforeMethod(groups="spring-init")
-  protected final void setUp() throws Exception {
-		this.applicationContext = getContext(contextKey());
-		prepareTestInstance();
-		onSetUp();
-	}
-
-	/**
-	 * Prepare this test instance, for example populating its fields.
-	 * The context has already been loaded at the time of this callback.
-	 * <p>This implementation does nothing.
-	 */
-	protected void prepareTestInstance() throws Exception {
-	}
-
-	/**
-	 * Subclasses can override this method in place of the
-	 * <code>setUp()</code> method, which is final in this class.
-	 * This implementation does nothing.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onSetUp() throws Exception {
-	}
-
-	/**
-	 * Called to say that the "applicationContext" instance variable is dirty and
-	 * should be reloaded. We need to do this if a test has modified the context
-	 * (for example, by replacing a bean definition).
-	 */
-	protected void setDirty() {
-		setDirty(contextKey());
-	}
-
-	/**
-	 * This implementation is final.
-	 * Override <code>onTearDown</code> for custom behavior.
-	 * @see #onTearDown()
-	 */
-  @AfterMethod(groups="spring-init")
-  protected final void tearDown() throws Exception {
-		onTearDown();
-	}
-
-	/**
-	 * Subclasses can override this to add custom behavior on teardown.
-	 * @throws Exception simply let any exception propagate
-	 */
-	protected void onTearDown() throws Exception {
-	}
-
-
-	/**
-	 * Return a key for this context. Default is the config location array
-	 * as determined by {@link #getConfigLocations()}.
-	 * <p>If you override this method, you will typically have to override
-	 * {@link #loadContext(Object)} as well, being able to handle the key type
-	 * that this method returns.
-	 * @see #getConfigLocations()
-	 */
-	protected Object contextKey() {
-		return getConfigLocations();
-	}
-
-	/**
-	 * This implementation assumes a key of type String array and loads
-	 * a context from the given locations.
-	 * <p>If you override {@link #contextKey()}, you will typically have to
-	 * override this method as well, being able to handle the key type
-	 * that <code>contextKey()</code> returns.
-	 * @see #getConfigLocations()
-	 */
-	protected ConfigurableApplicationContext loadContext(Object key) throws Exception {
-		return loadContextLocations((String[]) key);
-	}
-
-	/**
-	 * Subclasses must implement this method to return the locations of their
-	 * config files, unless they override {@link #contextKey()} and
-	 * {@link #loadContext(Object)} instead.
-	 * <p>A plain path will be treated as class path location, e.g.:
-	 * "org/springframework/whatever/foo.xml". Note however that you may prefix path
-	 * locations with standard Spring resource prefixes. Therefore, a config location
-	 * path prefixed with "classpath:" with behave the same as a plain path, but a
-	 * config location such as "file:/some/path/path/location/appContext.xml" will
-	 * be treated as a filesystem location.
-	 * <p>The default implementation returns an empty array.
-	 * @return an array of config locations
-	 */
-	protected String[] getConfigLocations() {
-		return new String[0];
-	}
-
-	/**
-	 * Load an ApplicationContext from the given config locations.
-	 * @param locations the config locations
-	 * @return the corresponding ApplicationContext instance (potentially cached)
-	 */
-	protected ConfigurableApplicationContext loadContextLocations(String[] locations) throws Exception {
-		++this.loadCount;
-		if (logger.isInfoEnabled()) {
-			logger.info("Loading context for: " + StringUtils.arrayToCommaDelimitedString(locations));
-		}
-		return new ClassPathXmlApplicationContext(locations);
-	}
-
-	/**
-	 * Return the ApplicationContext that this base class manages.
-	 */
-	public final ConfigurableApplicationContext getApplicationContext() {
-		return this.applicationContext;
-	}
-
-	/**
-	 * Return the current number of context load attempts.
-	 */
-	public final int getLoadCount() {
-		return this.loadCount;
-	}
-
-}
diff --git a/src/com/beust/testng/TestNG.java b/src/com/beust/testng/TestNG.java
deleted file mode 100755
index 102f509..0000000
--- a/src/com/beust/testng/TestNG.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.beust.testng;
-
-/**
- * For backward compatibility.
- * 
- * Created on Jun 18, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @deprecated Use org.testng.TestNG
- */
-public class TestNG extends org.testng.TestNG {
-  
-}
\ No newline at end of file
diff --git a/src/com/beust/testng/TestNGAntTask.java b/src/com/beust/testng/TestNGAntTask.java
deleted file mode 100755
index 493af0a..0000000
--- a/src/com/beust/testng/TestNGAntTask.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.beust.testng;
-
-/**
- * For backward compatibility.
- * 
- * Created on Jun 18, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @deprecated Use org.testng.TestNGAntTask
- */
-public class TestNGAntTask extends org.testng.TestNGAntTask {
-}
diff --git a/src/org/testng/Assert.java b/src/org/testng/Assert.java
deleted file mode 100644
index 0f99480..0000000
--- a/src/org/testng/Assert.java
+++ /dev/null
@@ -1,639 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Lists;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * Assertion tool class. Presents assertion methods with a more natural parameter order.
- * The order is always <B>actualValue</B>, <B>expectedValue</B> [, message].
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class Assert {
-  
-  /**
-   * Protect constructor since it is a static only class
-   */
-  protected Assert() {
-    // hide constructor
-  }
-  
-  /**
-   * Asserts that a condition is true. If it isn't, 
-   * an AssertionError, with the given message, is thrown.
-   * @param condition the condition to evaluate 
-   * @param message the assertion error message 
-   */
-  static public void assertTrue(boolean condition, String message) {
-    if(!condition) {
-      failNotEquals( Boolean.valueOf(condition), Boolean.TRUE, message);
-    }
-  }
-  
-  /**
-   * Asserts that a condition is true. If it isn't, 
-   * an AssertionError is thrown.
-   * @param condition the condition to evaluate 
-   */
-  static public void assertTrue(boolean condition) {
-    assertTrue(condition, null);
-  }
-  
-  /**
-   * Asserts that a condition is false. If it isn't,   
-   * an AssertionError, with the given message, is thrown.
-   * @param condition the condition to evaluate 
-   * @param message the assertion error message 
-   */
-  static public void assertFalse(boolean condition, String message) {
-    if(condition) {
-      failNotEquals( Boolean.valueOf(condition), Boolean.FALSE, message); // TESTNG-81
-    }
-  }
-  
-  /**
-   * Asserts that a condition is false. If it isn't,    
-   * an AssertionError is thrown.
-   * @param condition the condition to evaluate 
-   */
-  static public void assertFalse(boolean condition) {
-    assertFalse(condition, null);
-  }
-  
-  /**
-   * Fails a test with the given message and wrapping the original exception.
-   * 
-   * @param message the assertion error message
-   * @param realCause the original exception
-   */
-  static public void fail(String message, Throwable realCause) {
-    AssertionError ae = new AssertionError(message);
-    ae.initCause(realCause);
-    
-    throw ae;
-  }
-  
-  /**
-   * Fails a test with the given message.
-   * @param message the assertion error message 
-   */
-  static public void fail(String message) {
-    throw new AssertionError(message);
-  }
-  
-  /**
-   * Fails a test with no message.
-   */
-  static public void fail() {
-    fail(null);
-  }
-  
-  /**
-   * Asserts that two objects are equal. If they are not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(Object actual, Object expected, String message) {
-    if((expected == null) && (actual == null)) {
-      return;
-    }
-    if((expected != null) && expected.equals(actual)) {
-      return;
-    }
-    failNotEquals(actual, expected, message);
-  }
-  
-  /**
-   * Asserts that two objects are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(Object actual, Object expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two Strings are equal. If they are not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(String actual, String expected, String message) {
-    assertEquals((Object) actual, (Object) expected, message);
-  }
-  
-  /**
-   * Asserts that two Strings are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(String actual, String expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two doubles are equal concerning a delta.  If they are not,
-   * an AssertionError, with the given message, is thrown.  If the expected
-   * value is infinity then the delta value is ignored.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param delta the absolute tolerate value value between the actual and expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(double actual, double expected, double delta, String message) {
-    // handle infinity specially since subtracting to infinite values gives NaN and the
-    // the following test fails
-    if(Double.isInfinite(expected)) {
-      if(!(expected == actual)) {
-        failNotEquals(new Double(actual), new Double(expected), message);
-      }
-    }
-    else if(!(Math.abs(expected - actual) <= delta)) { // Because comparison with NaN always returns false
-      failNotEquals(new Double(actual), new Double(expected), message);
-    }
-  }
-  
-  /**
-   * Asserts that two doubles are equal concerning a delta. If they are not,
-   * an AssertionError is thrown. If the expected value is infinity then the 
-   * delta value is ignored. 
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param delta the absolute tolerate value value between the actual and expected value 
-   */
-  static public void assertEquals(double actual, double expected, double delta) {
-    assertEquals(actual, expected, delta, null);
-  }
-  
-  /**
-   * Asserts that two floats are equal concerning a delta. If they are not,
-   * an AssertionError, with the given message, is thrown.  If the expected
-   * value is infinity then the delta value is ignored.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param delta the absolute tolerate value value between the actual and expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(float actual, float expected, float delta, String message) {
-    // handle infinity specially since subtracting to infinite values gives NaN and the
-    // the following test fails
-    if(Float.isInfinite(expected)) {
-      if(!(expected == actual)) {
-        failNotEquals(new Float(actual), new Float(expected), message);
-      }
-    }
-    else if(!(Math.abs(expected - actual) <= delta)) {
-      failNotEquals(new Float(actual), new Float(expected), message);
-    }
-  }
-  
-  /**
-   * Asserts that two floats are equal concerning a delta. If they are not,
-   * an AssertionError is thrown. If the expected
-   * value is infinity then the delta value is ignored.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param delta the absolute tolerate value value between the actual and expected value 
-   */
-  static public void assertEquals(float actual, float expected, float delta) {
-    assertEquals(actual, expected, delta, null);
-  }
-  
-  /**
-   * Asserts that two longs are equal. If they are not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(long actual, long expected, String message) {
-    assertEquals(new Long(actual), new Long(expected), message);
-  }
-  
-  /**
-   * Asserts that two longs are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(long actual, long expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two booleans are equal. If they are not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(boolean actual, boolean expected, String message) {
-    assertEquals( Boolean.valueOf(actual), Boolean.valueOf(expected), message);
-  }
-  
-  /**
-   * Asserts that two booleans are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(boolean actual, boolean expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two bytes are equal. If they are not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(byte actual, byte expected, String message) {
-    assertEquals(new Byte(actual), new Byte(expected), message);
-  }
-  
-  /**
-   * Asserts that two bytes are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(byte actual, byte expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two chars are equal. If they are not,
-   * an AssertionFailedError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(char actual, char expected, String message) {
-    assertEquals(new Character(actual), new Character(expected), message);
-  }
-  
-  /**
-   * Asserts that two chars are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(char actual, char expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two shorts are equal. If they are not,
-   * an AssertionFailedError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(short actual, short expected, String message) {
-    assertEquals(new Short(actual), new Short(expected), message);
-  }
-  
-  /**
-   * Asserts that two shorts are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(short actual, short expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two ints are equal. If they are not,
-   * an AssertionFailedError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertEquals(int actual,  int expected, String message) {
-    assertEquals(new Integer(actual), new Integer(expected), message);
-  }
-  
-  /**
-   * Asserts that two ints are equal. If they are not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertEquals(int actual, int expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that an object isn't null. If it is,
-   * an AssertionError is thrown.
-   * @param object the assertion object
-   */
-  static public void assertNotNull(Object object) {
-    assertNotNull(object, null);
-  }
-  
-  /**
-   * Asserts that an object isn't null. If it is,
-   * an AssertionFailedError, with the given message, is thrown.
-   * @param object the assertion object
-   * @param message the assertion error message 
-   */
-  static public void assertNotNull(Object object, String message) {
-    assertTrue(object != null, message);
-  }
-  
-  /**
-   * Asserts that an object is null. If it is,
-   * an AssertionError, with the given message, is thrown.
-   * @param object the assertion object
-   */
-  static public void assertNull(Object object) {
-    assertNull(object, null);
-  }
-  
-  /**
-   * Asserts that an object is null.  If it is not,
-   * an AssertionFailedError, with the given message, is thrown.
-   * @param object the assertion object 
-   * @param message the assertion error message 
-   */
-  static public void assertNull(Object object, String message) {
-    assertTrue(object == null, message);
-  }
-  
-  /**
-   * Asserts that two objects refer to the same object. If they do not,
-   * an AssertionFailedError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertSame(Object actual, Object expected, String message) {
-    if(expected == actual) {
-      return;
-    }
-    failNotSame(actual, expected, message);
-  }
-  
-  /**
-   * Asserts that two objects refer to the same object. If they do not,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertSame(Object actual, Object expected) {
-    assertSame(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two objects do not refer to the same objects. If they do,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   * @param message the assertion error message 
-   */
-  static public void assertNotSame(Object actual, Object expected, String message) {
-    if(expected == actual) {
-      failSame(actual, expected, message);
-    }
-  }
-  
-  /**
-   * Asserts that two objects do not refer to the same object. If they do,
-   * an AssertionError is thrown.
-   * @param actual the actual value 
-   * @param expected the expected value 
-   */
-  static public void assertNotSame(Object actual, Object expected) {
-    assertNotSame(actual, expected, null);
-  }
-  
-  static private void failSame(Object actual, Object expected, String message) {
-    String formatted = "";
-    if(message != null) {
-      formatted = message + " ";
-    }
-    fail(formatted + "expected not same with:<" + expected +"> but was same:<" + actual + ">");
-  }
-  
-  static private void failNotSame(Object actual, Object expected, String message) {
-    String formatted = "";
-    if(message != null) {
-      formatted = message + " ";
-    }
-    fail(formatted + "expected same with:<" + expected + "> but was:<" + actual + ">");
-  }
-  
-  static private void failNotEquals(Object actual , Object expected, String message ) {
-    fail(format(actual, expected, message));
-  }
-  
-  static String format(Object actual, Object expected, String message) {
-    String formatted = "";
-    if (null != message) {
-      formatted = message + " ";
-    }
-    
-    return formatted + "expected:<" + expected + "> but was:<" + actual + ">";
-  }
-  
-  /**
-   * Asserts that two collections contain the same elements in the same order. If they do not,
-   * an AssertionError is thrown.
-   *
-   * @param actual the actual value
-   * @param expected the expected value
-   */
-  static public void assertEquals(Collection actual, Collection expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two collections contain the same elements in the same order. If they do not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value
-   * @param expected the expected value
-   * @param message the assertion error message
-   */
-  static public void assertEquals(Collection actual, Collection expected, String message) {
-    if(actual == expected) return;
-    
-    if ((actual == null && expected != null) || (actual != null && expected == null)) {
-      if (message != null) fail(message);
-      else fail("Arrays not equal: " + expected + " and " + actual);
-    }
-    
-    assertEquals(actual.size(), expected.size(), message + ": lists don't have the same size");
-    
-    Iterator actIt = actual.iterator();
-    Iterator expIt = expected.iterator();
-    int i = -1;
-    while(actIt.hasNext() && expIt.hasNext()) {
-      i++;
-      Object e = expIt.next();
-      Object a = actIt.next();
-      String errorMessage = message == null 
-          ? "Lists differ at element [" + i + "]: " + e + " != " + a
-          : message + ": Lists differ at element [" + i + "]: " + e + " != " + a;
-      
-      assertEquals(a, e, errorMessage);
-    }
-  }
-  
-  /**
-   * Asserts that two arrays contain the same elements in the same order. If they do not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value
-   * @param expected the expected value
-   * @param message the assertion error message
-   */
-  static public void assertEquals(Object[] actual, Object[] expected, String message) {
-    if(actual == expected) return;
-    
-    if ((actual == null && expected != null) || (actual != null && expected == null)) {
-      if (message != null) fail(message);
-      else fail("Arrays not equal: " + expected + " and " + actual);
-    }
-    assertEquals(Arrays.asList(actual), Arrays.asList(expected), message);
-  }
-  
-  /**
-   * Asserts that two arrays contain the same elements in no particular order. If they do not,
-   * an AssertionError, with the given message, is thrown.
-   * @param actual the actual value
-   * @param expected the expected value
-   * @param message the assertion error message
-   */
-  static public void assertEqualsNoOrder(Object[] actual, Object[] expected, String message) {
-    if(actual == expected) return;
-    
-    if ((actual == null && expected != null) || (actual != null && expected == null)) {
-      failAssertNoEqual(actual, expected,
-          "Arrays not equal: " + expected + " and " + actual,
-          message);
-    }
-    
-    if (actual.length != expected.length) {
-      failAssertNoEqual(actual, expected,
-          "Arrays do not have the same size:" + actual.length + " != " + expected.length,
-          message);
-    }
-    
-    List actualCollection = Lists.newArrayList();
-    for (Object a : actual) {
-      actualCollection.add(a);
-    }
-    for (Object o : expected) {
-      actualCollection.remove(o);
-    }
-    if (actualCollection.size() != 0) {
-      failAssertNoEqual(actual, expected,
-          "Arrays not equal: " + expected + " and " + actual,
-          message);
-    }
-  }
-  
-  private static void failAssertNoEqual(Object[] actual, Object[] expected,
-      String message, String defaultMessage)
-  {
-    if (message != null) fail(message);
-    else fail(defaultMessage);
-  }
-  
-  /**
-   * Asserts that two arrays contain the same elements in the same order. If they do not,
-   * an AssertionError is thrown.
-   *
-   * @param actual the actual value
-   * @param expected the expected value
-   */
-  static public void assertEquals(Object[] actual, Object[] expected) {
-    assertEquals(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two arrays contain the same elements in no particular order. If they do not,
-   * an AssertionError is thrown.
-   * @param actual the actual value
-   * @param expected the expected value
-   */
-  static public void assertEqualsNoOrder(Object[] actual, Object[] expected) {
-    assertEqualsNoOrder(actual, expected, null);
-  }
-  
-  /**
-   * Asserts that two arrays contain the same elements in the same order. If they do not,
-   * an AssertionError is thrown.
-   *
-   * @param actual the actual value
-   * @param expected the expected value
-   */
-  static public void assertEquals(final byte[] actual, final byte[] expected) {
-    assertEquals(actual, expected, "");
-  }
-  
-  /**
-   * Asserts that two arrays contain the same elements in the same order. If they do not,
-   * an AssertionError, with the given message, is thrown.
-   *
-   * @param actual the actual value
-   * @param expected the expected value
-   * @param message the assertion error message
-   */
-  static public void assertEquals(final byte[] actual, final byte[] expected, final String message) {
-    if(expected == actual) {
-      return;
-    }
-    if(null == expected) {
-      fail("expected a null array, but not null found. " + message);
-    }
-    if(null == actual) {
-      fail("expected not null array, but null found. " + message);
-    }
-    
-    assertEquals(actual.length, expected.length, "arrays don't have the same size. " + message);
-    
-    for(int i= 0; i < expected.length; i++) {
-      if(expected[i] != actual[i]) {
-        fail("arrays differ firstly at element [" + i +"]; "
-            + "expected value is <" + expected[i] +"> but was <"
-            + actual[i] + ">. "
-            + message);
-      }
-    }
-  }
-
-  /**
-   * Asserts that two sets are equal.
-   */
-  static public void assertEquals(Set actual, Set expected) {
-    if (!actual.equals(expected)) {
-      fail("Sets differ: expected " + expected + " but got " + actual);
-    }
-  }
-
-  /**
-   * Asserts that two maps are equal.
-   */
-  static public void assertEquals(Map actual, Map expected) {
-      if (!actual.equals(expected)) {
-        fail("Maps differ: expected " + expected + " but got " + actual);
-      }
-    }
-
-}
diff --git a/src/org/testng/AssertJUnit.java b/src/org/testng/AssertJUnit.java
deleted file mode 100755
index d577f23..0000000
--- a/src/org/testng/AssertJUnit.java
+++ /dev/null
@@ -1,371 +0,0 @@
-package org.testng;
-
-
-/**
- * A set of assert methods.  Messages are only displayed when an assert fails.
- * Renamed from <CODE>junit.framework.Assert</CODE>.
- */
-public class AssertJUnit {
-
-  /**
-   * Protect constructor since it is a static only class
-   */
-  protected AssertJUnit() {
-  }
-
-  /**
-   * Asserts that a condition is true. If it isn't it throws
-   * an AssertionFailedError with the given message.
-   */
-  static public void assertTrue(String message, boolean condition) {
-    if(!condition) {
-      fail(message);
-    }
-  }
-
-  /**
-   * Asserts that a condition is true. If it isn't it throws
-   * an AssertionFailedError.
-   */
-  static public void assertTrue(boolean condition) {
-    assertTrue(null, condition);
-  }
-
-  /**
-   * Asserts that a condition is false. If it isn't it throws
-   * an AssertionFailedError with the given message.
-   */
-  static public void assertFalse(String message, boolean condition) {
-    assertTrue(message, !condition);
-  }
-
-  /**
-   * Asserts that a condition is false. If it isn't it throws
-   * an AssertionFailedError.
-   */
-  static public void assertFalse(boolean condition) {
-    assertFalse(null, condition);
-  }
-
-  /**
-   * Fails a test with the given message.
-   */
-  static public void fail(String message) {
-    if (null == message) message = "";
-    throw new AssertionError(message);
-  }
-
-  /**
-   * Fails a test with no message.
-   */
-  static public void fail() {
-    fail(null);
-  }
-
-  /**
-   * Asserts that two objects are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, Object expected, Object actual) {
-    if((expected == null) && (actual == null)) {
-      return;
-    }
-    if((expected != null) && expected.equals(actual)) {
-      return;
-    }
-    failNotEquals(message, expected, actual);
-  }
-
-  /**
-   * Asserts that two objects are equal. If they are not
-   * an AssertionFailedError is thrown.
-   */
-  static public void assertEquals(Object expected, Object actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two Strings are equal.
-   */
-  static public void assertEquals(String message, String expected, String actual) {
-    if((expected == null) && (actual == null)) {
-      return;
-    }
-    if((expected != null) && expected.equals(actual)) {
-      return;
-    }
-    throw new AssertionError(format(message, expected, actual));
-  }
-
-  /**
-   * Asserts that two Strings are equal.
-   */
-  static public void assertEquals(String expected, String actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two doubles are equal concerning a delta.  If they are not
-   * an AssertionFailedError is thrown with the given message.  If the expected
-   * value is infinity then the delta value is ignored.
-   */
-  static public void assertEquals(String message, double expected, double actual, double delta) {
-
-    // handle infinity specially since subtracting to infinite values gives NaN and the
-    // the following test fails
-    if(Double.isInfinite(expected)) {
-      if(!(expected == actual)) {
-        failNotEquals(message, new Double(expected), new Double(actual));
-      }
-    }
-    else if(!(Math.abs(expected - actual) <= delta)) { // Because comparison with NaN always returns false
-      failNotEquals(message, new Double(expected), new Double(actual));
-    }
-  }
-
-  /**
-   * Asserts that two doubles are equal concerning a delta. If the expected
-   * value is infinity then the delta value is ignored.
-   */
-  static public void assertEquals(double expected, double actual, double delta) {
-    assertEquals(null, expected, actual, delta);
-  }
-
-  /**
-   * Asserts that two floats are equal concerning a delta. If they are not
-   * an AssertionFailedError is thrown with the given message.  If the expected
-   * value is infinity then the delta value is ignored.
-   */
-  static public void assertEquals(String message, float expected, float actual, float delta) {
-
-    // handle infinity specially since subtracting to infinite values gives NaN and the
-    // the following test fails
-    if(Float.isInfinite(expected)) {
-      if(!(expected == actual)) {
-        failNotEquals(message, new Float(expected), new Float(actual));
-      }
-    }
-    else if(!(Math.abs(expected - actual) <= delta)) {
-      failNotEquals(message, new Float(expected), new Float(actual));
-    }
-  }
-
-  /**
-   * Asserts that two floats are equal concerning a delta. If the expected
-   * value is infinity then the delta value is ignored.
-   */
-  static public void assertEquals(float expected, float actual, float delta) {
-    assertEquals(null, expected, actual, delta);
-  }
-
-  /**
-   * Asserts that two longs are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, long expected, long actual) {
-    assertEquals(message, new Long(expected), new Long(actual));
-  }
-
-  /**
-   * Asserts that two longs are equal.
-   */
-  static public void assertEquals(long expected, long actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two booleans are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, boolean expected, boolean actual) {
-    assertEquals(message, Boolean.valueOf(expected), Boolean.valueOf(actual));
-  }
-
-  /**
-   * Asserts that two booleans are equal.
-   */
-  static public void assertEquals(boolean expected, boolean actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two bytes are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, byte expected, byte actual) {
-    assertEquals(message, new Byte(expected), new Byte(actual));
-  }
-
-  /**
-     * Asserts that two bytes are equal.
-   */
-  static public void assertEquals(byte expected, byte actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two chars are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, char expected, char actual) {
-    assertEquals(message, new Character(expected), new Character(actual));
-  }
-
-  /**
-   * Asserts that two chars are equal.
-   */
-  static public void assertEquals(char expected, char actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two shorts are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, short expected, short actual) {
-    assertEquals(message, new Short(expected), new Short(actual));
-  }
-
-  /**
-  * Asserts that two shorts are equal.
-  */
-  static public void assertEquals(short expected, short actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two ints are equal. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertEquals(String message, int expected, int actual) {
-    assertEquals(message, new Integer(expected), new Integer(actual));
-  }
-
-  /**
-   * Asserts that two ints are equal.
-  */
-  static public void assertEquals(int expected, int actual) {
-    assertEquals(null, expected, actual);
-  }
-
-  /**
-   * Asserts that an object isn't null.
-   */
-  static public void assertNotNull(Object object) {
-    assertNotNull(null, object);
-  }
-
-  /**
-   * Asserts that an object isn't null. If it is
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertNotNull(String message, Object object) {
-    assertTrue(message, object != null);
-  }
-
-  /**
-   * Asserts that an object is null.
-   */
-  static public void assertNull(Object object) {
-    assertNull(null, object);
-  }
-
-  /**
-   * Asserts that an object is null.  If it is not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertNull(String message, Object object) {
-    assertTrue(message, object == null);
-  }
-
-  /**
-   * Asserts that two objects refer to the same object. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertSame(String message, Object expected, Object actual) {
-    if(expected == actual) {
-      return;
-    }
-    failNotSame(message, expected, actual);
-  }
-
-  /**
-   * Asserts that two objects refer to the same object. If they are not
-   * the same an AssertionFailedError is thrown.
-   */
-  static public void assertSame(Object expected, Object actual) {
-    assertSame(null, expected, actual);
-  }
-
-  /**
-   * Asserts that two objects refer to the same object. If they are not
-   * an AssertionFailedError is thrown with the given message.
-   */
-  static public void assertNotSame(String message, Object expected, Object actual) {
-    if(expected == actual) {
-      failSame(message);
-    }
-  }
-
-  /**
-   * Asserts that two objects refer to the same object. If they are not
-   * the same an AssertionFailedError is thrown.
-   */
-  static public void assertNotSame(Object expected, Object actual) {
-    assertNotSame(null, expected, actual);
-  }
-
-  static public void assertEquals(final byte[] expected, final byte[] actual) {
-    assertEquals("", expected, actual);
-  }
-  
-  static public void assertEquals(final String message, final byte[] expected, final byte[] actual) {
-    if(expected == actual) {
-        return;
-    }
-    if(null == expected) {
-      fail("expected a null array, but not null found. " + message);
-    }
-    if(null == actual) {
-        fail("expected not null array, but null found. " + message);
-    }
-    
-    assertEquals("arrays don't have the same size. " + message, expected.length, actual.length);
-
-    for(int i= 0; i < expected.length; i++) {
-        if(expected[i] != actual[i]) {
-            fail("arrays differ firstly at element [" + i +"]; "
-                + format(message, expected[i], actual[i]));
-        }
-    }
-  }
-  
-  static private void failSame(String message) {
-    String formatted = "";
-    if(message != null) {
-      formatted = message + " ";
-    }
-    fail(formatted + "expected not same");
-  }
-
-  static private void failNotSame(String message, Object expected, Object actual) {
-    String formatted = "";
-    if(message != null) {
-      formatted = message + " ";
-    }
-    fail(formatted + "expected same:<" + expected + "> was not:<" + actual + ">");
-  }
-
-  static private void failNotEquals(String message, Object expected, Object actual) {
-    fail(format(message, expected, actual));
-  }
-
-  static String format(String message, Object expected, Object actual) {
-    String formatted = "";
-    if(message != null) {
-      formatted = message + " ";
-    }
-
-    return formatted + "expected:<" + expected + "> but was:<" + actual + ">";
-  }
-}
diff --git a/src/org/testng/ClassMethodMap.java b/src/org/testng/ClassMethodMap.java
deleted file mode 100755
index b3feeef..0000000
--- a/src/org/testng/ClassMethodMap.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * This class maintains a map of <CODE><Class, List<ITestNGMethod>></CODE>.
- * It is used by TestWorkers to determine if the method they just ran
- * is the last of its class, in which case it's time to invoke all the
- * afterClass methods.
- * 
- * @author <a href='mailto:the[dot]mindstorm[at]gmail[dot]com'>Alex Popescu</a>
- */
-public class ClassMethodMap {
-  private Map<Object, List<ITestNGMethod>> m_classMap = Maps.newHashMap();
-  // These two variables are used throughout the workers to keep track
-  // of what beforeClass/afterClass methods have been invoked
-  private Map<ITestClass, Set<Object>> m_beforeClassMethods = Maps.newHashMap();
-  private Map<ITestClass, Set<Object>> m_afterClassMethods = Maps.newHashMap();
-  
-  public ClassMethodMap(ITestNGMethod[] methods) {
-    for (ITestNGMethod m : methods) {
-      for (Object instance : m.getInstances()) {
-        List<ITestNGMethod> l = m_classMap.get(instance);
-        if (l == null) {
-          l = Lists.newArrayList();
-          m_classMap.put(instance, l);
-        }
-        l.add(m);
-      }
-    }
-  }
-  
-  /**
-   * Remove the method from this map and returns true if it is the last
-   * of its class.
-   */
-  public synchronized boolean removeAndCheckIfLast(ITestNGMethod m, Object instance) {
-    List<ITestNGMethod> l = m_classMap.get(instance);
-    l.remove(m);
-    return l.size() == 0;
-  }
-
-  private Class<?> getMethodClass(ITestNGMethod m) {
-    return m.getTestClass().getRealClass();
-  }
-  
-  public Map<ITestClass, Set<Object>> getInvokedBeforeClassMethods() {
-    return m_beforeClassMethods;
-  }
-  
-  public Map<ITestClass, Set<Object>> getInvokedAfterClassMethods() {
-    return m_afterClassMethods;
-  }
-  
-  public void clear() {
-    for(Set<Object> instances: m_beforeClassMethods.values()) {
-      instances.clear();
-      instances= null;
-    }
-    for(Set<Object> instances: m_afterClassMethods.values()) {
-      instances.clear();
-      instances= null;
-    }
-    m_beforeClassMethods.clear();
-    m_afterClassMethods.clear();
-  }
-}
diff --git a/src/org/testng/FileAssert.java b/src/org/testng/FileAssert.java
deleted file mode 100755
index 505d9bd..0000000
--- a/src/org/testng/FileAssert.java
+++ /dev/null
@@ -1,329 +0,0 @@
-package org.testng;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Assertion tool for File centric assertions.
- * Conceptually this is an extension of {@link Assert}
- * Presents assertion methods with a more natural parameter order.
- * The order is always <B>actualValue</B>, <B>expectedValue</B> [, message].
- *
- * @author <a href='mailto:pmendelson at trueoutcomes.com'>Paul Mendelon</a>
- * @since 5.6
- * @version $Revision: 650 $, $Date: 2009-01-05 03:51:54 -0800 (Mon, 05 Jan 2009) $
- */
-public class FileAssert {
-
-  /**
-     * Protect constructor since it is a static only class
-     */
-  private FileAssert() {
-  	// hide constructor
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is a proper directory. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertDirectory(File tstvalue, String message) {
-  	boolean condition=false;
-  	try {
-  	condition=tstvalue.isDirectory();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,fileType(tstvalue),"Directory", message);
-  	}
-  	if(!condition) {
-  	failFile(tstvalue,fileType(tstvalue),"Directory", message);
-  	}
-  }
-  
-  static public void assertDirectory(File tstvalue) {
-  	assertDirectory(tstvalue, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is a proper directory. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertFile(File tstvalue, String message) {
-  	boolean condition=false;
-  	try {
-  	condition=tstvalue.isFile();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,fileType(tstvalue),"File", message);
-  	}
-  	if(!condition) {
-  	failFile(tstvalue,fileType(tstvalue),"File", message);
-  	}
-  }
-  
-  /**
-     * @see #assertFile(File, String)
-     */
-  static public void assertFile(File tstvalue) {
-  	assertFile(tstvalue, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is a file of exactly {@code expected} characters
-     * or a directory of exactly {@code expected} entries. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertLength(File tstvalue, long expected, String message) {
-  	long actual=-1L;
-  	try {
-  	actual=tstvalue.isDirectory()?tstvalue.list().length:tstvalue.length();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,String.valueOf(actual),String.valueOf(expected), message);
-  	}
-  	if(actual!=expected) {
-  	failFile(tstvalue,String.valueOf(actual),String.valueOf(expected), message);
-  	}
-  }
-  
-  /**
-     * @see #assertLength(File, long, String)
-     */
-  static public void assertLength(File tstvalue, long expected) {
-  	assertLength(tstvalue, expected, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is a file of at least {@code expected} characters
-     * or a directory of at least {@code expected} entries. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertMinLength(File tstvalue, long expected, String message) {
-  	long actual=-1L;
-  	try {
-  	actual=tstvalue.isDirectory()?tstvalue.list().length:tstvalue.length();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,String.valueOf(actual),"at least "+String.valueOf(expected), message);
-  	}
-  	if(actual<expected) {
-  	failFile(tstvalue,String.valueOf(actual),"at least "+String.valueOf(expected), message);
-  	}
-  }
-  
-  /**
-     * @see #assertMinLength(File, long, String)
-     */
-  static public void assertMinLength(File tstvalue, long expected) {
-  	assertMinLength(tstvalue, expected, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is a file of at most {@code expected} characters
-     * or a directory of at most {@code expected} entries. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertMaxLength(File tstvalue, long expected, String message) {
-  	long actual=-1L;
-  	try {
-  	actual=tstvalue.isDirectory()?tstvalue.list().length:tstvalue.length();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,String.valueOf(actual),"at most "+String.valueOf(expected), message);
-  	}
-  	if(actual>expected) {
-  	failFile(tstvalue,String.valueOf(actual),"at most "+String.valueOf(expected), message);
-  	}
-  }
-  
-  /**
-     * @see #assertMaxLength(File, long, String)
-     */
-  static public void assertMaxLength(File tstvalue, long expected) {
-  	assertMaxLength(tstvalue, expected, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is readable. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertReadable(File tstvalue, String message) {
-  	boolean condition=false;
-  	try {
-  	condition=tstvalue.canRead();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,fileAccess(tstvalue),"Read Access", message);
-  	}
-  	if(!condition) {
-  	failFile(tstvalue,fileAccess(tstvalue),"Read Access", message);
-  	}
-  }
-  
-  /**
-     * @see #assertReadable(File, String)
-     */
-  static public void assertReadable(File tstvalue) {
-  	assertReadable(tstvalue, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is writeable. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertWriteable(File tstvalue, String message) {
-  	boolean condition=false;
-  	try {
-  	condition=tstvalue.canWrite();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,fileAccess(tstvalue),"Write Access", message);
-  	}
-  	if(!condition) {
-  	failFile(tstvalue,fileAccess(tstvalue),"Write Access", message);
-  	}
-  }
-  
-  /**
-     * @see #assertWriteable(File, String)
-     */
-  static public void assertWriteable(File tstvalue) {
-  	assertReadable(tstvalue, null);
-  }
-  
-  /**
-     * Asserts that a {@code tstvalue} is readable and writeable. If it isn't,
-     * an AssertionError, with the given message, is thrown.
-     * @param tstvalue the file to evaluate
-     * @param message the assertion error message
-     */
-  static public void assertReadWrite(File tstvalue, String message) {
-  	boolean condition=false;
-  	try {
-  	condition=tstvalue.canRead() && tstvalue.canWrite();
-  	} catch(SecurityException e) {
-  	failSecurity(e,tstvalue,fileAccess(tstvalue),"Read/Write Access", message);
-  	}
-  	if(!condition) {
-  	failFile(tstvalue,fileAccess(tstvalue),"Read/Write Access", message);
-  	}
-  }
-  
-  /**
-     * @see #assertReadWrite(File, String)
-     */
-  static public void assertReadWrite(File tstvalue) {
-  	assertReadWrite(tstvalue, null);
-  }
-  
-  /**
-     * Fails a test with the given message and wrapping the original exception.
-     *
-     * @param message the assertion error message
-     * @param realCause the original exception
-     */
-  static public void fail(String message, Throwable realCause) {
-  	AssertionError ae = new AssertionError(message);
-  	ae.initCause(realCause);
-  
-  	throw ae;
-  }
-  
-  /**
-     * Fails a test with the given message.
-     * @param message the assertion error message
-     */
-  static public void fail(String message) {
-  	throw new AssertionError(message);
-  }
-  
-  /**
-     * Fails a test with no message.
-     */
-  static public void fail() {
-  	fail(null);
-  }
-  
-  /**
-     * Formats failure for file assertions
-     */
-  private static void failFile(File path, String actual, String expected, String message) {
-  	String formatted = "";
-  	if(message != null) {
-  	formatted = message + " ";
-  	}
-  	fail(formatted + "expected <" + expected +"> but was <" + toString(path) + ">"
-  		+(expected!=null?"<" + expected +">":""));
-  }
-  
-  /**
-     * @param tstvalue
-     * @param string
-     * @param string2
-     * @param message
-     */
-  private static void failSecurity(Exception e, File path, String actual, String expected, String message) {
-  	String formatted = "";
-  	if(message != null) {
-  	formatted = message + " ";
-  	}
-  	fail(formatted + "expected <" + expected +"> but was <" + toString(path) + ">"
-  		+"<"
-  		+ (e!=null && e.getMessage()!=null && e.getMessage().length()>0
-  			?e.getMessage()
-  			:"not authorized by JVM")
-  		+ ">");
-  }
-  
-  /**
-     * String representation of what sort of file {@code path} is.
-     */
-  private static String fileType(File path) {
-  	try {
-  	if(!path.exists())
-  		return "Non existant";
-  	else if (path.isDirectory())
-  		return "Directory";
-  	else if (path.isFile())
-  		return "File";
-  	else
-  		return "Special File";
-  	} catch (SecurityException e) {
-  	return "Unauthorized";
-  	}
-  }
-  
-  /**
-     * String representation of what sort of file {@code path} is.
-     */
-  private static String fileAccess(File path) {
-  	try {
-  	if(!path.exists())
-  		return "Non existant";
-  	else if (path.canWrite() && path.canRead())
-  		return "Read/Write Access";
-  	else if (path.canRead())
-  		return "Read only Access";
-  	else if (path.canWrite())
-  		return "Write only Access";
-  	else
-  		return "No Access";
-  	} catch (SecurityException e) {
-  	return "Unauthorized";
-  	}
-  }
-  
-  private static String toString(File path) {
-  	try {
-  	return path.getCanonicalPath();
-  	} catch(IOException e) {
-  	return path.getAbsolutePath();
-  	}
-  }
-}
diff --git a/src/org/testng/IAnnotationTransformer.java b/src/org/testng/IAnnotationTransformer.java
deleted file mode 100755
index 29f96b5..0000000
--- a/src/org/testng/IAnnotationTransformer.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.testng;
-
-import org.testng.annotations.ITestAnnotation;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public interface IAnnotationTransformer extends ITestNGListener {
-
-  /**
-   * This method will be invoked by TestNG to give you a chance
-   * to modify a TestNG annotation read from your test classes.
-   * You can change the values you need by calling any of the
-   * setters on the ITest interface.
-   * 
-   * Note that only one of the three parameters testClass,
-   * testConstructor and testMethod will be non-null.
-   * 
-   * @param annotation The annotation that was read from your
-   * test class.
-   * @param testClass If the annotation was found on a class, this
-   * parameter represents this class (null otherwise).
-   * @param testConstructor If the annotation was found on a constructor,
-   * this parameter represents this constructor (null otherwise).
-   * @param testMethod If the annotation was found on a method,
-   * this parameter represents this method (null otherwise).
-   */
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod);
-  
-}
diff --git a/src/org/testng/IAnnotationTransformer2.java b/src/org/testng/IAnnotationTransformer2.java
deleted file mode 100755
index 8bd0ef5..0000000
--- a/src/org/testng/IAnnotationTransformer2.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.testng;
-
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-/**
- * Use this interface instead of IAnnotationTransformer if you want to modify any TestNG
- * annotation besides @Test.
- */
-public interface IAnnotationTransformer2 extends IAnnotationTransformer {
-  /**
-   * Transform an IConfiguration annotation. 
-   *
-   * Note that only one of the three parameters testClass,
-   * testConstructor and testMethod will be non-null.
-   * 
-   * @param annotation The annotation that was read from your
-   * test class.
-   * @param testClass If the annotation was found on a class, this
-   * parameter represents this class (null otherwise).
-   * @param testConstructor If the annotation was found on a constructor,
-   * this parameter represents this constructor (null otherwise).
-   * @param testMethod If the annotation was found on a method,
-   * this parameter represents this method (null otherwise).
-   */
-  public void transform(IConfigurationAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod);
-  
-  /**
-   * Transform an IDataProvider annotation. 
-   *
-   * @param method The method annotated with the IDataProvider annotation.
-   */
-  public void transform(IDataProviderAnnotation annotation, Method method);
-
-  /**
-   * Transform an IFactory annotation. 
-   *
-   * @param method The method annotated with the IFactory annotation.
-   */
-  public void transform(IFactoryAnnotation annotation, Method method);
-}
diff --git a/src/org/testng/IAttributes.java b/src/org/testng/IAttributes.java
deleted file mode 100755
index 7bcb850..0000000
--- a/src/org/testng/IAttributes.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-import java.util.Set;
-
-/**
- * A trait that is used by all interfaces that lets the user add or remove their
- * own attributes.
- */
-public interface IAttributes extends Serializable {
-  /**
-   * @param name The name of the attribute to return
-   */
-  public Object getAttribute(String name);
-
-  /**
-   * Set a custom attribute.
-   */
-  public void setAttribute(String name, Object value);
-
-  /**
-   * @return all the attributes names.
-   */
-  public Set<String> getAttributeNames();
-
-  /**
-   * Remove the attribute
-   * 
-   * @return the attribute value if found, null otherwise
-   */
-  public Object removeAttribute(String name);
-}
diff --git a/src/org/testng/IClass.java b/src/org/testng/IClass.java
deleted file mode 100755
index d27042f..0000000
--- a/src/org/testng/IClass.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-
-/**
- * <code>IClass</code> represents a test class and a collection of its instances.
- * 
- * @author <a href = "mailto:cedric@beust.com">Cedric Beust</a>
- */
-public interface IClass extends Serializable {
-  
-  /**
-   * @return this test class name.  This is the name of the 
-   * corresponding Java class.
-   */
-  String getName();
-  
-  /**
-   * If this class implements ITest, returns its test name, otherwise returns null.
-   */
-  String getTestName();
-
-  /**
-   * @return the Java class corresponding to this IClass.
-   */
-  Class getRealClass();
-
-  Object[] getInstances(boolean create);
-  
-  int getInstanceCount();
-  
-  long[] getInstanceHashCodes();
-
-  void addInstance(Object instance);
-}
diff --git a/src/org/testng/IExtraOutput.java b/src/org/testng/IExtraOutput.java
deleted file mode 100755
index 117c964..0000000
--- a/src/org/testng/IExtraOutput.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-import java.util.List;
-
-
-/**
- * This class is used by Reporter to store the extra output to be later
- * included in the HTML report:
- * - User-generated report
- * - Parameter info
- * 
- * Created on Feb 16, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IExtraOutput extends Serializable {
-
-  /**
-   * @return a List<String> representing the parameters passed
-   * to this test method, or an empty List if no parameters were used.
-   */
-  public List<String> getParameterOutput();
-
-}
diff --git a/src/org/testng/IHookCallBack.java b/src/org/testng/IHookCallBack.java
deleted file mode 100755
index 084f7db..0000000
--- a/src/org/testng/IHookCallBack.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.testng;
-
-/**
- * A parameter of this type will be passed to the run() method of a IHookable.
- * Invoking runTestMethod() on that parameter will cause the test method currently
- * being diverted to be invoked.
- * 
- *  <p>
- *  
- * <b>This interface is not meant to be implemented by clients, only by TestNG.</b>
- * 
- * @see org.testng.IHookable
- * 
- * 
- * @author cbeust
- * Jan 28, 2006
- */
-public interface IHookCallBack {
-  
-  /**
-   * Invoke the test method currently being hijacked.
-   */
-  public void runTestMethod(ITestResult testResult);
-}
diff --git a/src/org/testng/IHookable.java b/src/org/testng/IHookable.java
deleted file mode 100755
index a281759..0000000
--- a/src/org/testng/IHookable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.testng;
-
-/**
- * If a test class implements this interface, its run() method
- * will be invoked instead of each @Test method found.  The invocation of
- * the test method will then be performed upon invocation of the callBack()
- * method of the IHookCallBack parameter.
- * 
- * This is useful to test classes that require JAAS authentication, which can
- * be implemented as follows:
- * 
- * <pre>
- * public void run(final IHookCallBack icb, ITestResult testResult) {
- *   // Preferably initialized in a @Configuration method
- *   mySubject = authenticateWithJAAs();
- *   
- *   Subject.doAs(mySubject, new PrivilegedExceptionAction() {
- *     public Object run() {
- *       icb.callback(testResult);
- *     }
- *   };
- * }
- * </pre>
- * 
- * @author cbeust
- * Jan 28, 2006
- */
-public interface IHookable {
-  public void run(IHookCallBack callBack, ITestResult testResult);
-}
diff --git a/src/org/testng/IInstanceInfo.java b/src/org/testng/IInstanceInfo.java
deleted file mode 100755
index 6416274..0000000
--- a/src/org/testng/IInstanceInfo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.testng;
-
-/**
- * This class defines a pair of instance/class.  A method with @Factory
- * can return an array of these objects instead of Object[] so that
- * instances can be dynamic proxies or mock objects and still provide
- * enough information to TestNG to figure out what classes the 
- * annotations should be looked up in. 
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IInstanceInfo {
-
-  /**
-   * @return The instance on which the tests will be invoked.
-   */
-  public Object getInstance();
-  
-  /**
-   * @return The class on which the TestNG annotations should be looked for.
-   */
-  public Class getInstanceClass();
-}
diff --git a/src/org/testng/IInvokedMethod.java b/src/org/testng/IInvokedMethod.java
deleted file mode 100755
index dfd4e96..0000000
--- a/src/org/testng/IInvokedMethod.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.testng;
-
-/**
- * An interface representing a method that has been invoked by TestNG.
- */
-public interface IInvokedMethod {
-
-  /**
-   * @return true if this method is a test method
-   */
-  public abstract boolean isTestMethod();
-
-  /**
-   * @return true if this method is a configuration method (@BeforeXXX or @AfterXXX)
-   */
-  public abstract boolean isConfigurationMethod();
-
-  /**
-   * @return the test method
-   */
-  public abstract ITestNGMethod getTestMethod();
-
-  /**
-   * @return the date when this method was run
-   */
-  public abstract long getDate();
-
-}
\ No newline at end of file
diff --git a/src/org/testng/IInvokedMethodListener.java b/src/org/testng/IInvokedMethodListener.java
deleted file mode 100755
index c042228..0000000
--- a/src/org/testng/IInvokedMethodListener.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.testng;
-
-/**
- * A listener that gets invoked before and after a method is invoked by TestNG.
- * This listener will only be invoked for configuration and test methods.
- */
-public interface IInvokedMethodListener extends ITestNGListener {
-
-  void beforeInvocation(IInvokedMethod method, ITestResult testResult);
-
-  void afterInvocation(IInvokedMethod method, ITestResult testResult);
-}
diff --git a/src/org/testng/IInvokedMethodListener2.java b/src/org/testng/IInvokedMethodListener2.java
deleted file mode 100644
index 8b5ca4a..0000000
--- a/src/org/testng/IInvokedMethodListener2.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng;
-
-/**
- * Implement this interface if you need a handle to {@link ITestContext}.
- *
- * @author karthik.krishnan at gmail.com (Karthik Krishnan)
- */
-public interface IInvokedMethodListener2 extends IInvokedMethodListener {
-
-  /**
-   * To be implemented if the method needs a handle to contextual information.
-   */
-  void beforeInvocation(IInvokedMethod method, ITestResult testResult,
-      ITestContext context);
-
-  /**
-   * To be implemented if the method needs a handle to contextual information.
-   */
-  void afterInvocation(IInvokedMethod method, ITestResult testResult,
-      ITestContext context);
-
-}
diff --git a/src/org/testng/IMethodInstance.java b/src/org/testng/IMethodInstance.java
deleted file mode 100755
index d882c61..0000000
--- a/src/org/testng/IMethodInstance.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.testng;
-
-
-/**
- * This interface captures a test method along with all the instances it should
- * be run on.
- */
-public interface IMethodInstance {
-
-  ITestNGMethod getMethod();
-  
-  Object[] getInstances();
-}
diff --git a/src/org/testng/IMethodInterceptor.java b/src/org/testng/IMethodInterceptor.java
deleted file mode 100755
index 48c5fc1..0000000
--- a/src/org/testng/IMethodInterceptor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.testng;
-
-import java.util.List;
-
-/**
- * This class is used to alter the list of test methods that TestNG is about to run.
- * 
- * <p>
- * 
- * An instance of this class will be invoked right before TestNG starts invoking test methods.
- * Only methods that have no dependents and that don't depend on any other test methods will
- * be passed in parameter.  Implementers of this interface need to return a list of {@link IMethodInstance}
- * that represents the list of test methods they want run.  TestNG will run these methods in the
- * same order found in the returned value.
- * 
- * <p>
- * 
- * Typically, the returned list will be just the methods passed in parameter but sorted 
- * differently, but it can actually have any size (it can be empty, it can be of the 
- * same size as the original list or it can contain more methods). 
- * 
- * <p>
- * 
- * The {@link ITestContext} is passed in the <tt>intercept</tt> method so that implementers can set user values
- * (using {@link ITestContext#setAttribute(String, Object)}), which they can then look up
- * later while generating the reports.
- *  
- * @author cbeust
- */
-public interface IMethodInterceptor extends ITestNGListener {
-  
-  List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context);
-
-}
diff --git a/src/org/testng/IMethodSelector.java b/src/org/testng/IMethodSelector.java
deleted file mode 100755
index 3ad5f5f..0000000
--- a/src/org/testng/IMethodSelector.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * This interface is used to augment or replace TestNG's algorithm to 
- * decide whether a test method should be included in a test run.
- * 
- * Created on Sep 26, 2005
- * @author cbeust
- */
-public interface IMethodSelector extends Serializable {
-  
-  /**
-   * @param context The selector context.  The implementation of this method
-   * can invoke setHalted(true) to indicate that no other Method Selector
-   * should be invoked by TestNG after this one.  Additionally, this
-   * implementation can manipulate the Map object returned by
-   * getUserData().
-   * @param method The test method
-   * @param isTestMethod true if this is a @Test method, false if it's a 
-   * configuration method
-   * @return true if this method should be included in the test run, false
-   * otherwise
-   */
-  public boolean includeMethod(IMethodSelectorContext context,
-      ITestNGMethod method, boolean isTestMethod);
-
-  /**
-   * Invoked when all the test methods are known so that the method selector
-   * can perform additional work, such as adding the transitive closure of
-   * all the groups being included and depended upon.
-   */
-  public void setTestMethods(List<ITestNGMethod> testMethods);
-  
-}
diff --git a/src/org/testng/IMethodSelectorContext.java b/src/org/testng/IMethodSelectorContext.java
deleted file mode 100755
index 999580a..0000000
--- a/src/org/testng/IMethodSelectorContext.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.testng;
-
-import java.util.Map;
-
-/**
- * An implementation of this interface is passed to all the Method Selectors
- * when their includeMethod() is invoked.  Method selectors can invoke
- * any method of this context at that time.
- * 
- * Created on Jan 3, 2007
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IMethodSelectorContext {
-
-  /**
-   * @return true if no more Method Selectors should be invoked after
-   * the current one.
-   */
-  public boolean isStopped();
-  
-  /**
-   * Indicate that no other Method Selectors should be invoked after the
-   * current one if stopped is false.
-   * @param stopped
-   */
-  public void setStopped(boolean stopped);
-  
-  /**
-   * @return a Map that can be freely manipulated by the Method Selector.
-   * This can be used to share information among several Method Selectors.
-   */
-  public Map<Object, Object> getUserData();
-}
diff --git a/src/org/testng/IObjectFactory.java b/src/org/testng/IObjectFactory.java
deleted file mode 100755
index 374e6cb..0000000
--- a/src/org/testng/IObjectFactory.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-import java.lang.reflect.Constructor;
-
-/**
- * Factory used to create all test instances.
- * @author Hani Suleiman
- * @since 5.6
- */
-public interface IObjectFactory extends Serializable{
-  Object newInstance(Constructor constructor, Object... params);
-}
diff --git a/src/org/testng/IReporter.java b/src/org/testng/IReporter.java
deleted file mode 100755
index 66cffea..0000000
--- a/src/org/testng/IReporter.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.testng;
-
-import org.testng.xml.XmlSuite;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * This interface can be implemented by clients to generate a report.  Its method 
- * generateReport() will be invoked after all the suite have run and the parameters
- * give all the test results that happened during that run.
- * 
- * @author cbeust
- * Feb 17, 2006
- */
-public interface IReporter extends ITestNGListener {
-  /**
-   * Generate a report for the given suites into the specified output directory.
-   */
-  void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory);
-}
diff --git a/src/org/testng/IResultMap.java b/src/org/testng/IResultMap.java
deleted file mode 100755
index df18a1f..0000000
--- a/src/org/testng/IResultMap.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Set;
-
-public interface IResultMap extends Serializable {
-
-  public void addResult(ITestResult result, ITestNGMethod method);
-  
-  public Set<ITestResult> getResults(ITestNGMethod method);
-  
-  public Set<ITestResult> getAllResults();
-
-  public void removeResult(ITestNGMethod m);
-
-  public Collection<ITestNGMethod> getAllMethods();
-  
-  public int size();
-
-}
diff --git a/src/org/testng/IRetryAnalyzer.java b/src/org/testng/IRetryAnalyzer.java
deleted file mode 100755
index 58cf502..0000000
--- a/src/org/testng/IRetryAnalyzer.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.testng;
-
-/**
- * Interface to implement to be able to have a chance to retry a failed test.
- * 
- * @author tocman at gmail.com (Jeremie Lenfant-Engelmann)
- *
- */
-public interface IRetryAnalyzer {
-
-  /**
-   * Returns true if the test method has to be retried, false otherwise.
-   * 
-   * @param result The result of the test method that just ran.
-   * @return true if the test method has to be retried, false otherwise.
-   */
-  public boolean retry(ITestResult result);
-}
diff --git a/src/org/testng/ISuite.java b/src/org/testng/ISuite.java
deleted file mode 100755
index 2f9432b..0000000
--- a/src/org/testng/ISuite.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.testng;
-
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlSuite;
-
-/**
- * Interface defining a Test Suite.
- *
- * @author Cedric Beust, Aug 6, 2004
- *
- */
-public interface ISuite extends IAttributes {
-
-  /**
-   * @return the name of this suite.
-   */
-  public String getName();
-
-  /**
-   * @return The results for this suite.
-   */
-  public Map<String, ISuiteResult> getResults();
-
-  /**
-   * @return The object factory used to create all test instances.
-   */
-  public IObjectFactory getObjectFactory();
-  
-  /**
-   * @return The output directory used for the reports.
-   */
-  public String getOutputDirectory();
-
-  /**
-   * @return true if the tests must be run in parallel.
-   */
-  public String getParallel();
-
-  /**
-   * @return The value of this parameter, or null if none was specified.
-   */
-  public String getParameter(String parameterName);
-
-  /**
-   * Retrieves the map of groups and their associated test methods.
-   *
-   * @return A map where the key is the group and the value is a list
-   * of methods used by this group.
-   */
-  public Map<String, Collection<ITestNGMethod>> getMethodsByGroups();
-
-  /**
-   * Retrieves the list of all the methods that were invoked during this run.
-   * @return a collection of ITestNGMethods belonging to all tests included in the suite.
-   */
-  public Collection<ITestNGMethod> getInvokedMethods();
-
-  /**
-   * @return All the methods that were not included in this test run.
-   */
-  public Collection<ITestNGMethod> getExcludedMethods();
-
-  /**
-   * Triggers the start of running tests included in the suite.
-   */
-  public void run();
-
-  /**
-   * @return The host where this suite was run, or null if it was run locally.  The
-   * returned string has the form:  host:port
-   */
-  public String getHost();
-  
-  /**
-   * Retrieves the shared state for a suite.
-   * 
-   * @return the share state of the current suite. 
-   */
-  public SuiteRunState getSuiteState();
-  
-  /**
-   * @return the annotation finder used for the specified type (JDK5 or javadoc)
-   */
-  public IAnnotationFinder getAnnotationFinder(String type);
-
-  /**
-   * @return The representation of the current XML suite file.
-   */
-  public XmlSuite getXmlSuite();
-
-}
diff --git a/src/org/testng/ISuiteListener.java b/src/org/testng/ISuiteListener.java
deleted file mode 100755
index 16b6532..0000000
--- a/src/org/testng/ISuiteListener.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng;
-
-
-/**
- * Listener for test suites.
- *
- * @author Cedric Beust, Aug 6, 2004
- * 
- */
-public interface ISuiteListener extends ITestNGListener {
-  /**
-   * This method is invoked before the SuiteRunner starts.
-   */
-  public void onStart(ISuite suite);
-
-  /**
-   * This method is invoked after the SuiteRunner has run all
-   * the test suites.
-   */
-  public void onFinish(ISuite suite);
-  
-}
diff --git a/src/org/testng/ISuiteResult.java b/src/org/testng/ISuiteResult.java
deleted file mode 100755
index e52b27c..0000000
--- a/src/org/testng/ISuiteResult.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-
-
-/**
- * This class represents the result of a suite run.
- *
- * @author Cedric Beust, Aug 6, 2004
- * 
- */
-public interface ISuiteResult extends Serializable {
-  
-  /**
-   * @return The name of the property file for these tests.
-   */
-  public String getPropertyFileName();
-  
-  /**
-   * @return The testing context for these tests.
-   */
-  public ITestContext getTestContext();
-
-}
diff --git a/src/org/testng/ITest.java b/src/org/testng/ITest.java
deleted file mode 100755
index 98b3b6e..0000000
--- a/src/org/testng/ITest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.testng;
-
-/**
- * If a test class implements this interface, it will receive a 
- * special treatment, such as having the test name displayed 
- * in the HTML reports.
- * 
- * @author cbeust
- * Jun 6, 2006
- */
-public interface ITest {
-  
-  public String getTestName();
-
-}
diff --git a/src/org/testng/ITestClass.java b/src/org/testng/ITestClass.java
deleted file mode 100755
index 66df992..0000000
--- a/src/org/testng/ITestClass.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-
-/**
- * This class represents a test class:
- * <ul>
- * <li> The test methods
- * <li>The configuration methods (test and method)
- * <li>The class file
- * </ul>
- * 
- * Note that the methods returned by instances of this class
- * are expected to be correct at runtime.  In other words,
- * they might differ from what the ITestMethodFinder returned
- * since ITestClass will take into account the groups being
- * included and excluded.
- * 
- * @author <a href = "mailto:cedric@beust.com">Cedric Beust</a>
- */
-public interface ITestClass extends IClass, Serializable {
-
-  /**
-   * Returns all the instances the methods will be invoked upon.
-   * This will typically be an array of one object in the absence
-   * of a @Factory annotation.
-   * 
-   * @param reuse flag if a new set of instances must be returned
-   *  (if set to <tt>false</tt>) 
-   * @return All the instances the methods will be invoked upon.
-   * 
-   * {@inheritDoc}
-   */
-  Object[] getInstances(boolean reuse);
-  
-  /**
-   * TODO cquezel JavaDoc. 
-   *
-   * {@inheritDoc}
-   */
-  long[] getInstanceHashCodes();
-
-  /**
-   * @return The number of instances used in this class.  This method
-   * is needed for serialization since we don't know ahead of time if the
-   * instances of the test classes will be serializable.
-   */
-  int getInstanceCount();
-  
-  /**
-   * Returns all the applicable test methods.
-   * @return All the applicable test methods.
-   */
-  ITestNGMethod[] getTestMethods();
-  
-  /**
-   * Returns all the methods that should be invoked
-   * before a test method is invoked.
-   * @return All the methods that should be invoked
-   * before a test method is invoked.
-   */
-  ITestNGMethod[] getBeforeTestMethods();
-
-  /**
-   * Returns all the methods that should be invoked
-   * after a test method completes.
-   * @return All the methods that should be invoked
-   * after a test method completes.
-   */
-  ITestNGMethod[] getAfterTestMethods();
-  
-  /**
-   * Return all the methods that should be invoked
-   * after the test class has been created and before
-   * any of its test methods is invoked.
-   * @return All the methods that should be invoked
-   * after the test class has been created and before
-   * any of its test methods is invoked.
-   */
-  ITestNGMethod[] getBeforeClassMethods();
-
-  /**
-   * Returns all the methods that should be invoked
-   * after all the tests have been run on this class.
-   * @return All the methods that should be invoked
-   * after all the tests have been run on this class.
-   */
-  ITestNGMethod[] getAfterClassMethods();
-
-  /**
-   * Returns All the methods that should be invoked
-   * before the suite is run.
-   * @return All the methods that should be invoked
-   * before the suite is run.
-   */
-  ITestNGMethod[] getBeforeSuiteMethods();
-
-  /**
-   * Returns all the methods that should be invoked
-   * after the suite has run.
-   * @return All the methods that should be invoked
-   * after the suite has run.
-   */
-  ITestNGMethod[] getAfterSuiteMethods();
-
-  /**
-   * Returns all @Configuration methods that should be invoked before any others in the 
-   * current test.
-   * @return all @Configuration methods that should be invoked before any others in the current test.
-   */
-  ITestNGMethod[] getBeforeTestConfigurationMethods();
-  
-  /**
-   * Returns all @Configuration methods that should be invoked last before any others
-   * in the current test.
-   * @return all @Configuration methods that should be invoked last before any others
-   * in the current test.
-   */
-  ITestNGMethod[] getAfterTestConfigurationMethods();
-  
-  /**
-   * Returns all @Configuration methods that should be invoked before certain groups.
-   * @return all @Configuration methods that should be invoked before certain groups.
-   */
-  ITestNGMethod[] getBeforeGroupsMethods();
-
-  /**
-   * Returns all @Configuration methods that should be invoked after certain groups.
-   * @return all @Configuration methods that should be invoked after certain groups.
-   */
-  ITestNGMethod[] getAfterGroupsMethods();
-}
diff --git a/src/org/testng/ITestClassFinder.java b/src/org/testng/ITestClassFinder.java
deleted file mode 100755
index 008e020..0000000
--- a/src/org/testng/ITestClassFinder.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.testng;
-
-/**
- * This class is used by TestNG to locate the test classes.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface ITestClassFinder {
-  /**
-   * @return An array of all the classes that contain test
-   * methods.  This method usually returns an array of one
-   * class, which is the class on which TestNG is running,
-   * except in the following cases.
-   * - TestNG:  the class contains an @Factory method
-   * - JUnit:  the class contains a suite() method
-   */
-  public IClass[] findTestClasses();
-  
-  /**
-   * Return the IClass for a given class
-   */
-  public IClass getIClass(Class cls);
-
-}
diff --git a/src/org/testng/ITestContext.java b/src/org/testng/ITestContext.java
deleted file mode 100644
index 1a820c9..0000000
--- a/src/org/testng/ITestContext.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.testng;
-
-import org.testng.xml.XmlTest;
-
-import java.util.Collection;
-import java.util.Date;
-
-
-/**
- * This class defines a test context which contains all the information
- * for a given test run.  An instance of this context is passed to the
- * test listeners so they can query information about their
- * environment.
- *
- * @author Cedric Beust, Aug 6, 2004
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface ITestContext extends IAttributes {
-  
-  /**
-   * The name of this test.
-   */
-  public String getName();
-
-  /**
-   * When this test started running.
-   */
-  public Date getStartDate();
-
-  /**
-   * When this test stopped running.
-   */
-  public Date getEndDate();
-
-  /**
-   * @return A list of all the tests that run successfully.
-   */
-  public IResultMap getPassedTests();
-  
-  /**
-   * @return A list of all the tests that were skipped
-   */
-  public IResultMap  getSkippedTests();
-  
-  /**
-   * @return A list of all the tests that failed but are being ignored because
-   * annotated with a successPercentage.
-   */
-  public IResultMap  getFailedButWithinSuccessPercentageTests();
-  
-  /**
-   * @return A map of all the tests that passed, indexed by
-   * their ITextMethor.
-   * 
-   * @see org.testng.ITestNGMethod
-   */
-  public IResultMap getFailedTests();
-
-  /**
-   * @return All the groups that are included for this test run.
-   */
-  public String[] getIncludedGroups();
-  
-  /**
-   * @return All the groups that are excluded for this test run.
-   */
-  public String[] getExcludedGroups();
-  
-  /**
-   * @return Where the reports will be generated.
-   */
-  public String getOutputDirectory();
-  
-  /** 
-   * @return The Suite object that was passed to the runner
-   * at start-up.
-   */
-  public ISuite getSuite();
-  
-  /**
-   * @return All the test methods that were run.
-   */
-  public ITestNGMethod[] getAllTestMethods();
-
-  /**
-   * @return The host where this test was run, or null if it was run locally.  The
-   * returned string has the form:  host:port
-   */
-  public String getHost();
-
-  /**
-   * @return All the methods that were not included in this test run.
-   */
-  public Collection<ITestNGMethod> getExcludedMethods();
-  
-  /**
-   * Retrieves information about the successful configuration method invocations.
-   */
-  public IResultMap getPassedConfigurations();
-  
-  /**
-   * Retrieves information about the skipped configuration method invocations.
-   */
-  public IResultMap getSkippedConfigurations();
-  
-  /**
-   * Retrieves information about the failed configuration method invocations.
-   */
-  public IResultMap getFailedConfigurations();
-
-  /**
-   * @return the current XmlTest.
-   */
-  public XmlTest getCurrentXmlTest();
-}
diff --git a/src/org/testng/ITestListener.java b/src/org/testng/ITestListener.java
deleted file mode 100755
index e4381ef..0000000
--- a/src/org/testng/ITestListener.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.testng;
-
-/**
- * A listener for test running.
- *
- * @author Cedric Beust
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- * @author Hani Suleiman
- */
-public interface ITestListener extends ITestNGListener {
-  /**
-   * Invoked each time before a test will be invoked.
-   * The <code>ITestResult</code> is only partially filled with the references to 
-   * class, method, start millis and status.
-   * 
-   * @param result the partially filled <code>ITestResult</code>
-   * @see ITestResult#STARTED
-   */
-  void onTestStart(ITestResult result);
-  
-  /**
-   * Invoked each time a test succeeds.
-   * 
-   * @param result <code>ITestResult</code> containing information about the run test
-   * @see ITestResult#SUCCESS
-   */
-  public void onTestSuccess(ITestResult result);
-  
-  /**
-   * Invoked each time a test fails.
-   * 
-   * @param result <code>ITestResult</code> containing information about the run test
-   * @see ITestResult#FAILURE
-   */
-  public void onTestFailure(ITestResult result);
-  
-  /**
-   * Invoked each time a test is skipped.
-   * 
-   * @param result <code>ITestResult</code> containing information about the run test
-   * @see ITestResult#SKIP
-   */
-  public void onTestSkipped(ITestResult result);
-  
-  /**
-   * Invoked each time a method fails but has been annotated with
-   * successPercentage and this failure still keeps it within the
-   * success percentage requested.
-   * 
-   * @param result <code>ITestResult</code> containing information about the run test
-   * @see ITestResult#SUCCESS_PERCENTAGE_FAILURE
-   */
-  public void onTestFailedButWithinSuccessPercentage(ITestResult result);
-  
-  /**
-   * Invoked after the test class is instantiated and before
-   * any configuration method is called.
-   */
-  public void onStart(ITestContext context);
-  
-  /**
-   * Invoked after all the tests have run and all their
-   * Configuration methods have been called.
-   */
-  public void onFinish(ITestContext context);
-
-}
diff --git a/src/org/testng/ITestMethodFinder.java b/src/org/testng/ITestMethodFinder.java
deleted file mode 100755
index dea6248..0000000
--- a/src/org/testng/ITestMethodFinder.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.testng;
-
-import org.testng.xml.XmlTest;
-
-
-
-
-/**
- * This interface allows to modify the strategy used by TestRunner
- * to find its test methods.  At the time of this writing, TestNG
- * supports two different strategies:  TestNG (using annotations to
- * locate these methods) and JUnit (setUp()/tearDown() and all
- * methods that start with "test" or have a suite() method). 
- *
- * @author Cedric Beust, May 3, 2004
- * 
- */
-public interface ITestMethodFinder {
-  
-  /**
-   * @return All the applicable test methods.
-   */
-  ITestNGMethod[] getTestMethods(Class cls, XmlTest xmlTest);
-  
-  /**
-   * @return All the methods that should be invoked
-   * before a test method is invoked.
-   */
-  ITestNGMethod[] getBeforeTestMethods(Class cls);
-
-  /**
-   * @return All the methods that should be invoked
-   * after a test method completes.
-   */
-  ITestNGMethod[] getAfterTestMethods(Class cls);
-  
-  /**
-   * @return All the methods that should be invoked
-   * after the test class has been created and before
-   * any of its test methods is invoked.
-   */
-  ITestNGMethod[] getBeforeClassMethods(Class cls);
-
-  /**
-   * @return All the methods that should be invoked
-   * after the test class has been created and after
-   * all its test methods have completed.
-   */
-  ITestNGMethod[] getAfterClassMethods(Class cls);
-    
-  /**
-   * @return All the methods that should be invoked
-   * before the suite starts running.
-   */
-  ITestNGMethod[] getBeforeSuiteMethods(Class cls);
-  
-  /**
-   * @return All the methods that should be invoked
-   * after the suite has run all its tests.
-   */
-  ITestNGMethod[] getAfterSuiteMethods(Class cls);
-
-  ITestNGMethod[] getBeforeTestConfigurationMethods(Class testClass);
-
-  ITestNGMethod[] getAfterTestConfigurationMethods(Class testClass);
-
-  ITestNGMethod[] getBeforeGroupsConfigurationMethods(Class testClass);
-
-  ITestNGMethod[] getAfterGroupsConfigurationMethods(Class testClass);
-  
-  
-}
diff --git a/src/org/testng/ITestNGListener.java b/src/org/testng/ITestNGListener.java
deleted file mode 100755
index bfd0919..0000000
--- a/src/org/testng/ITestNGListener.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.testng;
-
-/**
- * This is a marker interface for all objects that can be passed
- * as a -listener argument.
- * 
- * @author cbeust
- */
-public interface ITestNGListener {
-}
diff --git a/src/org/testng/ITestNGMethod.java b/src/org/testng/ITestNGMethod.java
deleted file mode 100755
index e03b9c8..0000000
--- a/src/org/testng/ITestNGMethod.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package org.testng;
-
-
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.List;
-
-/**
- * Describes a TestNG annotated method and the instance on which it will be invoked.
- *
- * @author Cedric Beust, May 3, 2004
- */
-public interface ITestNGMethod extends Comparable, Serializable, Cloneable {
-
-  /**
-   * @return The real class on which this method was declared
-   * (can be different from getMethod().getDeclaringClass() if
-   * the test method was defined in a superclass).
-   */
-  Class getRealClass();
-
-  ITestClass getTestClass();
-
-  /**
-   * Sets the test class having this method. This is not necessarily the declaring class.
-   *
-   * @param cls The test class having this method. 
-   */
-  void setTestClass(ITestClass cls);
-
-  /**
-   * Returns the corresponding Java test method.
-   * @return the corresponding Java test method.
-   */
-  Method getMethod();
-  
-  /**
-   * Returns the method name. This is needed for serialization because 
-   * methods are not Serializable.
-   * @return the method name.
-   */
-  String getMethodName();
-
-  /**
-   * @return All the instances the methods will be invoked upon.
-   * This will typically be an array of one object in the absence
-   * of an @Factory annotation.
-   */
-  Object[] getInstances();
-
-  /**
-   * Needed for serialization.
-   */
-  long[] getInstanceHashCodes();
-
-  /**
-   * @return The groups this method belongs to, possibly added to the groups
-   * declared on the class.
-   */
-  String[] getGroups();
-
-  /**
-   * @return The groups this method depends on, possibly added to the groups
-   * declared on the class.
-   */
-  String[] getGroupsDependedUpon();
-
-  /**
-   * If a group was not found.
-   */
-  String getMissingGroup();
-  public void setMissingGroup(String group);
-  
-  /**
-   * Before and After groups
-   */
-  public String[] getBeforeGroups();
-  public String[] getAfterGroups();
-
-  /**
-   * @return The methods  this method depends on, possibly added to the methods
-   * declared on the class.
-   */
-  String[] getMethodsDependedUpon();
-  void addMethodDependedUpon(String methodName);
-
-  /**
-   * @return true if this method was annotated with @Test
-   */
-  boolean isTest();
-
-  /**
-   * @return true if this method was annotated with @Configuration
-   * and beforeTestMethod = true
-   */
-  boolean isBeforeMethodConfiguration();
-
-  /**
-   * @return true if this method was annotated with @Configuration
-   * and beforeTestMethod = false
-   */
-  boolean isAfterMethodConfiguration();
-
-  /**
-   * @return true if this method was annotated with @Configuration
-   * and beforeClassMethod = true
-   */
-  boolean isBeforeClassConfiguration();
-
-  /**
-   * @return true if this method was annotated with @Configuration
-   * and beforeClassMethod = false
-   */
-  boolean isAfterClassConfiguration();
-
-  /**
-   * @return true if this method was annotated with @Configuration
-   * and beforeSuite = true
-   */
-  boolean isBeforeSuiteConfiguration();
-
-  /**
-   * @return true if this method was annotated with @Configuration
-   * and afterSuite = true
-   */
-  boolean isAfterSuiteConfiguration();
-
-  /**
-   * @return <tt>true</tt> if this method is a @BeforeTest (@Configuration beforeTest=true)
-   */
-  boolean isBeforeTestConfiguration();
-
-  /**
-   * @return <tt>true</tt> if this method is an @AfterTest (@Configuration afterTest=true)
-   */
-  boolean isAfterTestConfiguration();
-
-  boolean isBeforeGroupsConfiguration();
-
-  boolean isAfterGroupsConfiguration();
-
-  /**
-   * @return The timeout in milliseconds.
-   */
-  long getTimeOut();
-
-  /**
-   * @return the number of times this method needs to be invoked.
-   */
-  int getInvocationCount();
-  void setInvocationCount(int count);
-  
-  /**
-   * @return the success percentage for this method (between 0 and 100).
-   */
-  int getSuccessPercentage();
-
-  /**
-   * @return The id of the thread this method was run in.
-   */
-  String getId();
-
-  void setId(String id);
-
-  long getDate();
-
-  void setDate(long date);
-
-  /**
-   * Returns if this ITestNGMethod can be invoked from within IClass.
-   */
-  boolean canRunFromClass(IClass testClass);
-  
-  /**
-   * @return true if this method is alwaysRun=true
-   */
-  boolean isAlwaysRun();
-
-  /**
-   * @return the number of threads to be used when invoking the method on parallel
-   */
-  int getThreadPoolSize();
-
-  void setThreadPoolSize(int threadPoolSize);
-  
-  public String getDescription();
-
-  public void incrementCurrentInvocationCount();
-  public int getCurrentInvocationCount();
-  public void setParameterInvocationCount(int n);
-  public int getParameterInvocationCount();
-
-  public ITestNGMethod clone();
-  
-  public IRetryAnalyzer getRetryAnalyzer();
-  public void setRetryAnalyzer(IRetryAnalyzer retryAnalyzer);
-  
-  public boolean skipFailedInvocations();
-  public void setSkipFailedInvocations(boolean skip);
-  
-  /**
-   * The time under which all invocationCount methods need to complete by.
-   */
-  public long getInvocationTimeOut();
-
-  public boolean ignoreMissingDependencies();
-  public void setIgnoreMissingDependencies(boolean ignore);
-
-  /**
-   * Which invocation numbers of this method should be used (only applicable
-   * if it uses a data provider). If this value is an empty list, use all the values
-   * returned from the data provider.  These values are read from the XML file in
-   * the <include invocationNumbers="..."> tag.
-   */
-  public List<Integer> getInvocationNumbers();
-  public void setInvocationNumbers(List<Integer> numbers);
-
-  /**
-   * The list of invocation numbers that failed, which is only applicable for
-   * methods that have a data provider.
-   */
-  public void addFailedInvocationNumber(int number);
-  public List<Integer> getFailedInvocationNumbers();
-
-  /**
-   * The scheduling priority. Lower priorities get scheduled first.
-   */
-  public int getPriority();
-  public void setPriority(int priority);
-}
diff --git a/src/org/testng/ITestResult.java b/src/org/testng/ITestResult.java
deleted file mode 100755
index f7cdd08..0000000
--- a/src/org/testng/ITestResult.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.testng;
-
-
-/**
- * This class describes the result of a test.
- *
- * @author Cedric Beust, May 2, 2004
- * @since May 2, 2004
- * @version $Revision: 721 $, $Date: 2009-05-23 09:55:46 -0700 (Sat, 23 May 2009) $
- * 
- */
-public interface ITestResult extends IAttributes, Comparable<ITestResult> {
-  
-  //
-  // Test status
-  //
-  public static final int SUCCESS = 1;
-  public static final int FAILURE = 2;
-  public static final int SKIP = 3;
-  public static final int SUCCESS_PERCENTAGE_FAILURE = 4;
-  public static final int STARTED= 16; 
-  
-  /**
-   * @return The status of this result, using one of the constants
-   * above.
-   */
-  public int getStatus();
-  public void setStatus(int status);
-  
-  /**
-   * @return The test method this result represents.
-   */
-  public ITestNGMethod getMethod();
-  
-  /**
-   * @return The parameters this method was invoked with.
-   */
-  public Object[] getParameters();
-  public void setParameters(Object[] parameters);
-
-  /**
-   * @return The test class used this object is a result for.
-   */
-  public IClass getTestClass();
-  
-  /**
-   * @return The throwable that was thrown while running the
-   * method, or null if no exception was thrown.
-   */  
-  public Throwable getThrowable();
-  public void setThrowable(Throwable throwable);
-  
-  /**
-   * @return the start date for this test, in milliseconds.
-   */
-  public long getStartMillis();
-  
-  /**
-   * @return the end date for this test, in milliseconds.
-   */
-  public long getEndMillis();
-  public void setEndMillis(long millis);
-  
-  /**
-   * @return The name of this TestResult, typically identical to the name
-   * of the method.
-   */
-  public String getName();
-  
-  /**
-   * @return true if if this test run is a SUCCESS
-   */
-  public boolean isSuccess();
-  
-  /**
-   * @return The host where this suite was run, or null if it was run locally.  The
-   * returned string has the form:  host:port
-   */
-  public String getHost();
-
-  /**
-   * The instance on which this method was run.
-   */
-  public Object getInstance();
-
-}
diff --git a/src/org/testng/ITestRunnerFactory.java b/src/org/testng/ITestRunnerFactory.java
deleted file mode 100644
index fc9445e..0000000
--- a/src/org/testng/ITestRunnerFactory.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.testng;
-
-
-import org.testng.xml.XmlTest;
-
-import java.util.List;
-
-/**
- * A factory for TestRunners to be used by SuiteRunners.
- */
-public interface ITestRunnerFactory {
-	TestRunner newTestRunner(final ISuite suite, final XmlTest test,
-	    List<IInvokedMethodListener> listeners);
-}
diff --git a/src/org/testng/JUnitConverter.java b/src/org/testng/JUnitConverter.java
deleted file mode 100755
index e40b523..0000000
--- a/src/org/testng/JUnitConverter.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Maps;
-import org.testng.junit.JUnitDirectoryConverter;
-
-import java.io.File;
-import java.util.Map;
-
-/**
- * Convert JUnit files into TestNG by annotating them.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href="mailto:the_mindstorm at evolva.ro">the_mindstorm</a>
- */
-public class JUnitConverter {
-   private static final String USE_ANNOTATION_OPT = "-annotation";
-   private static final String USE_JAVADOC_OPT  = "-javadoc";
-   private static final String SRC_DIR_OPT = "-srcdir";
-   private static final String SOURCE_OPT = "-source";
-   private static final String OUT_DIR_OPT = "-d";
-   private static final String OVERWRITE_OPT = "-overwrite";
-   private static final String QUIET = "-quiet";
-   // Deprecated, maintained for backward compatibility
-   private static final String RESTORE_OPT  = "-restore";
-   private static final String GROUPS_OPT  = "-groups";
-   
-   private static int m_logLevel = 1;
-
-   public static void main(String[] args) {
-      if(args.length == 0) {
-         usage();
-
-         return;
-      }
-
-      Map params = extractOptions(args);
-      
-      if (null != params.get(QUIET)) {
-        m_logLevel = 0;
-      }
-
-      if(null != params.get(USE_ANNOTATION_OPT) && null != params.get(USE_JAVADOC_OPT)) {
-         TestNG.exitWithError("Cannot use both --annotation and --javadoc options");
-      }
-
-      if(null == params.get(USE_ANNOTATION_OPT) && null == params.get(USE_JAVADOC_OPT)) {
-         TestNG.exitWithError("One of --annotation and --javadoc option is required");
-      }
-
-      boolean useAnnotations = null != params.get(USE_ANNOTATION_OPT);
-
-      if(null == params.get(SRC_DIR_OPT)) {
-         TestNG.exitWithError("The source directory cannot be null");
-      }
-
-      String srcPath = (String) params.get(SRC_DIR_OPT);
-      File src = new File(srcPath);
-
-      if(!src.exists() || !src.isDirectory()) {
-         TestNG.exitWithError("Invalid source directory: " + src.getAbsolutePath());
-      }
-
-      boolean overwrite = null != params.get(OVERWRITE_OPT);
-
-      if(null != params.get(OUT_DIR_OPT) && overwrite) {
-         TestNG.exitWithError("Cannot use both -d and --overwrite options");
-      }
-
-      if(null == params.get(OUT_DIR_OPT) && !overwrite) {
-         TestNG.exitWithError("One of -d and --overwrite options is required");
-      }
-
-      String outPath = overwrite ? srcPath : (String) params.get(OUT_DIR_OPT);
-      
-      String groupsOpt = (String) params.get(GROUPS_OPT);
-      String[] groups = null;
-      if (groupsOpt != null) {
-        groups = groupsOpt.split("[ ,]");
-      }
-
-      JUnitDirectoryConverter convertor = new JUnitDirectoryConverter(new File(srcPath),
-            new File(outPath),
-            (String) params.get(SOURCE_OPT),
-            useAnnotations, groups);
-
-      int result = convertor.convert();
-
-      switch(result) {
-         case -1:
-            log("Generation failed. Consult messages.");
-            break;
-         case 0:
-            log("No tests were generated");
-         default:
-            log(result + " tests were generated");
-      }
-   }
-
-   /**
-    * Extract command line options.
-    */
-   private static Map extractOptions(String[] args) {
-      Map options = Maps.newHashMap();
-
-      for (int i = 0; i < args.length; i++) {
-      if (USE_ANNOTATION_OPT.equals(args[i])) {
-        options.put(USE_ANNOTATION_OPT, Boolean.TRUE);
-      }
-      else if (USE_JAVADOC_OPT.equals(args[i])) {
-        options.put(USE_JAVADOC_OPT, Boolean.TRUE);
-      }
-      else if (SRC_DIR_OPT.equals(args[i])) {
-        if (i + 1 < args.length) {
-          options.put(SRC_DIR_OPT, args[i + 1]);
-          i++;
-        }
-      }
-      else if (OUT_DIR_OPT.equals(args[i])) {
-        if (i + 1 < args.length) {
-          options.put(OUT_DIR_OPT, args[i + 1]);
-          i++;
-        }
-      }
-      else if (OVERWRITE_OPT.equals(args[i])) {
-        options.put(OVERWRITE_OPT, Boolean.TRUE);
-      }
-      else if (RESTORE_OPT.equals(args[i])) {
-        // ignore
-      }
-      else if (QUIET.equals(args[i])) {
-        options.put(QUIET, Boolean.TRUE);
-      }
-      else if (SOURCE_OPT.equals(args[i])) {
-        if (i + 1 < args.length) {
-          options.put(SOURCE_OPT, args[i + 1]);
-          i++;
-        }
-      }
-      else if (GROUPS_OPT.equals(args[i])) {
-        if (i + 1 < args.length) {
-          options.put(GROUPS_OPT , args[i + 1]);
-          i++;
-        }
-      }
-    }
-
-      return options;
-   }
-
-   /**
-     * Prints usage info to console.
-     */
-   private static void usage() {
-      System.out.println("Converts JUnit test cases to TestNG.");
-      System.out.println("Usage: java -cp <> org.testng.JUnitConverter"
-            + " (-annotation | -javadoc) -srcdir <source_dir> "
-            + " (-d <output_dir> -overwrite)"
-            + " -groups <groups>"
-            + " [-source <release>]");
-      System.out.println("");
-      System.out.println("-annotation\t Generated tests will use JDK1.5 annotations");
-      System.out.println("-javadoc\t Generated tests will use javadoc like annotations");
-      System.out.println("-srcdir\t Source directory containing JUnit tests");
-      System.out.println("-d\t\t Output directory for resulting TestNG tests and configuration xml");
-      System.out.println("-overwrite\t Overwrite the original JUnit files with the new ones"
-            + "\n\t\t The flag cannot be used when -d is used.");
-      System.out.println("-source\t Provide source compatibility with specified release");
-      System.out.println("-groups\t The groups that the methods will belong to");
-      System.out.println("-quiet\t Don't display any output");
-   }
-
-   private static boolean m_verbose = false;
-   
-   public static void log(String s) {
-     if (m_verbose) {
-      System.out.println("[JUnitConverter] " + s);
-     }
-  }
-   
-   public static int getLogLevel() {
-     return m_logLevel;
-   }
-   
-   public static void ppp(String s) {
-    System.out.println("[JUnitConverter] " + s);
-  }
-}
diff --git a/src/org/testng/JUnitConverterTask.java b/src/org/testng/JUnitConverterTask.java
deleted file mode 100755
index 64d3c77..0000000
--- a/src/org/testng/JUnitConverterTask.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.testng;
-
-import java.io.File;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Task;
-import org.testng.junit.JUnitDirectoryConverter;
-
-/**
- * @author Andy.Glover
- *
- */
-public class JUnitConverterTask extends Task {
-  private File m_sourceDirectory;
-  private File m_outputDirectory;
-  private boolean m_useAnnotations;
-  private String[] m_groups;
-  
-  public JUnitConverterTask() {
-    super();
-  }
-  
-  @Override
-  public void execute() throws BuildException {
-    this.validate();
-
-    final JUnitDirectoryConverter convertor = new JUnitDirectoryConverter(
-        m_sourceDirectory, m_outputDirectory, null, m_useAnnotations, m_groups);
-    final int result = convertor.convert();
-
-    if (result > -1) {
-      this.log(result + " files generated");
-    }
-    else {
-      //this could be better
-      this.log("There were errors in file generation");
-    }
-  }
-  
-  private void validate() throws BuildException {
-    if (this.m_outputDirectory == null || this.m_outputDirectory.equals("")) {
-      throw new BuildException("OutputDir must have a value");
-    }
-    if (this.m_sourceDirectory == null || this.m_sourceDirectory.equals("")) {
-      throw new BuildException("SourceDir must have a value");
-    }
-  }
-  
-  @Override
-  public void init() throws BuildException {
-    super.init();
-    m_useAnnotations = true;
-  }
-  
-  /**
-   * Setter for report's output directory
-   * @param outputDirectory
-   */
-  public void setOutputDir(final File outputDirectory) {
-    m_outputDirectory = outputDirectory;
-  }
-  
-  public void setGroups(String groups) {
-    m_groups = groups.split("[ ,]");
-  }
-  
-  /**
-   * @param sourceDirectory
-   */
-  public void setSourceDir(final File sourceDirectory) {
-    m_sourceDirectory = sourceDirectory;
-  }
-  
-  /**
-   * @param annotations
-   */
-  public void setAnnotations(final boolean annotations) {
-    m_useAnnotations = annotations;
-  }
-}
diff --git a/src/org/testng/Reporter.java b/src/org/testng/Reporter.java
deleted file mode 100755
index 0c58a97..0000000
--- a/src/org/testng/Reporter.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- * This class is used for test methods to log messages that will be
- * included in the HTML reports generated by TestNG.
- * <br>
- * <br>
- * <b>Implementation details.</b>
- * <br>
- * <br>
- * The reporter keeps a combined output of strings (in m_output) and also
- * a record of which method output which line.  In order to do this, callers
- * specify what the current method is with setCurrentMethod() and the
- * Reporter maintaing a mapping of each method with a list of integers.
- * These integers are indices in the combined output (avoids duplicating
- * the output).
- *
- * Created on Nov 2, 2005
- * @author cbeust
- */
-public class Reporter {
-  // when tests are run in parallel, each thread may be working with different
-  // 'current test result'. Also, this value should be inherited if the test code
-  // spawns its own thread.
-  private static ThreadLocal<ITestResult> m_currentTestResult = new InheritableThreadLocal<ITestResult>();
-
-  /**
-   * All output logged in a sequential order.
-   */
-  private static List<String> m_output = new Vector<String>();
-
-  private static Map<ITestResult, List<Integer>> m_methodOutputMap = Maps.newHashMap();
-
-  public static void setCurrentTestResult(ITestResult m) {
-    m_currentTestResult.set(m);
-  }
-
-  public static List<String> getOutput() {
-    return m_output;
-  }
-
-  private static synchronized void log(String s, ITestResult m) {
-    // synchronization needed to ensure the line number and m_output are updated atomically
-    int n = getOutput().size();
-    List<Integer> lines = m_methodOutputMap.get(m);
-    if (lines == null) {
-      lines = Lists.newArrayList();
-      m_methodOutputMap.put(m, lines);
-    }
-    lines.add(n);
-    getOutput().add(s);
-  }
-
-  /**
-   * Log the passed string to the HTML reports
-   * @param s The message to log
-   */
-  public static void log(String s) {
-    log(s, getCurrentTestResult());
-  }
-
-  /**
-   * Log the passed string to the HTML reports if the current verbosity
-   * is equal or greater than the one passed in parameter. If logToStandardOut
-   * is true, the string will also be printed on standard out.
-   *
-   * @param s The message to log
-   * @param level The verbosity of this message
-   * @param logToStandardOut Whether to print this string on standard
-   * out too
-   */
-  public static void log(String s, int level, boolean logToStandardOut) {
-    if (TestRunner.getVerbose() >= level) {
-      log(s, getCurrentTestResult());
-      if (logToStandardOut) {
-        System.out.println(s);
-      }
-    }
-  }
-
-
-  /**
-   * Log the passed string to the HTML reports.  If logToStandardOut
-   * is true, the string will also be printed on standard out.
-   *
-   * @param s The message to log
-   * @param logToStandardOut Whether to print this string on standard
-   * out too
-   */
-  public static void log(String s, boolean logToStandardOut) {
-    log(s, getCurrentTestResult());
-    if (logToStandardOut) {
-      System.out.println(s);
-    }
-  }
-
-  /**
-   * Log the passed string to the HTML reports if the current verbosity
-   * is equal or greater than the one passed in parameter
-   *
-   * @param s The message to log
-   * @param level The verbosity of this message
-   */
-  public static void log(String s, int level) {
-    if (TestRunner.getVerbose() >= level) {
-      log(s, getCurrentTestResult());
-    }
-  }
-
-  public static ITestResult getCurrentTestResult() {
-    return m_currentTestResult.get();
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[Reporter] " + s);
-  }
-
-  public static synchronized List<String> getOutput(ITestResult tr) {
-    List<String> result = Lists.newArrayList();
-    List<Integer> lines = m_methodOutputMap.get(tr);
-    if (lines != null) {
-      for (Integer n : lines) {
-        result.add(getOutput().get(n));
-      }
-    }
-
-    return result;
-  }
-
-//  public static void setCurrentOutput(List<String> tmr) {
-//    m_output = tmr;
-////    m_localResult.set(tmr);
-//  }
-
-//  public static List<String> getCurrentOutput() {
-//    return m_output;
-////    List<String> result = (List<String>) m_localResult.get();
-////    return result;
-//  }
-
-}
diff --git a/src/org/testng/ReporterConfig.java b/src/org/testng/ReporterConfig.java
deleted file mode 100755
index f3d0da3..0000000
--- a/src/org/testng/ReporterConfig.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Lists;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.PropertyUtils;
-import org.testng.internal.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Stores the information regarding the configuration of a plugable report listener. Used also in conjunction withe the
- * <reporter> sub-element of the Ant task
- *
- * @author Cosmin Marginean, Apr 12, 2007
- */
-public class ReporterConfig {
-
-  /**
-   * The class name of the reporter listener
-   */
-  private String m_className;
-
-  /**
-   * The properties of the reporter listener
-   */
-  private List<Property> m_properties = Lists.newArrayList();
-
-  public void addProperty(Property property) {
-    m_properties.add(property);
-  }
-
-  public List<Property> getProperties() {
-    return m_properties;
-  }
-
-  public String getClassName() {
-    return m_className;
-  }
-
-  public void setClassName(String className) {
-    this.m_className = className;
-  }
-
-  public String serialize() {
-    StringBuffer sb = new StringBuffer();
-    sb.append(m_className);
-    if (!m_properties.isEmpty()) {
-      sb.append(":");
-
-      for (int i = 0; i < m_properties.size(); i++) {
-        ReporterConfig.Property property = m_properties.get(i);
-        sb.append(property.getName());
-        sb.append("=");
-        sb.append(property.getValue());
-        if (i < m_properties.size() - 1) {
-          sb.append(",");
-        }
-      }
-    }
-    return sb.toString();
-  }
-
-  public static ReporterConfig deserialize(String inputString) {
-    ReporterConfig reporterConfig = null;
-    if (!Utils.isStringEmpty(inputString)) {
-      reporterConfig = new ReporterConfig();
-      int clsNameEndIndex = inputString.indexOf(":");
-      if (clsNameEndIndex == -1) {
-        reporterConfig.setClassName(inputString);
-      } else {
-        reporterConfig.setClassName(inputString.substring(0, clsNameEndIndex));
-        String propString = inputString.substring(clsNameEndIndex + 1, inputString.length());
-        String[] props = propString.split(",");
-        if ((props != null) && (props.length > 0)) {
-          for (String prop : props) {
-            String[] propNameAndVal = prop.split("=");
-            if ((propNameAndVal != null) && (propNameAndVal.length == 2)) {
-              Property property = new Property();
-              property.setName(propNameAndVal[0]);
-              property.setValue(propNameAndVal[1]);
-              reporterConfig.addProperty(property);
-            }
-          }
-        }
-      }
-
-    }
-    return reporterConfig;
-  }
-
-  /**
-   * Creates a reporter based on the current configuration
-   */
-  public Object newReporterInstance() {
-    Object result = null;
-    Class reporterClass = ClassHelper.forName(m_className);
-    if (reporterClass != null) {
-      result = ClassHelper.newInstance(reporterClass);
-      for (ReporterConfig.Property property : m_properties) {
-        PropertyUtils.setProperty(result, property.getName(), property.getValue());
-      }
-    }
-    return result;
-  }
-
-  public static class Property {
-    private String name;
-    private String value;
-
-    public String getName() {
-      return name;
-    }
-
-    public void setName(String name) {
-      this.name = name;
-    }
-
-    public String getValue() {
-      return value;
-    }
-
-    public void setValue(String value) {
-      this.value = value;
-    }
-  }
-
-  public String toString() {
-    StringBuffer buf = new StringBuffer();
-    buf.append("\nClass = " + m_className);
-    for (Property prop : m_properties) {
-      buf.append("\n\t " + prop.getName() + "=" + prop.getValue());
-    }
-    return buf.toString();
-  }
-}
diff --git a/src/org/testng/SkipException.java b/src/org/testng/SkipException.java
deleted file mode 100755
index f72bc30..0000000
--- a/src/org/testng/SkipException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.testng;
-
-/**
- * The root exception for special skip handling. In case a @Test or @Configuration 
- * throws this exception the method will be considered a skip or a failure according to the
- * return of {@link #isSkip()}.
- * Users may provide extensions to this mechanism by extending this class. 
- * 
- * @author <a href='mailto:the[dot]mindstorm[at]gmail[dot]com'>Alex Popescu</a>
- * @since 5.6
- */
-public class SkipException extends RuntimeException {
-  private StackTraceElement[] m_stackTrace;
-  private volatile boolean m_stackReduced;
-  
-  public SkipException(String skipMessage) {
-    super(skipMessage);
-  }
-  
-  public SkipException(String skipMessage, Throwable cause) {
-    super(skipMessage, cause);
-  }
-  
-  /**
-   * Flag if the current exception marks a skipped method (<tt>true</tt>)
-   * or a failure (<tt>false</tt>). By default Subclasses should override this method
-   * in order to provide smarter behavior.
-   * 
-   * @return <tt>true</tt> if the method should be considered a skip,
-   *    <tt>false</tt> if the method should be considered failed. If not 
-   *    overwritten it returns <tt>true</tt>
-   */
-  public boolean isSkip() {
-    return true;
-  }
-
-  /**
-   * Subclasses may use this method to reduce the printed stack trace.
-   * This method keeps only the last frame. 
-   * <b>Important</b>: after calling this method the preserved internally
-   * and can be restored called {@link #restoreStackTrace}.
-   */
-  protected void reduceStackTrace() {
-    if(!m_stackReduced) {
-      synchronized(this) {
-        StackTraceElement[] newStack= new StackTraceElement[1];
-        StackTraceElement[] originalStack= getStackTrace();
-        if(originalStack.length > 0) {
-          m_stackTrace= originalStack;
-          newStack[0]= getStackTrace()[0];
-          setStackTrace(newStack);
-        }
-        m_stackReduced= true;
-      }
-    }
-  }
-  
-  /**
-   * Restores the original exception stack trace after a 
-   * previous call to {@link #reduceStackTrace()}.
-   *
-   */
-  protected void restoreStackTrace() {
-    if(m_stackReduced && null != m_stackTrace) {
-      synchronized(this) {
-        setStackTrace(m_stackTrace);
-        m_stackReduced= false;
-      }
-    }
-  }
-}
diff --git a/src/org/testng/SuiteResult.java b/src/org/testng/SuiteResult.java
deleted file mode 100755
index 4c8e7f2..0000000
--- a/src/org/testng/SuiteResult.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.testng;
-
-import java.util.Comparator;
-
-import org.testng.xml.XmlSuite;
-
-
-/**
- * This class logs the result of an entire Test Suite (defined by a 
- * property file).
- *
- * @author Cedric Beust, May 10, 2004
- * 
- */
-public class SuiteResult implements ISuiteResult, Comparable {
-	/* generated */
-	private static final long serialVersionUID = 6778513869858860756L;
-private String m_propertyFileName =  null;
-  private XmlSuite m_suite = null;  
-  private ITestContext m_testContext = null;
-  
-  public static final Comparator COMPARATOR = new Comparator<SuiteResult>() {
-    public int compare(SuiteResult o1, SuiteResult o2) {
-      return o1.getPropertyFileName().compareTo(o2.getPropertyFileName());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-      return super.equals(obj);
-    }
-  };
-
-  /**
-   * @param propertyFileName
-   * @param tr
-   */
-  public SuiteResult(String propertyFileName, ITestContext tr) {
-    m_propertyFileName = propertyFileName;
-    m_testContext = tr;
-  }
-  
-  public SuiteResult(XmlSuite suite, ITestContext tr) {
-    m_suite = suite;
-    m_testContext = tr;
-  }
-
-  /**
-   * @return Returns the propertyFileName.
-   */
-  public String getPropertyFileName() {
-    return m_propertyFileName;
-  }
-  
-  /**
-   * @return Returns the singleTestRunner.
-   */
-  public ITestContext getTestContext() {
-    return m_testContext;
-  }
-  /**
-   * @return Returns the suite.
-   */
-  public XmlSuite getSuite() {
-    return m_suite;
-  }
-
-  public int compareTo(Object o) {
-    int result = 0;
-    try {
-      SuiteResult other = (SuiteResult) o;
-      String n1 = getTestContext().getName();
-      String n2 = other.getTestContext().getName();
-      result = n1.compareTo(n2);
-    }
-    catch(Exception ex) {
-      ex.printStackTrace();
-    }
-    
-    return result;
-  }
-  
-  /**
-   * Returns the test context name. 
-   * {@inheritDoc}
-   */
-  @Override
-  public String toString() {
-    return "[SuiteResult " + getTestContext().getName() + "]";
-  }
-  
-}
diff --git a/src/org/testng/SuiteRunState.java b/src/org/testng/SuiteRunState.java
deleted file mode 100755
index 74d2dab..0000000
--- a/src/org/testng/SuiteRunState.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng;
-
-import java.io.Serializable;
-
-
-/**
- * A state object that records the status of the suite run. Mainly used to
- * figure out if there are any @BeforeSuite failures. 
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class SuiteRunState implements Serializable {
-  private boolean m_hasFailures;
-  
-  public synchronized void failed() {
-    m_hasFailures= true;
-  }
-  
-  public synchronized boolean isFailed() {
-    return m_hasFailures;
-  }
-}
diff --git a/src/org/testng/SuiteRunner.java b/src/org/testng/SuiteRunner.java
deleted file mode 100644
index 9f2c21d..0000000
--- a/src/org/testng/SuiteRunner.java
+++ /dev/null
@@ -1,603 +0,0 @@
-package org.testng;
-
-import org.testng.annotations.Listeners;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.internal.Attributes;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.IConfiguration;
-import org.testng.internal.IInvoker;
-import org.testng.internal.Utils;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.reporters.JUnitXMLReporter;
-import org.testng.reporters.TestHTMLReporter;
-import org.testng.reporters.TextReporter;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.io.File;
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * <CODE>SuiteRunner</CODE> is responsible for running all the tests included in one
- * suite. The test start is triggered by {@link #run()} method.
- *
- * @author Cedric Beust, Apr 26, 2004
- */
-public class SuiteRunner implements ISuite, Serializable {
-  
-  /* generated */
-  private static final long serialVersionUID = 5284208932089503131L;
-  
-  private static final String DEFAULT_OUTPUT_DIR = "test-output";
-
-  private Map<String, ISuiteResult> m_suiteResults = Maps.newHashMap();
-  transient private List<TestRunner> m_testRunners = Lists.newArrayList();
-  transient private List<ISuiteListener> m_listeners = Lists.newArrayList();
-  transient private TestListenerAdapter m_textReporter = new TestListenerAdapter();
-
-  private String m_outputDir; // DEFAULT_OUTPUT_DIR;
-  private XmlSuite m_suite;
-
-  transient private List<ITestListener> m_testListeners = Lists.newArrayList();
-  transient private ITestRunnerFactory m_tmpRunnerFactory;
-
-  transient private ITestRunnerFactory m_runnerFactory;
-  transient private boolean m_useDefaultListeners = true;
-  
-  // The remote host where this suite was run, or null if run locally
-  private String m_host;
-
-  // The configuration
-  private IConfiguration m_configuration;
-  
-  transient private IObjectFactory m_objectFactory;
-  transient private Boolean m_skipFailedInvocationCounts = Boolean.FALSE;
-
-  private IMethodInterceptor m_methodInterceptor;
-  private List<IInvokedMethodListener> m_invokedMethodListeners;
-  
-//  transient private IAnnotationTransformer m_annotationTransformer = null;
-
-  public SuiteRunner(IConfiguration configuration, XmlSuite suite,
-      String outputDir) 
-  {
-    this(configuration, suite, outputDir, null);
-  }
-
-  public SuiteRunner(IConfiguration configuration, XmlSuite suite, String outputDir, 
-      ITestRunnerFactory runnerFactory) 
-  {
-    this(configuration, suite, outputDir, runnerFactory, false);
-  }
-  
-  public SuiteRunner(IConfiguration configuration,
-      XmlSuite suite, 
-      String outputDir, 
-      ITestRunnerFactory runnerFactory, 
-      boolean useDefaultListeners)
-  {
-    this(configuration, suite, outputDir, runnerFactory, useDefaultListeners, null, null);
-  }
-  
-  public SuiteRunner(IConfiguration configuration,
-      XmlSuite suite, 
-      String outputDir, 
-      ITestRunnerFactory runnerFactory, 
-      boolean useDefaultListeners,
-      IMethodInterceptor methodInterceptor,
-      List<IInvokedMethodListener> invokedMethodListener)
-  {
-    init(configuration, suite, outputDir, runnerFactory, useDefaultListeners,
-      methodInterceptor, invokedMethodListener);
-  }
-  
-  private void init(IConfiguration configuration,
-    XmlSuite suite, 
-    String outputDir, 
-    ITestRunnerFactory runnerFactory, 
-    boolean useDefaultListeners,
-    IMethodInterceptor methodInterceptor,
-    List<IInvokedMethodListener> invokedMethodListener)
-  {
-    m_configuration = configuration;
-    m_suite = suite;
-    m_useDefaultListeners = useDefaultListeners;
-    m_tmpRunnerFactory= runnerFactory;
-    m_methodInterceptor = methodInterceptor;
-    setOutputDir(outputDir);
-    m_objectFactory = m_configuration.getObjectFactory();
-    if(m_objectFactory == null) {
-      m_objectFactory = suite.getObjectFactory();
-    }
-    m_invokedMethodListeners = invokedMethodListener;
-  }
-  
-  public XmlSuite getXmlSuite() {
-    return m_suite;
-  }
-
-  public String getName() {
-    return m_suite.getName();
-  }
-
-  public void setObjectFactory(IObjectFactory objectFactory) {
-    m_objectFactory = objectFactory;
-  }
-
-  public void setTestListeners(List<ITestListener> testlisteners) {
-    m_testListeners = testlisteners;
-  }
-
-  public void setReportResults(boolean reportResults) {
-    m_useDefaultListeners = reportResults;
-  }
-  
-  private void invokeListeners(boolean start) {
-    for (ISuiteListener sl : m_listeners) {
-      if (start) {
-        sl.onStart(this);
-      }
-      else {
-        sl.onFinish(this);
-      }
-    }
-  }
-
-  private void setOutputDir(String outputdir) {
-    if (((null == outputdir) || "".equals(outputdir.trim()))
-        && m_useDefaultListeners) {
-      outputdir= DEFAULT_OUTPUT_DIR;
-    }
-    
-    m_outputDir = (null != outputdir) ? new File(outputdir).getAbsolutePath()
-        : null;
-  }
-
-  private void lazyInit() {
-    m_runnerFactory = buildRunnerFactory(m_testListeners);
-  }
-
-  protected ITestRunnerFactory buildRunnerFactory(List<ITestListener> testListeners) {
-    ITestRunnerFactory factory = null;
-    
-    if (null == m_tmpRunnerFactory) {
-      factory = new DefaultTestRunnerFactory(
-          m_testListeners.toArray(new ITestListener[m_testListeners.size()]), 
-          m_useDefaultListeners, m_skipFailedInvocationCounts);
-    }
-    else {
-      factory = new ProxyTestRunnerFactory(
-          m_testListeners.toArray(new ITestListener[m_testListeners.size()]), 
-          m_tmpRunnerFactory);
-    }
-    
-    return factory;
-  }
-  
-  public String getParallel() {
-    return m_suite.getParallel();
-  }
-
-  public void run() {
-    lazyInit();
-
-    invokeListeners(true /* start */);
-    try {
-      privateRun();
-    }
-    finally {
-      invokeListeners(false /* start */);
-
-      //
-      // Display the final statistics
-      //
-      if (m_suite.getVerbose() > 0) {
-        int total = m_textReporter.getAllTestMethods().length;
-        List<ITestResult> skipped = m_textReporter.getSkippedTests();
-        List<ITestResult> failed = m_textReporter.getFailedTests();
-        int confFailures= m_textReporter.getConfigurationFailures().size();
-        int confSkips= m_textReporter.getConfigurationSkips().size();
-        StringBuffer bufLog= new StringBuffer(getName());
-        bufLog.append("\nTotal tests run: ")
-            .append(total)
-            .append(", Failures: ").append(failed.size())
-            .append(", Skips: ").append(skipped.size());;
-        if(confFailures > 0 || confSkips > 0) {
-          bufLog.append("\nConfiguration Failures: ").append(confFailures)
-              .append(", Skips: ").append(confSkips)
-              ;
-        }
-            
-         System.out.println("\n===============================================\n"
-                           + bufLog.toString()
-                           + "\n===============================================\n");
-      }
-    }
-  }
-
-  private void privateRun() {
-    
-    // Map for unicity, Linked for guaranteed order
-    Map<Method, ITestNGMethod> beforeSuiteMethods= new LinkedHashMap<Method, ITestNGMethod>();
-    Map<Method, ITestNGMethod> afterSuiteMethods = new LinkedHashMap<Method, ITestNGMethod>();
-
-    IInvoker invoker = null;
-    
-    //
-    // First, we create all the test runners so we can discover all the ITestClasses
-    //
-    for (XmlTest test : m_suite.getTests()) {
-
-
-      TestRunner tr = m_runnerFactory.newTestRunner(this, test, m_invokedMethodListeners);
-
-      //
-      // Install the method interceptor, if any was passed
-      //
-      if (m_methodInterceptor != null) {
-        tr.setMethodInterceptor(m_methodInterceptor);
-      }
-
-      // Reuse the same text reporter so we can accumulate all the results
-      // (this is used to display the final suite report at the end)
-      tr.addListener(m_textReporter);
-      m_testRunners.add(tr);
-
-      // TODO: Code smell.  Invoker should belong to SuiteRunner, not TestRunner
-      // -- cbeust
-      invoker = tr.getInvoker();
-      
-      for (ITestNGMethod m : tr.getBeforeSuiteMethods()) {
-        beforeSuiteMethods.put(m.getMethod(), m);
-      }
-
-      for (ITestNGMethod m : tr.getAfterSuiteMethods()) {
-        afterSuiteMethods.put(m.getMethod(), m);
-      }
-
-      //
-      // Install listeners found on the classes
-      //
-      for (IClass cls : tr.getTestClasses()) {
-        Listeners l = (Listeners) cls.getRealClass().getAnnotation(Listeners.class);
-        if (l != null) {
-          Class<? extends ITestNGListener>[] classes = l.value();
-          for (Class<? extends ITestNGListener> c : classes) {
-            Object listener = ClassHelper.newInstance(c);
-            if (listener instanceof IMethodInterceptor) {
-              tr.setMethodInterceptor((IMethodInterceptor) listener);
-            } else if (listener instanceof ISuiteListener) {
-              addListener((ISuiteListener) listener);
-            } else if (listener instanceof IInvokedMethodListener) {
-              if (m_invokedMethodListeners == null) m_invokedMethodListeners = Lists.newArrayList();
-              m_invokedMethodListeners.add((IInvokedMethodListener) listener);
-            } else if (listener instanceof ITestListener) {
-              if (m_testListeners == null) m_testListeners = Lists.newArrayList();
-              m_testListeners.add((ITestListener) listener);
-            } else if (listener instanceof IReporter) {
-              addReporter((IReporter) listener);
-            }
-          }
-        }
-      }
-    }
-
-    //
-    // Invoke beforeSuite methods (the invoker can be null
-    // if the suite we are currently running only contains
-    // a <file-suite> tag and no real tests)
-    //
-    if (invoker != null) {
-      if(beforeSuiteMethods.values().size() > 0) {
-        invoker.invokeConfigurations(null,
-            beforeSuiteMethods.values().toArray(new ITestNGMethod[beforeSuiteMethods.size()]),
-            m_suite, m_suite.getParameters(), null, /* no parameter values */
-
-            null /* instance */
-        );
-      }
-
-      Utils.log("SuiteRunner", 3, "Created " + m_testRunners.size() + " TestRunners");
-  
-      //
-      // Run all the test runners
-      //
-      boolean testsInParallel = XmlSuite.PARALLEL_TESTS.equals(m_suite.getParallel());
-      if (!testsInParallel) {
-        runSequentially();
-      } 
-      else {
-        runConcurrently();
-      }
-      
-//      SuitePlan sp = new SuitePlan();
-//      for (TestRunner tr : m_testRunners) {
-//        sp.addTestPlan(tr.getTestPlan());
-//      }
-      
-//      sp.dump();
-  
-      //
-      // Invoke afterSuite methods
-      //
-      if (afterSuiteMethods.values().size() > 0) {
-        invoker.invokeConfigurations(null,
-              afterSuiteMethods.values().toArray(new ITestNGMethod[afterSuiteMethods.size()]),
-              m_suite, m_suite.getAllParameters(), null, /* no parameter values */
-
-              null /* instance */);
-      }
-    }
-  }
-
-  private List<IReporter> m_reporters = Lists.newArrayList();
-
-  private void addReporter(IReporter listener) {
-    m_reporters.add(listener);
-  }
-
-  public List<IReporter> getReporters() {
-    return m_reporters;
-  }
-
-  private void runSequentially() {
-    for (TestRunner tr : m_testRunners) {
-      runTest(tr);
-    }
-  }
-
-  private void runTest(TestRunner tr) {
-    tr.run();
-
-    ISuiteResult sr = new SuiteResult(m_suite, tr);
-    m_suiteResults.put(tr.getName(), sr);
-  }
-
-
-  private void runConcurrently() {
-    List<Runnable> tasks= Lists.newArrayList(m_testRunners.size());
-    for(TestRunner tr: m_testRunners) {
-      tasks.add(new SuiteWorker(tr));
-    }
-    
-    ThreadUtil.execute(tasks, m_suite.getThreadCount(), m_suite.getTimeOut(m_suite.getTests().size() * 1000L), false);
-  }
-
-  private class SuiteWorker implements Runnable {
-      private TestRunner m_testRunner;
-
-      public SuiteWorker(TestRunner tr) {
-        m_testRunner = tr;
-      }
-
-      public void run() {
-        Utils.log("[SuiteWorker]", 4, "Running XML Test '" 
-                  +  m_testRunner.getTest().getName() + "' in Parallel");
-        runTest(m_testRunner);
-      }
-  }
-
-  /**
-   * Registers ISuiteListeners interested in reporting the result of the current
-   * suite.
-   *
-   * @param reporter
-   */
-  public void addListener(ISuiteListener reporter) {
-    m_listeners.add(reporter);
-  }
-
-  public String getOutputDirectory() {
-    return m_outputDir + File.separatorChar + getName();
-  }
-
-  public Map<String, ISuiteResult> getResults() {
-    return m_suiteResults;
-  }
-  
-  /**
-   * FIXME: should be removed?
-   *
-   * @see org.testng.ISuite#getParameter(java.lang.String)
-   */
-  public String getParameter(String parameterName) {
-    return m_suite.getParameter(parameterName);
-  }
-
-  /**
-   * @see org.testng.ISuite#getMethodsByGroups()
-   */
-  public Map<String, Collection<ITestNGMethod>> getMethodsByGroups() {
-    Map<String, Collection<ITestNGMethod>> result = Maps.newHashMap();
-
-    for (TestRunner tr : m_testRunners) {
-      ITestNGMethod[] methods = tr.getAllTestMethods();
-      for (ITestNGMethod m : methods) {
-        String[] groups = m.getGroups();
-        for (String groupName : groups) {
-          Collection<ITestNGMethod> testMethods = result.get(groupName);
-          if (null == testMethods) {
-            testMethods = Lists.newArrayList();
-            result.put(groupName, testMethods);
-          }
-          testMethods.add(m);
-        }
-      }
-    }
-
-    return result;
-  }
-
-  /**
-   * @see org.testng.ISuite#getInvokedMethods()
-   */
-  public Collection<ITestNGMethod> getInvokedMethods() {
-    return getIncludedOrExcludedMethods(true /* included */);
-  }
-
-  /**
-   * @see org.testng.ISuite#getExcludedMethods()
-   */
-  public Collection<ITestNGMethod> getExcludedMethods() {
-    return getIncludedOrExcludedMethods(false/* included */);
-  }
-  
-  private Collection<ITestNGMethod> getIncludedOrExcludedMethods(boolean included) {
-    List<ITestNGMethod> result= Lists.newArrayList();
-
-    for (TestRunner tr : m_testRunners) {
-      Collection<ITestNGMethod> methods = included ? tr.getInvokedMethods() : tr.getExcludedMethods();
-      for (ITestNGMethod m : methods) {
-        result.add(m);
-      }
-    }
-
-    return result;
-  }
-
-  public IObjectFactory getObjectFactory() {
-    return m_objectFactory;
-  }
-
-  /**
-   * Returns the annotation finder for the given annotation type.
-   * @param pAnnotationType the annotation type 
-   * @return the annotation finder for the given annotation type. 
-   */
-  public IAnnotationFinder getAnnotationFinder(String pAnnotationType) {
-    AnnotationTypeEnum annotationType = AnnotationTypeEnum.valueOf(pAnnotationType);
-    if (AnnotationTypeEnum.JDK != annotationType) {
-      throw new TestNGException("Javadoc annotations are no longer supported. Either" +
-      " update your tests to JDK annotations or use TestNG 5.11.");
-    }
-    return m_configuration.getAnnotationFinder();
-  }
-
-  public static void ppp(String s) {
-    System.out.println("[SuiteRunner] " + s);
-  }
-
-  /**
-   * The default implementation of {@link ITestRunnerFactory}.
-   */
-  public static class DefaultTestRunnerFactory implements ITestRunnerFactory {
-    private ITestListener[] m_failureGenerators;
-    private boolean m_useDefaultListeners;
-    private boolean m_skipFailedInvocationCounts;
-    
-    public DefaultTestRunnerFactory(ITestListener[] failureListeners,
-        boolean useDefaultListeners,
-        boolean skipFailedInvocationCounts)
-    {
-      m_failureGenerators = failureListeners;
-      m_useDefaultListeners = useDefaultListeners;
-      m_skipFailedInvocationCounts = skipFailedInvocationCounts;
-    }
-
-    public TestRunner newTestRunner(ISuite suite, XmlTest test,
-        List<IInvokedMethodListener> listeners) {
-      boolean skip = m_skipFailedInvocationCounts;
-      if (! skip) {
-        skip = test.skipFailedInvocationCounts();
-      }
-      TestRunner testRunner = 
-        new TestRunner(suite,
-                        test,
-                        suite.getOutputDirectory(),
-                        suite.getAnnotationFinder(test.getAnnotations()),
-                        skip,
-                        listeners);
-      
-      if (m_useDefaultListeners) {
-        testRunner.addListener(new TestHTMLReporter());
-        testRunner.addListener(new JUnitXMLReporter());
-        
-        //TODO: Moved these here because maven2 has output reporters running
-        //already, the output from these causes directories to be created with
-        //files. This is not the desired behaviour of running tests in maven2. 
-        //Don't know what to do about this though, are people relying on these
-        //to be added even with defaultListeners set to false?
-        testRunner.addListener(new TextReporter(testRunner.getName(), TestRunner.getVerbose()));
-      }
-      
-      for (ITestListener itl : m_failureGenerators) {
-        testRunner.addListener(itl);
-      }
-      
-      return testRunner;
-    }
-  }
-
-  public static class ProxyTestRunnerFactory implements ITestRunnerFactory {
-    private ITestListener[] m_failureGenerators;
-    private ITestRunnerFactory m_target;
-
-    public ProxyTestRunnerFactory(ITestListener[] failureListeners, ITestRunnerFactory target) {
-      m_failureGenerators = failureListeners;
-      m_target= target;
-    }
-
-    public TestRunner newTestRunner(ISuite suite, XmlTest test,
-        List<IInvokedMethodListener> listeners) {
-      TestRunner testRunner= m_target.newTestRunner(suite, test, listeners);
-
-      testRunner.addListener(new TextReporter(testRunner.getName(), TestRunner.getVerbose()));
-
-      for (ITestListener itl : m_failureGenerators) {
-        testRunner.addListener(itl);
-      }
-
-      return testRunner;
-    }
-  }
-
-  public void setHost(String host) {
-    m_host = host;
-  }
-  
-  public String getHost() {
-    return m_host;
-  }
-
-  private SuiteRunState m_suiteState= new SuiteRunState();
-
-  /**
-   * @see org.testng.ISuite#getSuiteState()
-   */
-  public SuiteRunState getSuiteState() {
-    return m_suiteState;
-  }
-
-  public void setSkipFailedInvocationCounts(Boolean skipFailedInvocationCounts) {
-    if (skipFailedInvocationCounts != null) {
-      m_skipFailedInvocationCounts = skipFailedInvocationCounts;
-    }
-  }
-
-  private IAttributes m_attributes = new Attributes();
-
-  public Object getAttribute(String name) {
-    return m_attributes.getAttribute(name);
-  }
-
-  public void setAttribute(String name, Object value) {
-    m_attributes.setAttribute(name, value);
-  }
-
-  public Set<String> getAttributeNames() {
-    return m_attributes.getAttributeNames();
-  }
-
-  public Object removeAttribute(String name) {
-    return m_attributes.removeAttribute(name);
-  }
-}
diff --git a/src/org/testng/TestClass.java b/src/org/testng/TestClass.java
deleted file mode 100755
index c883b6c..0000000
--- a/src/org/testng/TestClass.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.ConfigurationMethod;
-import org.testng.internal.NoOpTestClass;
-import org.testng.internal.RunInfo;
-import org.testng.internal.TestNGMethod;
-import org.testng.internal.Utils;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class represents a test class:
- * - The test methods
- * - The configuration methods (test and method)
- * - The class file
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TestClass extends NoOpTestClass implements ITestClass {
-	/* generated */
-	private static final long serialVersionUID = -8077917128278361294L;
-  transient private IAnnotationFinder m_annotationFinder = null;
-  // The Strategy used to locate test methods (TestNG, JUnit, etc...)
-  transient private ITestMethodFinder m_testMethodFinder = null;
-
-  transient protected Map<Class, Class> m_testClasses = Maps.newHashMap();
-  transient protected Map<Class, Object[]> m_instanceMap = Maps.newHashMap();
-  
-  private IClass m_iClass = null;
-  private RunInfo m_runInfo = null;
-  private XmlTest m_xmlTest;
-  
-  public TestClass(IClass cls, 
-                   String testName,
-                   ITestMethodFinder testMethodFinder, 
-                   IAnnotationFinder annotationFinder,
-                   RunInfo runInfo,
-                   XmlTest xmlTest) {
-    init(cls, testName, testMethodFinder, annotationFinder, runInfo, xmlTest);
-  }
-  
-  public TestClass(IClass cls, TestClass tc) {
-    init(cls, 
-         tc.getTestName(), 
-         tc.getTestMethodFinder(), 
-         tc.getAnnotationFinder(),
-         tc.getRunInfo(),
-         tc.getXmlTest());
-  }
-  
-  public String getTestName() {
-    return m_testName;
-  }
-  
-  public XmlTest getXmlTest() {
-    return m_xmlTest;
-  }
-  
-  public IAnnotationFinder getAnnotationFinder() {
-    return m_annotationFinder;
-  }
-  
-  private void init(IClass cls, 
-                    String testName,
-                    ITestMethodFinder testMethodFinder, 
-                    IAnnotationFinder annotationFinder,
-                    RunInfo runInfo,
-                    XmlTest xmlTest) 
-  {
-    log(3, "Creating TestClass for " + cls);
-    m_iClass = cls;
-    m_testClass = cls.getRealClass();
-    m_testName = testName;
-    m_runInfo = runInfo;
-    m_testMethodFinder = testMethodFinder;
-    m_annotationFinder = annotationFinder;
-    m_xmlTest = xmlTest;
-    initMethods();
-    initTestClassesAndInstances();
-  }
-  
-  private void initTestClassesAndInstances() {
-    //
-    // TestClasses and instances
-    //
-    Object[] instances = getInstances(false);
-    for (Object instance : instances) {
-      Class cls = instance.getClass();
-      if (instance instanceof ITest) {
-        m_testName = ((ITest) instance).getTestName();
-      }
-      if (null == m_testClasses.get(cls)) {
-        m_testClasses.put(cls, cls);
-        m_instanceMap.put(cls, instances);
-      }
-    }
-  }
-    
-  public Object[] getInstances(boolean create) {
-    return m_iClass.getInstances(create);
-  }
-  
-  public long[] getInstanceHashCodes() {
-    return m_iClass.getInstanceHashCodes();
-  }
-  
-  public int getInstanceCount() {
-    return m_iClass.getInstanceCount();
-  }
-  
-  public void addInstance(Object instance) {
-    m_iClass.addInstance(instance);
-  }
-
-  private void initMethods() {
-    ITestNGMethod[] methods = m_testMethodFinder.getTestMethods(m_testClass, m_xmlTest);
-    m_testMethods = createTestMethods(methods);
-
-    m_beforeSuiteMethods = ConfigurationMethod
-        .createSuiteConfigurationMethods(m_testMethodFinder.getBeforeSuiteMethods(m_testClass),
-                                         m_annotationFinder,
-                                         true);
-    m_afterSuiteMethods = ConfigurationMethod
-        .createSuiteConfigurationMethods(m_testMethodFinder.getAfterSuiteMethods(m_testClass), 
-                                         m_annotationFinder,
-                                         false); 
-
-
-    m_beforeTestConfMethods = ConfigurationMethod 
-        .createTestConfigurationMethods(m_testMethodFinder.getBeforeTestConfigurationMethods(m_testClass), 
-                                        m_annotationFinder,
-                                        true);
-    m_afterTestConfMethods = ConfigurationMethod
-        .createTestConfigurationMethods(m_testMethodFinder.getAfterTestConfigurationMethods(m_testClass), 
-                                        m_annotationFinder,
-                                        false);
-
-    m_beforeClassMethods = ConfigurationMethod
-        .createClassConfigurationMethods(m_testMethodFinder.getBeforeClassMethods(m_testClass), 
-                                         m_annotationFinder,
-                                         true);
-    m_afterClassMethods = ConfigurationMethod
-        .createClassConfigurationMethods(m_testMethodFinder.getAfterClassMethods(m_testClass), 
-                                         m_annotationFinder,
-                                         false);
-    
-    m_beforeGroupsMethods = ConfigurationMethod
-        .createBeforeConfigurationMethods(m_testMethodFinder.getBeforeGroupsConfigurationMethods(m_testClass), 
-                                          m_annotationFinder,
-                                          true);
-    m_afterGroupsMethods = ConfigurationMethod
-        .createAfterConfigurationMethods(m_testMethodFinder.getAfterGroupsConfigurationMethods(m_testClass),
-                                         m_annotationFinder,
-                                         false); 
-
-    m_beforeTestMethods = ConfigurationMethod
-        .createTestMethodConfigurationMethods(m_testMethodFinder.getBeforeTestMethods(m_testClass), 
-                                              m_annotationFinder,
-                                              true);
-    m_afterTestMethods = ConfigurationMethod
-        .createTestMethodConfigurationMethods(m_testMethodFinder.getAfterTestMethods(m_testClass),
-                                              m_annotationFinder,
-                                              false);
-    
-  }
-  
-  /**
-   * Create the test methods that belong to this class (rejects
-   * all those that belong to a different class).
-   */
-  private ITestNGMethod[] createTestMethods(ITestNGMethod[] methods) {
-    List<ITestNGMethod> vResult = Lists.newArrayList();
-    for (ITestNGMethod tm : methods) {
-      Method m = tm.getMethod();
-      if (m.getDeclaringClass().isAssignableFrom(m_testClass)) {
-        log(4, "Adding method " + tm + " on TestClass " + m_testClass);
-        vResult.add(new TestNGMethod(/* tm.getRealClass(), */ m, m_annotationFinder, m_xmlTest));
-      }
-      else {
-        log(4, "Rejecting method " + tm + " for TestClass " + m_testClass);
-      }
-    }
-    
-    ITestNGMethod[] result = vResult.toArray(new ITestNGMethod[vResult.size()]);
-    return result;
-  }
-  
-  private RunInfo getRunInfo() {
-    return m_runInfo;
-  }
-    
-  public ITestMethodFinder getTestMethodFinder() {
-    return m_testMethodFinder;
-  }
-  
-  private void log(int level, String s) {
-    Utils.log("TestClass", level, s);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[TestClass] " + s);
-  }
-  
-  public void dump() {
-    ppp("\n======\nTESTCLASS: " + m_testClass.getName());
-    for (ITestNGMethod m : m_beforeClassMethods) {
-      ppp("BeforeClass : " + m);
-    }
-    for (ITestNGMethod m : m_beforeTestMethods) {
-      ppp("BeforeMethod:\t" + m);
-    }
-    for (ITestNGMethod m : m_testMethods) {
-      ppp("Test        :\t\t" + m);
-    }
-    for (ITestNGMethod m : m_afterTestMethods) {
-      ppp("AfterMethod :\t" + m);
-    }
-    for (ITestNGMethod m : m_afterClassMethods) {
-      ppp("AfterClass  : " + m);
-    }
-    ppp("\n======\n");
-  }
-  
-  @Override
-  public String toString() {
-    return "[TestClass " + m_testClass + "]";
-  }
-  
-}
\ No newline at end of file
diff --git a/src/org/testng/TestException.java b/src/org/testng/TestException.java
deleted file mode 100755
index 5e9e6b6..0000000
--- a/src/org/testng/TestException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng;
-
-/**
- * Exception thrown when an exception happens while running a test
- * method.
- *
- * @author Cedric Beust, Apr 26, 2004
- * 
- */
-public class TestException extends TestNGException {
-	
-	/* generated */
-	private static final long serialVersionUID = -7946644025188038804L;
-
-public TestException(String s) {
-    super(s);
-  }
-  
-	public TestException(Throwable t) {
-		super(t);
-	}
-}
diff --git a/src/org/testng/TestListenerAdapter.java b/src/org/testng/TestListenerAdapter.java
deleted file mode 100755
index 3215340..0000000
--- a/src/org/testng/TestListenerAdapter.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.testng;
-
-import org.testng.collections.Lists;
-import org.testng.internal.IResultListener;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-
-/**
- * A simple ITestListener adapter that stores all the tests
- * that were run.  You can retrieve these results with the
- * following methods:
- * getPassedTests()
- * getFailedTests()
- * getSkippedTests()
- * 
- * If you extend this class in order to override any of these
- * methods, remember to call their super equivalent if you want
- * this list of tests to be maintained.
- *
- * @author Cedric Beust, Aug 6, 2004
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TestListenerAdapter implements IResultListener {
-  private List<ITestNGMethod> m_allTestMethods =
-      Collections.synchronizedList(Lists.<ITestNGMethod>newArrayList());
-  private List<ITestResult> m_passedTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_failedTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_skippedTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_failedButWSPerTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestContext> m_testContexts= Collections.synchronizedList(new ArrayList<ITestContext>());
-  private List<ITestResult> m_failedConfs= Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_skippedConfs= Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_passedConfs= Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-
-  public void onTestSuccess(ITestResult tr) {
-    m_allTestMethods.add(tr.getMethod());
-    m_passedTests.add(tr);
-  }
-
-  public void onTestFailure(ITestResult tr) {
-    m_allTestMethods.add(tr.getMethod());
-    m_failedTests.add(tr);
-  }
-
-  public void onTestSkipped(ITestResult tr) {
-    m_allTestMethods.add(tr.getMethod());
-    m_skippedTests.add(tr);
-  }
-  
-  public void onTestFailedButWithinSuccessPercentage(ITestResult tr) {
-    m_allTestMethods.add(tr.getMethod());
-    m_failedButWSPerTests.add(tr);
-  }
-  
-  protected ITestNGMethod[] getAllTestMethods() {
-    return m_allTestMethods.toArray(new ITestNGMethod[m_allTestMethods.size()]);
-  }
-
-  public void onStart(ITestContext testContext) {
-	  m_testContexts.add(testContext);
-  }
-
-  public void onFinish(ITestContext testContext) {
-  }
-  
-  /**
-   * @return Returns the failedButWithinSuccessPercentageTests.
-   */
-  public List<ITestResult> getFailedButWithinSuccessPercentageTests() {
-    return m_failedButWSPerTests;
-  }
-  /**
-   * @return Returns the failedTests.
-   */
-  public List<ITestResult> getFailedTests() {
-    return m_failedTests;
-  }
-  /**
-   * @return Returns the passedTests.
-   */
-  public List<ITestResult> getPassedTests() {
-    return m_passedTests;
-  }
-  /**
-   * @return Returns the skippedTests.
-   */
-  public List<ITestResult> getSkippedTests() {
-    return m_skippedTests;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[TestListenerAdapter] " + s);
-  }
-  /**
-   * @param allTestMethods The allTestMethods to set.
-   */
-  public void setAllTestMethods(List<ITestNGMethod> allTestMethods) {
-    m_allTestMethods = allTestMethods;
-  }
-  /**
-   * @param failedButWithinSuccessPercentageTests The failedButWithinSuccessPercentageTests to set.
-   */
-  public void setFailedButWithinSuccessPercentageTests(
-      List<ITestResult> failedButWithinSuccessPercentageTests) {
-    m_failedButWSPerTests = failedButWithinSuccessPercentageTests;
-  }
-  /**
-   * @param failedTests The failedTests to set.
-   */
-  public void setFailedTests(List<ITestResult> failedTests) {
-    m_failedTests = failedTests;
-  }
-  /**
-   * @param passedTests The passedTests to set.
-   */
-  public void setPassedTests(List<ITestResult> passedTests) {
-    m_passedTests = passedTests;
-  }
-  /**
-   * @param skippedTests The skippedTests to set.
-   */
-  public void setSkippedTests(List<ITestResult> skippedTests) {
-    m_skippedTests = skippedTests;
-  }
-
-  public void onTestStart(ITestResult result) {
-  }
-
-  public List<ITestContext> getTestContexts() {
-    return m_testContexts;
-  }
-
-  public List<ITestResult> getConfigurationFailures() {
-    return m_failedConfs;
-  }
-  
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationFailure(org.testng.ITestResult)
-   */
-  public void onConfigurationFailure(ITestResult itr) {
-    m_failedConfs.add(itr);
-  }
-
-  public List<ITestResult> getConfigurationSkips() {
-    return m_skippedConfs;
-  }
-  
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSkip(org.testng.ITestResult)
-   */
-  public void onConfigurationSkip(ITestResult itr) {
-    m_skippedConfs.add(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSuccess(org.testng.ITestResult)
-   */
-  public void onConfigurationSuccess(ITestResult itr) {
-    m_passedConfs.add(itr);
-  }
-}
diff --git a/src/org/testng/TestNG.java b/src/org/testng/TestNG.java
deleted file mode 100644
index a388550..0000000
--- a/src/org/testng/TestNG.java
+++ /dev/null
@@ -1,1353 +0,0 @@
-package org.testng;
-
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.testng.annotations.ITestAnnotation;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.IConfiguration;
-import org.testng.internal.IResultListener;
-import org.testng.internal.PoolService;
-import org.testng.internal.TestNGGuiceModule;
-import org.testng.internal.Utils;
-import org.testng.internal.annotations.DefaultAnnotationTransformer;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.version.VersionInfo;
-import org.testng.log4testng.Logger;
-import org.testng.remote.SuiteDispatcher;
-import org.testng.remote.SuiteSlave;
-import org.testng.reporters.EmailableReporter;
-import org.testng.reporters.FailedReporter;
-import org.testng.reporters.SuiteHTMLReporter;
-import org.testng.reporters.XMLReporter;
-import org.testng.xml.Parser;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlMethodSelector;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-import org.xml.sax.SAXException;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-/**
- * This class is the main entry point for running tests in the TestNG framework.
- * Users can create their own TestNG object and invoke it in many different
- * ways:
- * <ul>
- * <li>On an existing testng.xml
- * <li>On a synthetic testng.xml, created entirely from Java
- * <li>By directly setting the test classes
- * </ul>
- * You can also define which groups to include or exclude, assign parameters, etc...
- * <P/>
- * The command line parameters are:
- * <UL>
- *  <LI>-d <TT>outputdir</TT>: specify the output directory</LI>
- *  <LI>-testclass <TT>class_name</TT>: specifies one or several class names </li>
- *  <LI>-testjar <TT>jar_name</TT>: specifies the jar containing the tests</LI>
- *  <LI>-sourcedir <TT>src1;src2</TT>: ; separated list of source directories
- *    (used only when javadoc annotations are used)</LI>
- *  <LI>-target</LI>
- *  <LI>-groups</LI>
- *  <LI>-testrunfactory</LI>
- *  <LI>-listener</LI>
- * </UL>
- * <P/>
- * Please consult documentation for more details.
- *
- * FIXME: should support more than simple paths for suite xmls
- *
- * @see #usage()
- *
- * @author <a href = "mailto:cedric@beust.com">Cedric Beust</a>
- * @author <a href = "mailto:the_mindstorm@evolva.ro">Alex Popescu</a>
- */
-public class TestNG {
-
-  /** This class' log4testng Logger. */
-  private static final Logger LOGGER = Logger.getLogger(TestNG.class);
-  
-  /** The default name for a suite launched from the command line */
-  public static final String DEFAULT_COMMAND_LINE_SUITE_NAME = "Command line suite";
- 
-  /** The default name for a test launched from the command line */
-  public static final String DEFAULT_COMMAND_LINE_TEST_NAME = "Command line test";
-
-  /** The default name of the result's output directory. */
-  public static final String DEFAULT_OUTPUTDIR = "test-output";
-
-  /** A separator constant (semi-colon). */
-  public static final String SRC_SEPARATOR = ";";
-  
-  /** The JDK50 annotation type ID ("JDK5").*/
-  public static final String JDK_ANNOTATION_TYPE = AnnotationTypeEnum.JDK.getName();
-  
-  /** The JavaDoc annotation type ID ("javadoc"). */
-  public static final String JAVADOC_ANNOTATION_TYPE = AnnotationTypeEnum.JAVADOC.getName();
-  
-  private static TestNG m_instance;
-
-  protected List<XmlSuite> m_suites = Lists.newArrayList();
-  protected List<XmlSuite> m_cmdlineSuites;
-  protected String m_outputDir = DEFAULT_OUTPUTDIR;
-  
-  /** The source directories as set by setSourcePath (or testng-sourcedir-override.properties). */
-  protected String[] m_sourceDirs;
-  
-  /** 
-   * The annotation type for suites/tests that have not explicitly set this attribute. 
-   * This member used to be protected but has been changed to private use the sewtTarget
-   * method instead.
-   */
-  private AnnotationTypeEnum m_defaultAnnotations = VersionInfo.getDefaultAnnotationType(); 
-  
-  protected String[] m_includedGroups;
-  protected String[] m_excludedGroups;
-  
-  private Boolean m_isJUnit = Boolean.FALSE;
-  protected boolean m_useDefaultListeners = true;
-
-  protected ITestRunnerFactory m_testRunnerFactory;
-
-  // These listeners can be overridden from the command line
-  protected List<ITestListener> m_testListeners = Lists.newArrayList();
-  protected List<ISuiteListener> m_suiteListeners = Lists.newArrayList();
-  private List<IReporter> m_reporters = Lists.newArrayList();
-
-  public static final int HAS_FAILURE = 1;
-  public static final int HAS_SKIPPED = 2;
-  public static final int HAS_FSP = 4;
-  public static final int HAS_NO_TEST = 8;
-
-  protected int m_status;
-  protected boolean m_hasTests= false;
-  
-  private String m_slavefileName = null;
-  private String m_masterfileName = null;
-  
-  // Command line suite parameters
-  private int m_threadCount;
-  private boolean m_useThreadCount;
-  private String m_parallelMode;
-  private boolean m_useParallelMode;
-  private Class[] m_commandLineTestClasses;
-  
-  private String m_defaultSuiteName=DEFAULT_COMMAND_LINE_SUITE_NAME;
-  private String m_defaultTestName=DEFAULT_COMMAND_LINE_TEST_NAME;
-  
-  private Map<String, Integer> m_methodDescriptors = Maps.newHashMap();
-
-  private IObjectFactory m_objectFactory;
-  
-  protected List<IInvokedMethodListener> m_invokedMethodListeners = Lists.newArrayList();
-
-  private Integer m_dataProviderThreadCount = null;
-
-  private String m_jarPath;
-
-  private List<String> m_stringSuites = Lists.newArrayList();
-  
-  /**
-   * Default constructor. Setting also usage of default listeners/reporters.
-   */
-  public TestNG() {
-    init(true);
-  }
-
-  /**
-   * Used by maven2 to have 0 output of any kind come out
-   * of testng.
-   * @param useDefaultListeners Whether or not any default reports
-   * should be added to tests.
-   */
-  public TestNG(boolean useDefaultListeners) {
-    init(useDefaultListeners);
-  }
-
-  private void init(boolean useDefaultListeners) {
-    m_instance = this;
-    
-    m_useDefaultListeners = useDefaultListeners;
-  }
-
-  public int getStatus() {
-    return m_status;
-  }
-
-  protected void setStatus(int status) {
-    m_status |= status;
-  }
-  
-  /**
-   * Sets the output directory where the reports will be created.
-   * @param outputdir The directory.
-   */
-  public void setOutputDirectory(final String outputdir) {
-    if ((null != outputdir) && !"".equals(outputdir)) {
-      m_outputDir = outputdir;
-    }
-  }
-
-  /**
-   * If this method is passed true before run(), the default listeners
-   * will not be used.
-   * <ul>
-   * <li>org.testng.reporters.TestHTMLReporter
-   * <li>org.testng.reporters.JUnitXMLReporter
-   * <li>org.testng.reporters.XMLReporter
-   * </ul>
-   * 
-   * @see org.testng.reporters.TestHTMLReporter
-   * @see org.testng.reporters.JUnitXMLReporter
-   * @see org.testng.reporters.XMLReporter
-   */
-  public void setUseDefaultListeners(boolean useDefaultListeners) {
-    m_useDefaultListeners = useDefaultListeners;
-  }
-  
-  /**
-   * Sets the default annotation type for suites that have not explicitly set the 
-   * annotation property. The target is used only in JDK5+.
-   * @param target the default annotation type. This is one of the two constants 
-   * (TestNG.JAVADOC_ANNOTATION_TYPE or TestNG.JDK_ANNOTATION_TYPE).
-   * For backward compatibility reasons we accept "1.4", "1.5". Any other value will
-   * default to TestNG.JDK_ANNOTATION_TYPE.
-   * 
-   * @deprecated use the setDefaultAnnotationType replacement method.
-   */
-  @Deprecated
-  public void setTarget(String target) {
-    // Target is used only in JDK 1.5 and may get null in JDK 1.4
-    LOGGER.warn("The usage of " + TestNGCommandLineArgs.TARGET_COMMAND_OPT + " option is deprecated." +
-            " Please use " + TestNGCommandLineArgs.ANNOTATIONS_COMMAND_OPT + " instead.");
-    if (null == target) {
-      return;
-    }
-    setAnnotations(target);
-  }
-
-  /**
-   * Sets the default annotation type for suites that have not explicitly set the 
-   * annotation property. The target is used only in JDK5+.
-   * @param annotationType the default annotation type. This is one of the two constants 
-   * (TestNG.JAVADOC_ANNOTATION_TYPE or TestNG.JDK_ANNOTATION_TYPE).
-   * For backward compatibility reasons we accept "1.4", "1.5". Any other value will
-   * default to TestNG.JDK_ANNOTATION_TYPE.
-   */
-  public void setAnnotations(String annotationType) {
-    if(null != annotationType && !"".equals(annotationType)) {
-      setAnnotations(AnnotationTypeEnum.valueOf(annotationType));
-    }
-  }
-  
-  private void setAnnotations(AnnotationTypeEnum annotationType) {
-    if(null != annotationType) {
-      m_defaultAnnotations= annotationType;
-    }
-  }
-  
-  /**
-   * Sets the ; separated path of source directories. This is used only with JavaDoc type
-   * annotations. The directories do not have to be the root of a class hierarchy. For 
-   * example, "c:\java\src\org\testng" is a valid directory.
-   * 
-   * If a resource named "testng-sourcedir-override.properties" is found in the classpath, 
-   * it will override this call. "testng-sourcedir-override.properties" must contain a
-   * sourcedir property initialized with a semi-colon list of directories. For example:
-   *  
-   * sourcedir=c:\java\src\org\testng;D:/dir2
-   *
-   * Considering the syntax of a properties file, you must escape the usage of : and = in
-   * your paths.
-   * Note that for the override to occur, this method must be called. i.e. it is not sufficient
-   * to place "testng-sourcedir-override.properties" in the classpath.
-   * 
-   * @param sourcePaths a semi-colon separated list of source directories. 
-   */
-  public void setSourcePath(String sourcePaths) {
-    LOGGER.debug("setSourcePath: \"" + sourcePaths + "\"");
-    
-    // This is an optimization to reduce the sourcePath scope
-    // Is it OK to look only for the Thread context class loader?
-    InputStream is = Thread.currentThread().getContextClassLoader()
-      .getResourceAsStream("testng-sourcedir-override.properties");
-
-    // Resource exists. Use override values and ignore given value
-    if (is != null) {
-      Properties props = new Properties();
-      try {
-        props.load(is);
-      }
-      catch (IOException e) {
-        throw new RuntimeException("Error loading testng-sourcedir-override.properties", e);
-      }
-      sourcePaths = props.getProperty("sourcedir");
-      LOGGER.debug("setSourcePath ignoring sourcepath parameter and " 
-          + "using testng-sourcedir-override.properties: \"" + sourcePaths + "\"");
-      
-    }
-    if (null == sourcePaths || "".equals(sourcePaths.trim())) {
-      return;
-    }
-
-    m_sourceDirs = Utils.split(sourcePaths, SRC_SEPARATOR);
-  }
-
-  /**
-   * Sets a jar containing a testng.xml file.
-   *
-   * @param jarPath
-   */
-  public void setTestJar(String jarPath) {
-    m_jarPath = jarPath;
-  }
-  
-  public void initializeSuitesAndJarFile() {
-    // The Eclipse plug-in (RemoteTestNG) might have invoked this method already
-    // so don't initialize suites twice.
-    if (m_suites.size() > 0) return;
-
-    //
-    // Parse the suites that were passed on the command line
-    //
-    for (String suiteXmlPath : m_stringSuites) {
-      if(LOGGER.isDebugEnabled()) {
-        LOGGER.debug("suiteXmlPath: \"" + suiteXmlPath + "\"");
-      }
-      try {
-        Collection<XmlSuite> allSuites = new Parser(suiteXmlPath).parse();
-        for (XmlSuite s : allSuites) {
-          m_suites.add(s);
-        }
-      }
-      catch(FileNotFoundException e) {
-        e.printStackTrace(System.out);
-      }
-      catch(IOException e) {
-        e.printStackTrace(System.out);
-      }
-      catch(ParserConfigurationException e) {
-        e.printStackTrace(System.out);
-      }
-      catch(SAXException e) {
-        e.printStackTrace(System.out);
-      }
-    }
-
-    //
-    // jar path
-    //
-    // If suites were passed on the command line, they take precedence over the suite file
-    // inside that jar path
-    if (m_jarPath != null && m_stringSuites.size() > 0) {
-      StringBuilder suites = new StringBuilder();
-      for (String s : m_stringSuites) {
-        suites.append(s);
-      }
-      Utils.log("TestNG", 2, "Ignoring the XML file inside " + m_jarPath + " and using "
-          + suites + " instead");
-      return;
-    }
-    if ((null == m_jarPath) || "".equals(m_jarPath)) return;
-
-    // We have a jar file and no XML file was specified: try to find an XML file inside the jar
-    File jarFile = new File(m_jarPath);
-
-    try {
-      URL jarfileUrl = jarFile.getCanonicalFile().toURI().toURL();
-      URLClassLoader jarLoader = new URLClassLoader(new URL[] { jarfileUrl });
-      Thread.currentThread().setContextClassLoader(jarLoader);
-
-      JarFile jf = new JarFile(jarFile);
-      Enumeration<JarEntry> entries = jf.entries();
-      List<String> classes = Lists.newArrayList();
-      boolean foundTestngXml = false;
-      while (entries.hasMoreElements()) {
-        JarEntry je = entries.nextElement();
-        if (je.getName().equals("testng.xml")) {
-          Parser parser = new Parser(jf.getInputStream(je));
-          m_suites.addAll(parser.parse());
-          foundTestngXml = true;
-          break;
-        }
-        else if (je.getName().endsWith(".class")) {
-          int n = je.getName().length() - ".class".length();
-          classes.add(je.getName().replace("/", ".").substring(0, n));
-        }
-      }
-      if (! foundTestngXml) {
-        XmlSuite xmlSuite = new XmlSuite();
-        xmlSuite.setVerbose(0);
-        xmlSuite.setName("Jar suite");
-        XmlTest xmlTest = new XmlTest(xmlSuite);
-        List<XmlClass> xmlClasses = Lists.newArrayList();
-        for (String cls : classes) {
-          XmlClass xmlClass = new XmlClass(cls);
-          xmlClasses.add(xmlClass);
-        }
-        xmlTest.setXmlClasses(xmlClasses);
-        m_suites.add(xmlSuite);
-      }
-    }
-    catch(ParserConfigurationException ex) {
-      ex.printStackTrace();
-    }
-    catch(SAXException ex) {
-      ex.printStackTrace();
-    }
-    catch(MalformedURLException ex) {
-      ex.printStackTrace();
-    }
-    catch(IOException ex) {
-      ex.printStackTrace();
-    }
-  }
-
-  /**
-   * Define the number of threads in the thread pool.
-   */
-  public void setThreadCount(int threadCount) {
-    if(threadCount < 1) {
-      exitWithError("Cannot use a threadCount parameter less than 1; 1 > " + threadCount);
-    }
-    
-    m_threadCount = threadCount;
-    m_useThreadCount = true;
-  } 
-
-  /**
-   * Define whether this run will be run in parallel mode.
-   */
-  public void setParallel(String parallel) {
-    m_parallelMode = parallel;
-    m_useParallelMode = true;
-  }
-
-  public void setCommandLineSuite(XmlSuite suite) {
-    m_cmdlineSuites = Lists.newArrayList();
-    m_cmdlineSuites.add(suite);
-    m_suites.add(suite);
-  }
-  
-
-  /**
-   * Set the test classes to be run by this TestNG object.  This method
-   * will create a dummy suite that will wrap these classes called
-   * "Command Line Test".
-   * <p/>
-   * If used together with threadCount, parallel, groups, excludedGroups than this one must be set first.
-   * 
-   * @param classes An array of classes that contain TestNG annotations.
-   */
-  public void setTestClasses(Class[] classes) {
-    m_commandLineTestClasses = classes;
-  }
-  
-  private List<XmlSuite> createCommandLineSuites(Class[] classes) {
-    //
-    // See if any of the classes has an xmlSuite or xmlTest attribute.
-    // If it does, create the appropriate XmlSuite, otherwise, create
-    // the default one
-    //
-    XmlClass[] xmlClasses = Utils.classesToXmlClasses(classes);
-    Map<String, XmlSuite> suites = Maps.newHashMap();
-    IAnnotationFinder finder = getAnnotationFinder();
-    
-    for (int i = 0; i < classes.length; i++) {
-      Class c = classes[i];
-      ITestAnnotation test = (ITestAnnotation) finder.findAnnotation(c, ITestAnnotation.class);
-      String suiteName = getDefaultSuiteName();
-      String testName = getDefaultTestName();
-      if (test != null) {
-        final String candidateSuiteName = test.getSuiteName();
-        if (candidateSuiteName != null && !"".equals(candidateSuiteName)) {
-          suiteName = candidateSuiteName;
-        }
-        final String candidateTestName = test.getTestName();
-        if (candidateTestName != null && !"".equals(candidateTestName)) {
-		      testName = candidateTestName;   
-        }
-      }  
-      XmlSuite xmlSuite = suites.get(suiteName);
-      if (xmlSuite == null) {
-        xmlSuite = new XmlSuite();
-        xmlSuite.setName(suiteName);
-        suites.put(suiteName, xmlSuite);
-      }
-
-      if (m_dataProviderThreadCount != null) {
-        xmlSuite.setDataProviderThreadCount(m_dataProviderThreadCount);
-      }
-      XmlTest xmlTest = null;
-      for (XmlTest xt  : xmlSuite.getTests()) {
-        if (xt.getName().equals(testName)) {
-          xmlTest = xt;
-          break;
-        }
-      }
-      
-      if (xmlTest == null) {
-        xmlTest = new XmlTest(xmlSuite);
-        xmlTest.setName(testName);
-      }
-
-      List<XmlMethodSelector> selectors = xmlTest.getMethodSelectors();
-      for (String name : m_methodDescriptors.keySet()) {
-        XmlMethodSelector xms = new XmlMethodSelector();
-        xms.setName(name);
-        xms.setPriority(m_methodDescriptors.get(name));
-        selectors.add(xms);
-      }
-      
-      xmlTest.getXmlClasses().add(xmlClasses[i]);
-    }
-    
-    return new ArrayList<XmlSuite>(suites.values());
-  }
-  
-  public void addMethodSelector(String className, int priority) {
-    m_methodDescriptors.put(className, priority);
-  }
-
-  /**
-   * Set the suites file names to be run by this TestNG object. This method tries to load and
-   * parse the specified TestNG suite xml files. If a file is missing, it is ignored.
-   *
-   * @param suites A list of paths to one more XML files defining the tests.  For example:
-   *
-   * <pre>
-   * TestNG tng = new TestNG();
-   * List<String> suites = Lists.newArrayList();
-   * suites.add("c:/tests/testng1.xml");
-   * suites.add("c:/tests/testng2.xml");
-   * tng.setTestSuites(suites);
-   * tng.run();
-   * </pre>
-   */
-  public void setTestSuites(List<String> suites) {
-    m_stringSuites = suites;
-  }
-
-  /**
-   * Specifies the XmlSuite objects to run.
-   * @param suites
-   * @see org.testng.xml.XmlSuite
-   */
-  public void setXmlSuites(List<XmlSuite> suites) {
-    m_suites = suites;
-  }
-  
-  /**
-   * Define which groups will be excluded from this run.
-   *
-   * @param groups A list of group names separated by a comma.
-   */
-  public void setExcludedGroups(String groups) {
-    m_excludedGroups = Utils.split(groups, ",");
-  }
-  
-  
-  /**
-   * Define which groups will be included from this run.
-   *
-   * @param groups A list of group names separated by a comma.
-   */
-  public void setGroups(String groups) {
-    m_includedGroups = Utils.split(groups, ",");
-  }
-  
-
-  protected void setTestRunnerFactoryClass(Class testRunnerFactoryClass) {
-    setTestRunnerFactory((ITestRunnerFactory) ClassHelper.newInstance(testRunnerFactoryClass));
-  }
-  
-  
-  protected void setTestRunnerFactory(ITestRunnerFactory itrf) {
-    m_testRunnerFactory= itrf;
-  }
-  
-  public void setObjectFactory(Class c) {
-    m_objectFactory = (IObjectFactory)ClassHelper.newInstance(c);
-  }
-
-  public void setObjectFactory(IObjectFactory factory) {
-    m_objectFactory = factory;
-  }
-
-  /**
-   * Define which listeners to user for this run.
-   * 
-   * @param classes A list of classes, which must be either ISuiteListener,
-   * ITestListener or IReporter
-   */
-  public void setListenerClasses(List<Class> classes) {
-    for (Class cls: classes) {
-      addListener(ClassHelper.newInstance(cls));
-    }
-  }
-    
-  public void addListener(Object listener) {
-    if (! (listener instanceof ITestNGListener))
-    {
-      exitWithError("Listener " + listener 
-          + " must be one of ITestListener, ISuiteListener, IReporter, "
-          + " IAnnotationTransformer, IMethodInterceptor or IInvokedMethodListener");
-    }
-    else {
-      if (listener instanceof ISuiteListener) {
-        addListener((ISuiteListener) listener);
-      }
-      if (listener instanceof ITestListener) {
-        addListener((ITestListener) listener);
-      }
-      if (listener instanceof IReporter) {
-        addListener((IReporter) listener);
-      }
-      if (listener instanceof IAnnotationTransformer) {
-        setAnnotationTransformer((IAnnotationTransformer) listener);
-      }
-      if (listener instanceof IMethodInterceptor) {
-        m_methodInterceptor = (IMethodInterceptor) listener;
-      }
-      if (listener instanceof IInvokedMethodListener) {
-        addInvokedMethodListener((IInvokedMethodListener) listener);
-      }
-    }
-  }
-
-  public void addListener(IInvokedMethodListener listener) {
-    m_invokedMethodListeners.add((IInvokedMethodListener) listener);
-  }
-
-  public void addListener(ISuiteListener listener) {
-    if (null != listener) {
-      m_suiteListeners.add(listener);      
-    }
-  }
-
-  public void addListener(ITestListener listener) {
-    if (null != listener) {
-      m_testListeners.add(listener);      
-    }
-  }
-  
-  public void addListener(IReporter listener) {
-    if (null != listener) {
-      m_reporters.add(listener);
-    }
-  }
-  
-  public void addInvokedMethodListener(IInvokedMethodListener listener) {
-    m_invokedMethodListeners.add(listener);
-  }
-  
-  public List<IReporter> getReporters() {
-    return m_reporters;
-  }
-  
-  public List<ITestListener> getTestListeners() {
-    return m_testListeners;
-  }
-
-  public List<ISuiteListener> getSuiteListeners() {
-    return m_suiteListeners;
-  }
-
-  /** The verbosity level. TODO why not a simple int? */
-  private int m_verbose = 1;
-
-  private IAnnotationTransformer m_annotationTransformer = new DefaultAnnotationTransformer();
-
-  private Boolean m_skipFailedInvocationCounts = false;
-
-  private IMethodInterceptor m_methodInterceptor = null;
-
-  private Injector m_injector;
-
-  /**
-   * Sets the level of verbosity. This value will override the value specified 
-   * in the test suites.
-   * 
-   * @param verbose the verbosity level (0 to 10 where 10 is most detailed)
-   * Actually, this is a lie:  you can specify -1 and this will put TestNG
-   * in debug mode (no longer slicing off stack traces and all). 
-   */
-  public void setVerbose(int verbose) {
-    m_verbose = verbose;
-  }
-
-  private void initializeCommandLineSuites() {
-    if(null != m_commandLineTestClasses) {
-      initializeInjector();
-      m_cmdlineSuites = createCommandLineSuites(m_commandLineTestClasses);
-      for (XmlSuite s : m_cmdlineSuites) {
-        m_suites.add(s);
-      }
-    }
-  }
-  
-  private void initializeCommandLineSuitesParams() {
-    if(null == m_cmdlineSuites) {
-      return;
-    }
-    
-    for (XmlSuite s : m_cmdlineSuites) {
-      if(m_useThreadCount) {
-        s.setThreadCount(m_threadCount);
-      }
-      if(m_useParallelMode) {
-        s.setParallel(m_parallelMode);
-      }
-    }
-
-  }
-  
-  private void initializeCommandLineSuitesGroups() {
-    if (null != m_cmdlineSuites) {
-      for (XmlSuite s : m_cmdlineSuites) {
-        if(null != m_includedGroups && m_includedGroups.length > 0) {
-          s.getTests().get(0).setIncludedGroups(Arrays.asList(m_includedGroups));
-        }
-        if(null != m_excludedGroups && m_excludedGroups.length > 0) {
-          s.getTests().get(0).setExcludedGroups(Arrays.asList(m_excludedGroups));
-        }
-      }
-    }
-  }
-  
-  private void initializeListeners() {
-    m_testListeners.add(new ExitCodeListener(this));
-    
-    if(m_useDefaultListeners) {
-      m_reporters.add(new SuiteHTMLReporter());
-      m_reporters.add(new FailedReporter());
-      m_reporters.add(new XMLReporter());
-      m_reporters.add(new EmailableReporter());
-    }
-  }
-  
-  private void initializeInjector() {
-    Module module = new TestNGGuiceModule(getAnnotationTransformer(), m_objectFactory);
-    m_injector = Guice.createInjector(module);
-  }
-  
-  /**
-   * Run TestNG.
-   */
-  public void run() {
-    initializeSuitesAndJarFile();
-    initializeListeners();
-    initializeCommandLineSuites();
-    initializeCommandLineSuitesParams();
-    initializeCommandLineSuitesGroups();
-    
-    List<ISuite> suiteRunners = null;
-    
-    //
-    // Slave mode
-    //
-    if (m_slavefileName != null) {
-   	 SuiteSlave slave = new SuiteSlave( m_slavefileName, this );
-   	 slave.waitForSuites();
-    }
-    
-    //
-    // Regular mode
-    //
-    else if (m_masterfileName == null) {
-      suiteRunners = runSuitesLocally();
-    }
-    
-    //
-    // Master mode
-    //
-    else {
-   	 SuiteDispatcher dispatcher = new SuiteDispatcher(m_masterfileName);
-   	 suiteRunners = dispatcher.dispatch(m_injector.getInstance(IConfiguration.class),
-   	     m_suites, getOutputDirectory(),
-   	     getTestListeners());
-    }
-    
-    initializeInjector();
-
-    if(null != suiteRunners) {
-      generateReports(suiteRunners);
-    }
-    
-    if(!m_hasTests) {
-      setStatus(HAS_NO_TEST);
-      if (TestRunner.getVerbose() > 1) {
-        System.err.println("[TestNG] No tests found. Nothing was run");
-      }
-    }
-  }
-  
-  private void generateReports(List<ISuite> suiteRunners) {
-    for (IReporter reporter : m_reporters) {
-      try {
-        reporter.generateReport(m_suites, suiteRunners, m_outputDir);
-      }
-      catch(Exception ex) {
-        System.err.println("[TestNG] Reporter " + reporter + " failed");
-        ex.printStackTrace(System.err);
-      }
-    }
-  }
-
-  /**
-   * This needs to be public for maven2, for now..At least
-   * until an alternative mechanism is found.
-   */
-  public List<ISuite> runSuitesLocally() {
-    List<ISuite> result = Lists.newArrayList();
-    
-    if (m_verbose > 0) {
-      StringBuffer allFiles = new StringBuffer();
-      for (XmlSuite s : m_suites) {
-        allFiles.append("  ").append(s.getFileName() != null ? s.getFileName() : getDefaultSuiteName()).append('\n');
-      }
-      Utils.log("Parser", 0, "Running:\n" + allFiles.toString());
-    }
-
-    if (m_suites.size() > 0) {
-      for (XmlSuite xmlSuite : m_suites) {
-        xmlSuite.setDefaultAnnotations(m_defaultAnnotations.toString());
-        
-        if (null != m_isJUnit) {
-          xmlSuite.setJUnit(m_isJUnit);
-        }
-        
-        //
-        // Install the listeners
-        //
-        for (String listenerName : xmlSuite.getListeners()) {
-          Class<?> listenerClass = ClassHelper.forName(listenerName);
-          
-          // If specified listener does not exist, a TestNGException will be thrown
-          if(listenerClass == null) {
-            throw new TestNGException("Listener " + listenerName
-                + " was not found in project's classpath");
-          }
-          
-          Object listener = ClassHelper.newInstance(listenerClass);
-          addListener(listener);
-        }
-        
-        // If the skip flag was invoked on the command line, it
-        // takes precedence
-        if (null != m_skipFailedInvocationCounts) {
-          xmlSuite.setSkipFailedInvocationCounts(m_skipFailedInvocationCounts);
-        }
-        else {
-          m_skipFailedInvocationCounts = xmlSuite.skipFailedInvocationCounts();
-        }
-        
-        if (xmlSuite.getVerbose() == null) {
-          xmlSuite.setVerbose(m_verbose);
-        }
-        
-        PoolService.initialize(xmlSuite.getDataProviderThreadCount());
-        result.add(createAndRunSuiteRunners(xmlSuite));
-        PoolService.getInstance().shutdown();
-      }
-    }
-    else {
-      setStatus(HAS_NO_TEST);
-      System.err.println("[ERROR]: No test suite found.  Nothing to run");
-    }
-    
-    //
-    // Generate the suites report
-    //
-    return result;
-  }
-
-  protected SuiteRunner createAndRunSuiteRunners(XmlSuite xmlSuite) {
-    initializeInjector();
-    SuiteRunner result = new SuiteRunner(getConfiguration(), xmlSuite, 
-        m_outputDir, 
-        m_testRunnerFactory, 
-        m_useDefaultListeners, 
-        m_methodInterceptor,
-        m_invokedMethodListeners);
-    result.setSkipFailedInvocationCounts(m_skipFailedInvocationCounts);
-
-    for (ISuiteListener isl : m_suiteListeners) {
-      result.addListener(isl);
-    }
-    
-    result.setTestListeners(m_testListeners);
-
-    result.run();
-
-    for (IReporter r : result.getReporters()) {
-      addListener(r);
-    }
-
-    return result;
-  }
-
-  private IAnnotationFinder getAnnotationFinder() {
-    return m_injector.getInstance(IAnnotationFinder.class);
-  }
-
-  private IConfiguration getConfiguration() {
-    return m_injector.getInstance(IConfiguration.class);
-  }
-
-  /**
-   * The TestNG entry point for command line execution. 
-   *
-   * @param argv the TestNG command line parameters.
-   */
-  public static void main(String[] argv) {
-    TestNG testng = privateMain(argv, null);
-    System.exit(testng.getStatus());
-  }
- 
-  /**
-   * <B>Note</B>: this method is not part of the public API and is meant for internal usage only.
-   * TODO  JavaDoc.
-   *
-   * @param argv
-   * @param listener
-   * @return 
-   */
-  /**
-   * @param argv
-   * @param listener
-   */
-  public static TestNG privateMain(String[] argv, ITestListener listener) {
-    Map arguments= checkConditions(TestNGCommandLineArgs.parseCommandLine(argv));
-    
-    TestNG result = new TestNG();
-    if (null != listener) {
-      result.addListener(listener);
-    }
-
-    result.configure(arguments);
-    try {
-      result.run();
-    }
-    catch(TestNGException ex) {
-      if (TestRunner.getVerbose() > 1) {
-        ex.printStackTrace(System.out);
-      }
-      else {
-        System.err.println("[ERROR]: " + ex.getMessage());
-      }
-      result.setStatus(HAS_FAILURE);
-    }
-
-    return result;
-  }
-
-  /**
-   * Configure the TestNG instance by reading the settings provided in the map.
-   * 
-   * @param cmdLineArgs map of settings
-   * @see TestNGCommandLineArgs for setting keys
-   */
-  @SuppressWarnings({"unchecked"})
-  public void configure(Map cmdLineArgs) {
-    {
-      Integer verbose = (Integer) cmdLineArgs.get(TestNGCommandLineArgs.LOG);
-      if (null != verbose) {
-        setVerbose(verbose.intValue());
-      }
-    }
-    
-    setOutputDirectory((String) cmdLineArgs.get(TestNGCommandLineArgs.OUTDIR_COMMAND_OPT));
-    setSourcePath((String) cmdLineArgs.get(TestNGCommandLineArgs.SRC_COMMAND_OPT));
-    setAnnotations(((AnnotationTypeEnum) cmdLineArgs.get(TestNGCommandLineArgs.ANNOTATIONS_COMMAND_OPT)));
-
-    List<Class> testClasses = (List<Class>) cmdLineArgs.get(TestNGCommandLineArgs.TESTCLASS_COMMAND_OPT);
-    if (null != testClasses) {
-      Class[] classes = (Class[]) testClasses.toArray(new Class[testClasses.size()]);
-      setTestClasses(classes);
-    }
-
-    List<String> testNgXml = (List<String>) cmdLineArgs.get(TestNGCommandLineArgs.SUITE_DEF_OPT);
-    if (null != testNgXml) {
-      setTestSuites(testNgXml);
-    }
-    
-    String useDefaultListeners = (String) cmdLineArgs.get(TestNGCommandLineArgs.USE_DEFAULT_LISTENERS);
-    if (null != useDefaultListeners) {
-      setUseDefaultListeners("true".equalsIgnoreCase(useDefaultListeners));
-    }
-    
-    setGroups((String) cmdLineArgs.get(TestNGCommandLineArgs.GROUPS_COMMAND_OPT));
-    setExcludedGroups((String) cmdLineArgs.get(TestNGCommandLineArgs.EXCLUDED_GROUPS_COMMAND_OPT));      
-    setTestJar((String) cmdLineArgs.get(TestNGCommandLineArgs.TESTJAR_COMMAND_OPT));
-    setJUnit((Boolean) cmdLineArgs.get(TestNGCommandLineArgs.JUNIT_DEF_OPT));
-    setMaster( (String)cmdLineArgs.get(TestNGCommandLineArgs.MASTER_OPT));
-    setSlave( (String)cmdLineArgs.get(TestNGCommandLineArgs.SLAVE_OPT));
-    setSkipFailedInvocationCounts(
-      (Boolean) cmdLineArgs.get(
-        TestNGCommandLineArgs.SKIP_FAILED_INVOCATION_COUNT_OPT));
-    
-    String parallelMode = (String) cmdLineArgs.get(TestNGCommandLineArgs.PARALLEL_MODE);
-    if (parallelMode != null) {
-      setParallel(parallelMode);
-    }
-    
-    String threadCount = (String) cmdLineArgs.get(TestNGCommandLineArgs.THREAD_COUNT);
-    if (threadCount != null) {
-      setThreadCount(Integer.parseInt(threadCount));
-    }
-    String dataProviderThreadCount = (String) cmdLineArgs.get(TestNGCommandLineArgs.DATA_PROVIDER_THREAD_COUNT);
-    if (dataProviderThreadCount != null) {
-      setDataProviderThreadCount(Integer.parseInt(dataProviderThreadCount));
-    }
-    String defaultSuiteName = (String) cmdLineArgs.get(TestNGCommandLineArgs.SUITE_NAME_OPT);
-    if (defaultSuiteName != null) {
-      setDefaultSuiteName(defaultSuiteName);
-    }
-
-    String defaultTestName = (String) cmdLineArgs.get(TestNGCommandLineArgs.TEST_NAME_OPT);
-    if (defaultTestName != null) {
-      setDefaultTestName(defaultTestName);
-    }
-
-    List<Class> listenerClasses = (List<Class>) cmdLineArgs.get(TestNGCommandLineArgs.LISTENER_COMMAND_OPT);
-    if (null != listenerClasses) {
-      setListenerClasses(listenerClasses);
-    }
-    
-    Class objectFactory = (Class) cmdLineArgs.get(TestNGCommandLineArgs.OBJECT_FACTORY_COMMAND_OPT);
-    if(null != objectFactory) {
-      setObjectFactory(objectFactory);
-    }
-
-    Class runnerFactory = (Class) cmdLineArgs.get(TestNGCommandLineArgs.TESTRUNNER_FACTORY_COMMAND_OPT);
-    if (null != runnerFactory) {
-      setTestRunnerFactoryClass(runnerFactory);
-    }
-
-    List<ReporterConfig> reporterConfigs =
-            (List<ReporterConfig>) cmdLineArgs.get(TestNGCommandLineArgs.REPORTERS_LIST);
-    if (reporterConfigs != null) {
-      for (ReporterConfig reporterConfig : reporterConfigs) {
-        addReporter(reporterConfig);
-      }
-    }
-  }
-
-  private void setSkipFailedInvocationCounts(Boolean skip) {
-    m_skipFailedInvocationCounts = skip;
-  }
-
-  private void addReporter(ReporterConfig reporterConfig) {
-    Object instance = reporterConfig.newReporterInstance();
-    if (instance != null) {
-      addListener(instance);
-    } else {
-      LOGGER.warn("Could not find reporte class : " + reporterConfig.getClassName());
-    }
-  }
-
-  /**
-   * Specify if this run should be in Master-Slave mode as Master
-   * 
-   * @param fileName remote.properties path
-   */
-  public void setMaster(String fileName) {
-	  m_masterfileName = fileName;
-  }
-  
-  /**
-   * Specify if this run should be in Master-Slave mode as slave
-   * 
-   * @param fileName remote.properties path
-   */
-  public void setSlave(String fileName) {
-	  m_slavefileName = fileName;
-  }
-  
-  /**
-   * Specify if this run should be made in JUnit mode
-   * 
-   * @param isJUnit
-   */
-  public void setJUnit(Boolean isJUnit) {
-    m_isJUnit = isJUnit;
-  }
-  
-  /**
-   * @deprecated The TestNG version is now established at load time. This 
-   * method is not required anymore and is now a no-op. 
-   */
-  @Deprecated
-  public static void setTestNGVersion() {
-    LOGGER.info("setTestNGVersion has been deprecated.");
-  }
-  
-  /**
-   * Returns true if this is the JDK 1.4 JAR version of TestNG, false otherwise.
-   *
-   * @return true if this is the JDK 1.4 JAR version of TestNG, false otherwise.
-   */
-  public static boolean isJdk14() {
-    return VersionInfo.IS_JDK14;
-  }
-
-  /**
-   * Checks TestNG preconditions. For example, this method makes sure that if this is the
-   * JDK 1.4 version of TestNG, a source directory has been specified. This method calls
-   * System.exit(-1) or throws an exception if the preconditions are not satisfied.
-   * 
-   * @param params the parsed command line parameters.
-   */
-  @SuppressWarnings({"unchecked"})
-  protected static Map checkConditions(Map params) {
-    // TODO CQ document why sometimes we throw exceptions and sometimes we exit. 
-    List<String> testClasses = (List<String>) params.get(TestNGCommandLineArgs.TESTCLASS_COMMAND_OPT);
-    List<String> testNgXml = (List<String>) params.get(TestNGCommandLineArgs.SUITE_DEF_OPT);
-    Object testJar = params.get(TestNGCommandLineArgs.TESTJAR_COMMAND_OPT);
-    Object slave = params.get(TestNGCommandLineArgs.SLAVE_OPT);
-
-    if (testClasses == null && testNgXml == null && slave == null && testJar == null) {
-      System.err.println("You need to specify at least one testng.xml or one class");
-      usage();
-      System.exit(-1);
-    }
-
-    if (VersionInfo.IS_JDK14) {
-      String srcPath = (String) params.get(TestNGCommandLineArgs.SRC_COMMAND_OPT);
-
-      if ((null == srcPath) || "".equals(srcPath)) {
-        throw new TestNGException("No sourcedir was specified");
-      }
-    }
-    
-    String groups = (String) params.get(TestNGCommandLineArgs.GROUPS_COMMAND_OPT);
-    String excludedGroups = (String) params.get(TestNGCommandLineArgs.EXCLUDED_GROUPS_COMMAND_OPT);
-    
-    if (testJar == null &&
-        (null != groups || null != excludedGroups) && testClasses == null && testNgXml == null) {
-      throw new TestNGException("Groups option should be used with testclass option");
-    }
-    
-    // -slave & -master can't be set together
-    if (params.containsKey(TestNGCommandLineArgs.SLAVE_OPT) && 
-   		 params.containsKey(TestNGCommandLineArgs.MASTER_OPT)) {
-   	 throw new TestNGException(TestNGCommandLineArgs.SLAVE_OPT + " can't be combined with " +
-   	                           TestNGCommandLineArgs.MASTER_OPT);
-    }
-    
-    return params;
-  }
-
-  /**
-   * @return true if at least one test failed.
-   */
-  public boolean hasFailure() {
-    return (getStatus() & HAS_FAILURE) == HAS_FAILURE;
-  }
-
-  /**
-   * @return true if at least one test failed within success percentage.
-   */
-  public boolean hasFailureWithinSuccessPercentage() {
-    return (getStatus() & HAS_FSP) == HAS_FSP;
-  }
-
-  /**
-   * @return true if at least one test was skipped.
-   */
-  public boolean hasSkip() {
-    return (getStatus() & HAS_SKIPPED) == HAS_SKIPPED;
-  }
-  
-  /**
-   * Prints the usage message to System.out. This message describes all the command line
-   * options.
-   */
-  public static void usage() {
-    TestNGCommandLineArgs.usage();
-  }
-  
-  static void exitWithError(String msg) {
-    System.err.println(msg);
-    usage();
-    System.exit(1);
-  }
-
-  public String getOutputDirectory() {
-    return m_outputDir;
-  }
-  
-  public IAnnotationTransformer getAnnotationTransformer() {
-    return m_annotationTransformer;
-  }
-  
-  public boolean getSkipFailedInvocationCounts() {
-    return m_skipFailedInvocationCounts;
-  }
-  
-  public void setSkipFailedInvocationCounts(boolean skip) {
-    m_skipFailedInvocationCounts = skip;
-  }
-  
-  public void setAnnotationTransformer(IAnnotationTransformer t) {
-    m_annotationTransformer = t;
-  }
-
-  /**
-   * @return the defaultSuiteName
-   */
-  public String getDefaultSuiteName() {
-    return m_defaultSuiteName;
-  }
-
-  /**
-   * @param defaultSuiteName the defaultSuiteName to set
-   */
-  public void setDefaultSuiteName(String defaultSuiteName) {
-    m_defaultSuiteName = defaultSuiteName;
-  }
-
-  /**
-   * @return the defaultTestName
-   */
-  public String getDefaultTestName() {
-    return m_defaultTestName;
-  }
-
-  /**
-   * @param defaultTestName the defaultTestName to set
-   */
-  public void setDefaultTestName(String defaultTestName) {
-    m_defaultTestName = defaultTestName;
-  }
-  
-  // DEPRECATED: to be removed after a major version change
-  /**
-   * @deprecated since 5.1
-   */
-  @Deprecated
-  public static TestNG getDefault() {
-    return m_instance;
-  }
-
-  /**
-   * @deprecated since 5.1
-   */
-  @Deprecated
-  public void setHasFailure(boolean hasFailure) {
-    m_status |= HAS_FAILURE;
-  }
-
-  /**
-   * @deprecated since 5.1
-   */
-  @Deprecated
-  public void setHasFailureWithinSuccessPercentage(boolean hasFailureWithinSuccessPercentage) {
-    m_status |= HAS_FSP;
-  }
-
-  /**
-   * @deprecated since 5.1
-   */
-  @Deprecated
-  public void setHasSkip(boolean hasSkip) {
-    m_status |= HAS_SKIPPED;
-  }
-
-  public static class ExitCodeListener implements IResultListener {
-    protected TestNG m_mainRunner;
-    
-    public ExitCodeListener() {
-      m_mainRunner = TestNG.m_instance;
-    }
-
-    public ExitCodeListener(TestNG runner) {
-      m_mainRunner = runner;
-    }
-    
-    public void onTestFailure(ITestResult result) {
-      setHasRunTests();
-      m_mainRunner.setStatus(HAS_FAILURE);
-    }
-
-    public void onTestSkipped(ITestResult result) {
-      setHasRunTests();
-      m_mainRunner.setStatus(HAS_SKIPPED);
-    }
-
-    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
-      setHasRunTests();
-      m_mainRunner.setStatus(HAS_FSP);
-    }
-
-    public void onTestSuccess(ITestResult result) {
-      setHasRunTests();
-    }
-
-    public void onStart(ITestContext context) {
-      setHasRunTests();
-    }
-
-    public void onFinish(ITestContext context) {
-    }
-
-    public void onTestStart(ITestResult result) {
-      setHasRunTests();
-    }
-    
-    private void setHasRunTests() {
-      m_mainRunner.m_hasTests= true;
-    }
-
-    /**
-     * @see org.testng.internal.IConfigurationListener#onConfigurationFailure(org.testng.ITestResult)
-     */
-    public void onConfigurationFailure(ITestResult itr) {
-      m_mainRunner.setStatus(HAS_FAILURE);
-    }
-
-    /**
-     * @see org.testng.internal.IConfigurationListener#onConfigurationSkip(org.testng.ITestResult)
-     */
-    public void onConfigurationSkip(ITestResult itr) {
-      m_mainRunner.setStatus(HAS_SKIPPED);
-    }
-
-    /**
-     * @see org.testng.internal.IConfigurationListener#onConfigurationSuccess(org.testng.ITestResult)
-     */
-    public void onConfigurationSuccess(ITestResult itr) {
-    }
-  }
-
-  public void setMethodInterceptor(IMethodInterceptor methodInterceptor) {
-    m_methodInterceptor = methodInterceptor;
-  }
-
-  public void setDataProviderThreadCount(int count) {
-    m_dataProviderThreadCount = count;
-  }
-}
diff --git a/src/org/testng/TestNGAntTask.java b/src/org/testng/TestNGAntTask.java
deleted file mode 100755
index afc896d..0000000
--- a/src/org/testng/TestNGAntTask.java
+++ /dev/null
@@ -1,1075 +0,0 @@
-package org.testng;
-
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.DirectoryScanner;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.ExecuteWatchdog;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.CommandlineJava;
-import org.apache.tools.ant.types.Environment;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.types.selectors.FilenameSelector;
-import org.testng.collections.Lists;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.internal.version.VersionInfo;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.CharacterIterator;
-import java.text.StringCharacterIterator;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-/**
- * TestNG settings:
- * <ul>
- * <li>classfileset (inner)</li>
- * <li>classfilesetref (attribute)</li>
- * <li>xmlfileset (inner)</li>
- * <li>xmlfilesetref (attribute)</li>
- * <li>enableAssert (attribute)</li>
- * <li>excludedGroups (attribute)</li>
- * <li>groups (attribute)</li>
- * <li>junit (attribute)</li>
- * <li>listener (attribute)</li>
- * <li>outputdir (attribute)</li>
- * <li>parallel (attribute)</li>
- * <li>reporter (attribute)</li>
- * <li>sourcedir (attribute)</li>
- * <li>sourcedirref (attribute)</li>
- * <li>suitename (attribute)</li>
- * <li>suiterunnerclass (attribute)</li>
- * <li>target (attribute)</li>
- * <li>testjar (attribute)</li>
- * <li>testname (attribute)</li>
- * <li>threadcount (attribute)</li>
- * <li>dataproviderthreadcount (attribute)</li>
- * <li>verbose (attribute)</li>
- * <li>testrunfactory (attribute)</li>
- * 
- * </ul>
- *
- * Ant settings:
- * <ul>
- * <li>classpath (inner)</li>
- * <li>classpathref (attribute)</li>
- * <li>jvm (attribute)</li>
- * <li>workingDir (attribute)</li>
- * <li>env (inner)</li>
- * <li>sysproperty (inner)</li>
- * <li>jvmarg (inner)</li>
- * <li>timeout (attribute)</li>
- * <li>haltonfailure (attribute)</li>
- * <li>onHaltTarget (attribute)</li>
- * <li>failureProperty (attribute)</li>
- * <li>haltonFSP (attribute)</li>
- * <li>FSPproperty (attribute)</li>
- * <li>haltonskipped (attribute)</li>
- * <li>skippedProperty (attribute)</li>
- * <li>testRunnerFactory (attribute)</li>
- * </ul>
- *
- * Debug information:
- * <ul>
- * <li>dumpCommand (boolean)</li>
- * <li>dumpEnv (boolean)</li>
- * <li>dumpSys (boolean)</li>
- * </ul>
- * 
- * @author <a href="mailto:the_mindstorm at evolva.ro">Alexandru Popescu</a>
- * @author Cedric Beust
- */
-public class TestNGAntTask extends Task {
-
-  protected CommandlineJava m_javaCommand;
-
-  protected List<FileSet> m_xmlFilesets= Lists.newArrayList();
-  protected List<FileSet> m_classFilesets= Lists.newArrayList();
-  protected Path m_sourceDirPath;
-  protected File m_outputDir;
-  protected File m_testjar;
-  protected File m_workingDir;
-  private Integer m_timeout;
-  protected Boolean m_isJUnit;
-  private List<String> m_listeners= Lists.newArrayList();
-  private String m_objectFactory;
-  protected String m_testRunnerFactory;
-  private boolean m_delegateCommandSystemProperties = false;
-
-  protected Environment m_environment= new Environment();
-
-  /** The suite runner name (defaults to TestNG.class.getName(). */
-  protected String m_mainClass= TestNG.class.getName();
-  
-  /** The default annotations (should be renamed to m_defaultAnnotations) */
-  protected String m_target;
-
-  /** True if the temporary file created by the Ant Task for command line parameters
-   * to TestNG should be preserved after execution. */
-  protected boolean m_dump;
-  private boolean m_dumpEnv;
-  private boolean m_dumpSys;
-  
-  protected boolean m_assertEnabled= true;
-  protected boolean m_haltOnFailure;
-  protected String m_onHaltTarget;
-  protected String m_failurePropertyName;
-  protected boolean m_haltOnSkipped;
-  protected String m_skippedPropertyName;
-  protected boolean m_haltOnFSP;
-  protected String m_fspPropertyName;
-  protected String m_includedGroups;
-  protected String m_excludedGroups;
-  protected String m_parallelMode;
-  protected String m_threadCount;
-  protected String m_dataproviderthreadCount;
-  public String m_useDefaultListeners;
-  private String m_suiteName="Ant suite";
-  private String m_testName="Ant test";
-  private Boolean m_skipFailedInvocationCounts;
-
-  /**
-   * The list of report listeners added via <reporter> sub-element of the Ant task
-   */
-  private List<ReporterConfig> reporterConfigs = Lists.newArrayList();
-
-  public void setParallel(String parallel) {
-    m_parallelMode= parallel;
-  }
-
-  public void setThreadCount(String threadCount) {
-    m_threadCount= threadCount;
-  }
-  
-  public void setDataProviderThreadCount(String dataproviderthreadCount) {
-    m_dataproviderthreadCount = dataproviderthreadCount;
-  }
-
-  public void setUseDefaultListeners(String f) {
-    m_useDefaultListeners= f;
-  }
-
-  // Ant task settings
-  public void setHaltonfailure(boolean value) {
-    m_haltOnFailure= value;
-  }
-
-  public void setOnHaltTarget(String targetName) {
-    m_onHaltTarget= targetName;
-  }
-
-  public void setFailureProperty(String propertyName) {
-    m_failurePropertyName= propertyName;
-  }
-
-  public void setHaltonskipped(boolean value) {
-    m_haltOnSkipped= value;
-  }
-
-  public void setSkippedProperty(String propertyName) {
-    m_skippedPropertyName= propertyName;
-  }
-
-  public void setHaltonFSP(boolean value) {
-    m_haltOnFSP= value;
-  }
-
-  public void setFSPProperty(String propertyName) {
-    m_fspPropertyName= propertyName;
-  }
-  
-  public void setDelegateCommandSystemProperties(boolean value){
-    m_delegateCommandSystemProperties = value;
-  }
-
-  /**
-   * Sets the flag to log the command line. When verbose is set to true
-   * the command line parameters are stored in a temporary file stored
-   * in the user's default temporary file directory. The file created is
-   * prefixed with "testng".
-   */
-  public void setDumpCommand(boolean verbose) {
-    m_dump = verbose;
-  }
-
-  /**
-   * Sets the flag to write on <code>System.out</code> the Ant
-   * Environment properties.
-   * 
-   * @param verbose <tt>true</tt> for printing 
-   */
-  public void setDumpEnv(boolean verbose) {
-    m_dumpEnv= verbose;
-  }
-  
-  /**
-   * Sets te flag to write on <code>System.out</code> the system properties.
-   * @param verbose <tt>true</tt> for dumping the info
-   */
-  public void setDumpSys(boolean verbose) {
-    m_dumpSys= verbose;
-  }
-  
-  public void setEnableAssert(boolean flag) {
-    m_assertEnabled= flag;
-  }
-
-  /**
-   * The directory to invoke the VM in.
-   * @param workingDir the directory to invoke the JVM from.
-   */
-  public void setWorkingDir(File workingDir) {
-    m_workingDir= workingDir;
-  }
-
-  /**
-   * Sets a particular JVM to be used. Default is 'java' and is solved
-   * by <code>Runtime.exec()</code>.
-   *
-   * @param jvm the new jvm
-   */
-  public void setJvm(String jvm) {
-    getJavaCommand().setVm(jvm);
-  }
-
-  /**
-   * Set the timeout value (in milliseconds).
-   *
-   * <p>If the tests are running for more than this value, the tests
-   * will be canceled.
-   *
-   * </p>
-   * @param value the maximum time (in milliseconds) allowed before declaring the test as 'timed-out'
-   */
-  public void setTimeout(Integer value) {
-    m_timeout= value;
-  }
-
-  public Commandline.Argument createJvmarg() {
-    return getJavaCommand().createVmArgument();
-  }
-
-  public void addSysproperty(Environment.Variable sysp) {
-    getJavaCommand().addSysproperty(sysp);
-  }
-
-  /**
-   * Adds an environment variable; used when forking.
-   */
-  public void addEnv(Environment.Variable var) {
-    m_environment.addVariable(var);
-  }
-
-  /**
-   * Adds path to classpath used for tests.
-   *
-   * @return reference to the classpath in the embedded java command line
-   */
-  public Path createClasspath() {
-    return getJavaCommand().createClasspath(getProject()).createPath();
-  }
-
-  /**
-   * Adds a path to the bootclasspath.
-   * @return reference to the bootclasspath in the embedded java command line
-   */
-  public Path createBootclasspath() {
-    return getJavaCommand().createBootclasspath(getProject()).createPath();
-  }
-
-  /**
-   * Set the classpath to be used when running the Java class
-   *
-   * @param s an Ant Path object containing the classpath.
-   */
-  public void setClasspath(Path s) {
-    createClasspath().append(s);
-  }
-
-  /**
-   * Classpath to use, by reference.
-   *
-   * @param r a reference to an existing classpath
-   */
-  public void setClasspathRef(Reference r) {
-    createClasspath().setRefid(r);
-  }
-
-  public void addXmlfileset(FileSet fs) {
-    m_xmlFilesets.add(fs);
-  }
-
-  public void setXmlfilesetRef(Reference ref) {
-    m_xmlFilesets.add(createFileSet(ref));
-  }
-
-  public void addClassfileset(FileSet fs) {
-    m_classFilesets.add(appendClassSelector(fs));
-  }
-
-  public void setClassfilesetRef(Reference ref) {
-    m_classFilesets.add(createFileSet(ref));
-  }
-
-  /**
-   * Sets the Path like for source directories.
-   * @param srcDir path for source directories
-   */
-  public void setSourcedir(Path srcDir) {
-    if(m_sourceDirPath == null) {
-      m_sourceDirPath= srcDir;
-    }
-    else {
-      m_sourceDirPath.append(srcDir);
-    }
-  }
-
-  /**
-   * Creates a nested src Path like.
-   *
-   * @return a new Path
-   */
-  public Path createSourceDir() {
-    if(m_sourceDirPath == null) {
-      m_sourceDirPath= new Path(getProject());
-    }
-
-    return m_sourceDirPath.createPath();
-  }
-
-  /**
-   * Sets a reference to a Path-like structure for source directories.
-   *
-   * @param r reference to a Path representing the source directories
-   */
-  public void setSourceDirRef(Reference r) {
-    createSourceDir().setRefid(r);
-  }
-
-  /**
-   * Sets the suite runner class to invoke
-   * @param s the name of the suite runner class
-   */
-  public void setSuiteRunnerClass(String s) {
-    m_mainClass= s;
-  }
-
-  /**
-   * Sets the suite name
-   * @param s the name of the suite 
-   */
-  public void setSuiteName(String s) {
-    m_suiteName= s;
-  }
-
-  /**
-   * Sets the test name
-   * @param s the name of the test 
-   */
-  public void setTestName(String s) {
-    m_testName= s;
-  }
-
-  // TestNG settings
-  public void setJUnit(boolean value) {
-    m_isJUnit= Boolean.valueOf(value);
-  }
-
-  /**
-   * Sets the default annotation type for suites that have not explicitly set the 
-   * annotation property. The target is used only in JDK5+.
-   * @param defaultAnnotations the default annotation type. This is one of the two constants 
-   * (TestNG.JAVADOC_ANNOTATION_TYPE or TestNG.JDK_ANNOTATION_TYPE).
-   *
-   * @since 5.2
-   */
-  public void setAnnotations(String defaultAnnotations) {
-    m_target = defaultAnnotations;
-  }
-
-  /**
-   * @param target 
-   * @deprecated use setAnnotations
-   */
-  @Deprecated
-  public void setTarget(String target) {
-    m_target= target;
-    log("The usage of " + TestNGCommandLineArgs.TARGET_COMMAND_OPT + " option is deprecated. Please use " 
-        + TestNGCommandLineArgs.ANNOTATIONS_COMMAND_OPT + " instead", Project.MSG_WARN);
-  }
-
-  /**
-   * Sets the test output directory
-   * @param dir the name of directory
-   */
-  public void setOutputDir(File dir) {
-    m_outputDir= dir;
-  }
-
-  /**
-   * Sets the test jar
-   * @param s the name of test jar
-   */
-  public void setTestJar(File s) {
-    m_testjar= s;
-  }
-
-  public void setGroups(String groups) {
-    m_includedGroups= groups;
-  }
-
-  public void setExcludedGroups(String groups) {
-    m_excludedGroups= groups;
-  }
-
-  private Integer m_verbose= null;
-
-  public void setVerbose(Integer verbose) {
-    m_verbose= verbose;
-  }
-
-  public void setReporter(String listener) {
-    m_listeners.add(listener);
-  }
-
-  public void setObjectFactory(String className) {
-    m_objectFactory = className;
-  }
-
-  public void setTestRunnerFactory(String testRunnerFactory) {
-    this.m_testRunnerFactory = testRunnerFactory;
-  }
-
-  /**
-   * @deprecated Use "listeners"
-   */
-  public void setListener(String listener) {
-    m_listeners.add(listener);
-  }
-
-  public void setListeners(String listeners) {
-    StringTokenizer st= new StringTokenizer(listeners, " ,");
-    while(st.hasMoreTokens()) {
-      m_listeners.add(st.nextToken());
-    }
-  }
-
-  /**
-   * Launches TestNG in a new JVM.
-   *
-   * {@inheritDoc}
-   */
-  @Override
-  public void execute() throws BuildException {
-    validateOptions();
-
-    CommandlineJava cmd= getJavaCommand();
-
-    cmd.setClassname(m_mainClass);
-
-    List<String> argv= Lists.newArrayList();
-
-    if (null != m_isJUnit) {
-      if(m_isJUnit.booleanValue()) {
-        argv.add(TestNGCommandLineArgs.JUNIT_DEF_OPT);
-      }
-    }
-    
-    if (null != m_skipFailedInvocationCounts) {
-      if(m_skipFailedInvocationCounts.booleanValue()) {
-        argv.add(TestNGCommandLineArgs.SKIP_FAILED_INVOCATION_COUNT_OPT);
-      }
-    }
-    
-    if (m_delegateCommandSystemProperties) {
-      delegateCommandSystemProperties();
-    }
-
-    if(null != m_verbose) {
-      argv.add(TestNGCommandLineArgs.LOG);
-      argv.add(m_verbose.toString());
-    }
-
-    if(m_assertEnabled) {
-      cmd.createVmArgument().setValue("-ea");
-    }
-
-    if(m_useDefaultListeners != null) {
-      String useDefaultListeners = "false";
-      if ("yes".equalsIgnoreCase(m_useDefaultListeners) 
-          || "true".equalsIgnoreCase(m_useDefaultListeners))
-      {
-        useDefaultListeners = "true";
-      }
-      argv.add(TestNGCommandLineArgs.USE_DEFAULT_LISTENERS);
-      argv.add(useDefaultListeners);
-    }
-
-    if((null != m_outputDir)) {
-      if(!m_outputDir.exists()) {
-        m_outputDir.mkdirs();
-      }
-      if(m_outputDir.isDirectory()) {
-        argv.add(TestNGCommandLineArgs.OUTDIR_COMMAND_OPT);
-        argv.add(m_outputDir.getAbsolutePath());
-      }
-      else {
-        throw new BuildException("Output directory is not a directory: " + m_outputDir);
-      }
-    }
-
-    if(null != m_target) {
-      argv.add(TestNGCommandLineArgs.ANNOTATIONS_COMMAND_OPT);
-      argv.add(m_target);
-    }
-
-    if((null != m_testjar) && m_testjar.isFile()) {
-      argv.add(TestNGCommandLineArgs.TESTJAR_COMMAND_OPT);
-      argv.add(m_testjar.getAbsolutePath());
-    }
-
-    if(null != m_sourceDirPath) {
-      String srcPath= createPathString(m_sourceDirPath, ";");
-      argv.add(TestNGCommandLineArgs.SRC_COMMAND_OPT);
-      argv.add(srcPath);
-    }
-
-    if((null != m_includedGroups) && !"".equals(m_includedGroups)) {
-      argv.add(TestNGCommandLineArgs.GROUPS_COMMAND_OPT);
-      argv.add(m_includedGroups);
-    }
-
-    if((null != m_excludedGroups) && !"".equals(m_excludedGroups)) {
-      argv.add(TestNGCommandLineArgs.EXCLUDED_GROUPS_COMMAND_OPT);
-      argv.add(m_excludedGroups);
-    }
-
-    if(m_classFilesets.size() > 0) {
-      argv.add(TestNGCommandLineArgs.TESTCLASS_COMMAND_OPT);
-      for(String file : fileset(m_classFilesets)) {
-        argv.add(file);
-      }
-    }
-
-    if(m_listeners != null && m_listeners.size() > 0) {
-      argv.add(TestNGCommandLineArgs.LISTENER_COMMAND_OPT);
-      StringBuffer listeners= new StringBuffer();
-      for(int i= 0; i < m_listeners.size(); i++) {
-        listeners.append(m_listeners.get(i));
-        if(i < m_listeners.size() - 1) listeners.append(';');
-      }
-      argv.add(listeners.toString());
-    }
-
-    if(m_objectFactory != null) {
-      argv.add(TestNGCommandLineArgs.OBJECT_FACTORY_COMMAND_OPT);
-      argv.add(m_objectFactory);
-    }
-
-    if (m_testRunnerFactory !=null) {
-      argv.add(TestNGCommandLineArgs.TESTRUNNER_FACTORY_COMMAND_OPT);
-      argv.add(m_testRunnerFactory);
-    }
-
-    if(m_parallelMode != null) {
-      argv.add(TestNGCommandLineArgs.PARALLEL_MODE);
-      argv.add(m_parallelMode);
-    }
-
-    if(m_threadCount != null) {
-      argv.add(TestNGCommandLineArgs.THREAD_COUNT);
-      argv.add(m_threadCount);
-    }
-
-    if(m_dataproviderthreadCount != null) {
-      argv.add(TestNGCommandLineArgs.DATA_PROVIDER_THREAD_COUNT);
-      argv.add(m_dataproviderthreadCount);
-    }
-    
-    if(!"".equals(m_suiteName)) {
-    	argv.add(TestNGCommandLineArgs.SUITE_NAME_OPT);
-    	argv.add(m_suiteName);
-    }
-
-    if(!"".equals(m_testName)) {
-    	argv.add(TestNGCommandLineArgs.TEST_NAME_OPT);
-    	argv.add(m_testName);
-    }
-
-    if (!reporterConfigs.isEmpty()) {
-      for (ReporterConfig reporterConfig : reporterConfigs) {
-        argv.add(TestNGCommandLineArgs.REPORTER);
-        argv.add(reporterConfig.serialize());
-      }
-    }
-
-    if(m_xmlFilesets.size() > 0) {
-      for(String file : fileset(m_xmlFilesets)) {
-        argv.add(file);
-      }
-    }
-
-    String fileName= "";
-    FileWriter fw= null;
-    BufferedWriter bw= null;
-    try {
-      File f= File.createTempFile("testng", "");
-      fileName= f.getAbsolutePath();
-
-      // If the user asked to see the command, preserve the file
-      if(!m_dump) {
-        f.deleteOnExit();
-      }
-      fw= new FileWriter(f);
-      bw= new BufferedWriter(fw);
-      for(String arg : argv) {
-        bw.write(arg);
-        bw.newLine();
-      }
-      bw.flush();
-    }
-    catch(IOException e) {
-      e.printStackTrace();
-    }
-    finally {
-      try {
-        if(bw != null) {
-          bw.close();
-        }
-        if(fw != null) {
-          fw.close();
-        }
-      }
-      catch(IOException e) {
-        e.printStackTrace();
-      }
-    }
-
-    printDebugInfo(fileName);
-
-    createClasspath().setLocation(findJar());
-
-    cmd.createArgument().setValue("@" + fileName);
-
-    ExecuteWatchdog watchdog= createWatchdog();
-    boolean wasKilled= false;
-    int exitValue= executeAsForked(cmd, watchdog);
-    if(null != watchdog) {
-      wasKilled= watchdog.killedProcess();
-    }
-
-    actOnResult(exitValue, wasKilled);
-  }
-
-  private void delegateCommandSystemProperties() {
-    Project proj = getProject();
-    // iterate over ant_cmd_lin_args and pass them through as sysproperty
-    if (proj.getProperty("ENV.ANT_CMD_LINE_ARGS") != null) {
-      String[] cmdVals = proj.getProperty("ENV.ANT_CMD_LINE_ARGS").split(" ");
-      for (String cmdVal : cmdVals)
-        if (cmdVal.startsWith("-D")) {
-          String propKey = cmdVal.replace("-D", "");
-          String propVal = proj.getProperty(propKey);
-          Environment.Variable var = new Environment.Variable();
-          var.setKey(propKey);
-          var.setValue(propVal);
-          addSysproperty(var);
-        }
-    }
-  }
-
-  private void printDebugInfo(String fileName) {
-    if(m_dumpSys) {
-      System.out.println("* SYSTEM PROPERTIES *");
-      Properties props= System.getProperties();
-      Enumeration en= props.propertyNames();
-      while(en.hasMoreElements()) {
-        String key= (String) en.nextElement();
-        System.out.println(key + ": " + props.getProperty(key));
-      }
-      System.out.println("");
-    }
-    if(m_dumpEnv) {
-      String[] vars= m_environment.getVariables();
-      if(null != vars && vars.length > 0) {
-        System.out.println("* ENVIRONMENT *");
-        for(String v: vars) {
-          System.out.println(v);
-        }
-        System.out.println("");
-      }
-    }
-    if(m_dump) {
-      dumpCommand(fileName);
-    }
-  }
-  
-  private void ppp(String string) {
-    System.out.println("[TestNGAntTask] " + string);
-  }
-
-  protected void actOnResult(int exitValue, boolean wasKilled) {
-    if(exitValue == -1) {
-      executeHaltTarget(exitValue);
-      throw new BuildException("an error occured when running TestNG tests");
-    }
-
-    if((exitValue & TestNG.HAS_NO_TEST) == TestNG.HAS_NO_TEST) {
-      if(m_haltOnFailure) {
-        executeHaltTarget(exitValue);
-        throw new BuildException("No tests were run");
-      }
-      else {
-        if(null != m_failurePropertyName) {
-          getProject().setNewProperty(m_failurePropertyName, "true");
-        }
-
-        log("TestNG haven't found any tests to be run", Project.MSG_DEBUG);
-      }
-    }
-
-    boolean failed= ((exitValue & TestNG.HAS_FAILURE) == TestNG.HAS_FAILURE) || wasKilled;
-    if(failed) {
-      final String msg= wasKilled ? "The tests timed out and were killed." : "The tests failed.";
-      if(m_haltOnFailure) {
-        executeHaltTarget(exitValue);
-        throw new BuildException(msg);
-      }
-      else {
-        if(null != m_failurePropertyName) {
-          getProject().setNewProperty(m_failurePropertyName, "true");
-        }
-
-        log(msg, Project.MSG_DEBUG);
-      }
-    }
-
-    if((exitValue & TestNG.HAS_SKIPPED) == TestNG.HAS_SKIPPED) {
-      if(m_haltOnSkipped) {
-        executeHaltTarget(exitValue);
-        throw new BuildException("There are TestNG SKIPPED tests");
-      }
-      else {
-        if(null != m_skippedPropertyName) {
-          getProject().setNewProperty(m_skippedPropertyName, "true");
-        }
-
-        log("There are TestNG SKIPPED tests", Project.MSG_DEBUG);
-      }
-    }
-
-    if((exitValue & TestNG.HAS_FSP) == TestNG.HAS_FSP) {
-      if(m_haltOnFSP) {
-        executeHaltTarget(exitValue);
-        throw new BuildException("There are TestNG FAILED WITHIN SUCCESS PERCENTAGE tests");
-      }
-      else {
-        if(null != m_fspPropertyName) {
-          getProject().setNewProperty(m_fspPropertyName, "true");
-        }
-
-        log("There are TestNG FAILED WITHIN SUCCESS PERCENTAGE tests", Project.MSG_DEBUG);
-      }
-    }
-  }
-
-  /** Executes the target, if any, that user designates executing before failing the test */
-  private void executeHaltTarget(int exitValue) {
-    if(m_onHaltTarget != null) {
-      if(m_outputDir != null) {
-        getProject().setProperty("testng.outputdir", m_outputDir.getAbsolutePath());
-      }
-      getProject().setProperty("testng.returncode", String.valueOf(exitValue));
-      Target t= (Target) getProject().getTargets().get(m_onHaltTarget);
-      if(t != null) {
-        t.execute();
-      }
-    }
-  }
-
-  /**
-   * Executes the command line as a new process.
-   *
-   * @param cmd the command to execute
-   * @param watchdog
-   * @return the exit status of the subprocess or INVALID.
-   */
-  protected int executeAsForked(CommandlineJava cmd, ExecuteWatchdog watchdog) {
-    Execute execute= new Execute(new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN),
-                                 watchdog);
-    execute.setCommandline(cmd.getCommandline());
-    execute.setAntRun(getProject());
-    if(m_workingDir != null) {
-      if(m_workingDir.exists() && m_workingDir.isDirectory()) {
-        execute.setWorkingDirectory(m_workingDir);
-      }
-      else {
-        log("Ignoring invalid working directory : " + m_workingDir, Project.MSG_WARN);
-      }
-    }
-
-    String[] environment= m_environment.getVariables();
-    if(null != environment) {
-      for(String envEntry : environment) {
-        log("Setting environment variable: " + envEntry, Project.MSG_VERBOSE);
-      }
-    }
-
-    execute.setEnvironment(environment);
-
-    log(cmd.describeCommand(), Project.MSG_VERBOSE);
-    int retVal;
-    try {
-      retVal= execute.execute();
-    }
-    catch(IOException e) {
-      throw new BuildException("Process fork failed.", e, getLocation());
-    }
-
-    return retVal;
-  }
-
-  /**
-   * Creates or returns the already created <CODE>CommandlineJava</CODE>.
-   */
-  protected CommandlineJava getJavaCommand() {
-    if(null == m_javaCommand) {
-      m_javaCommand= new CommandlineJava();
-    }
-
-    return m_javaCommand;
-  }
-
-  /**
-   * @return <tt>null</tt> if there is no timeout value, otherwise the
-   * watchdog instance.
-   *
-   * @throws BuildException under unspecified circumstances
-   * @since Ant 1.2
-   */
-  protected ExecuteWatchdog createWatchdog() /*throws BuildException*/ {
-    if(m_timeout == null) {
-      return null;
-    }
-
-    return new ExecuteWatchdog(m_timeout.longValue());
-  }
-
-  protected void validateOptions() throws BuildException {
-    if((m_xmlFilesets.size() == 0)
-      && (m_classFilesets.size() == 0)
-      && ((null == m_testjar) || !m_testjar.isFile())) {
-      throw new BuildException("No suite or classes or jar is specified.");
-    }
-
-    if((null != m_includedGroups) && (m_classFilesets.size() == 0 && m_xmlFilesets.size() == 0)) {
-      throw new BuildException("No class filesets or xml file sets specified while using groups");
-    }
-
-    if (m_target != null) {
-      try {
-        m_target = AnnotationTypeEnum.valueOf(m_target).getName();
-      } 
-      catch (RuntimeException pEx) {
-        throw new BuildException("Illegal default annotations: " + m_target, pEx);
-      }
-    }
-    
-    if (VersionInfo.IS_JDK14) {
-      if (null == m_sourceDirPath) {
-        throw new BuildException("No sourceDir is specified.");
-      }
-    }
-
-    if(m_onHaltTarget != null) {
-      if(!getProject().getTargets().containsKey(m_onHaltTarget)) {
-        throw new BuildException("Target " + m_onHaltTarget + " not found in this project");
-      }
-    }
-
-  }
-
-  private FileSet createFileSet(Reference ref) {
-    FileSet fs= new FileSet();
-    fs.setRefid(ref);
-    fs.setProject(getProject());
-
-    return fs;
-  }
-
-  private FileSet appendClassSelector(FileSet fs) {
-    FilenameSelector selector= new FilenameSelector();
-    selector.setName("**/*.class");
-    selector.setProject(getProject());
-    fs.appendSelector(selector);
-
-    return fs;
-  }
-
-  private File findJar() {
-    Class thisClass= getClass();
-    String resource= thisClass.getName().replace('.', '/') + ".class";
-    URL url= thisClass.getClassLoader().getResource(resource);
-
-    if(null != url) {
-      String u= url.toString();
-      if(u.startsWith("jar:file:")) {
-        int pling= u.indexOf("!");
-        String jarName= u.substring(4, pling);
-
-        return new File(fromURI(jarName));
-      }
-      else if(u.startsWith("file:")) {
-        int tail= u.indexOf(resource);
-        String dirName= u.substring(0, tail);
-
-        return new File(fromURI(dirName));
-      }
-    }
-
-    return null;
-  }
-
-  private String fromURI(String uri) {
-    URL url= null;
-    try {
-      url= new URL(uri);
-    }
-    catch(MalformedURLException murle) {
-    }
-    if((null == url) || !("file".equals(url.getProtocol()))) {
-      throw new IllegalArgumentException("Can only handle valid file: URIs");
-    }
-
-    StringBuffer buf= new StringBuffer(url.getHost());
-    if(buf.length() > 0) {
-      buf.insert(0, File.separatorChar).insert(0, File.separatorChar);
-    }
-
-    String file= url.getFile();
-    int queryPos= file.indexOf('?');
-    buf.append((queryPos < 0) ? file : file.substring(0, queryPos));
-
-    uri= buf.toString().replace('/', File.separatorChar);
-
-    if((File.pathSeparatorChar == ';') && uri.startsWith("\\") && (uri.length() > 2)
-      && Character.isLetter(uri.charAt(1)) && (uri.lastIndexOf(':') > -1)) {
-      uri= uri.substring(1);
-    }
-
-    StringBuffer sb= new StringBuffer();
-    CharacterIterator iter= new StringCharacterIterator(uri);
-    for(char c= iter.first(); c != CharacterIterator.DONE; c= iter.next()) {
-      if(c == '%') {
-        char c1= iter.next();
-        if(c1 != CharacterIterator.DONE) {
-          int i1= Character.digit(c1, 16);
-          char c2= iter.next();
-          if(c2 != CharacterIterator.DONE) {
-            int i2= Character.digit(c2, 16);
-            sb.append((char) ((i1 << 4) + i2));
-          }
-        }
-      }
-      else {
-        sb.append(c);
-      }
-    }
-
-    return sb.toString();
-  }
-
-  /**
-   * Returns the list of files corresponding to the filesets
-   *
-   * @param filesets
-   * @return the list of files corresponding to the filesets
-   * @throws BuildException
-   */
-  private List<String> fileset(List<FileSet> filesets) throws BuildException {
-    List<String> files= Lists.newArrayList();
-
-    for(Iterator<FileSet> iterator= filesets.iterator(); iterator.hasNext();) {
-      FileSet fileset= iterator.next();
-      DirectoryScanner ds= fileset.getDirectoryScanner(getProject());
-
-      for(String file : ds.getIncludedFiles()) {
-        files.add(ds.getBasedir() + File.separator + file);
-      }
-    }
-
-    return files;
-  }
-
-  /**
-   * Adds double quotes to the command line argument if it contains spaces.
-   * @param pCommandLineArg the command line argument
-   * @return pCommandLineArg in double quotes if it contains space.
-   *
-   */
-  private static String doubleQuote(String pCommandLineArg) {
-    if(pCommandLineArg.indexOf(" ") != -1 && !(pCommandLineArg.startsWith("\"") && pCommandLineArg.endsWith("\""))) {
-      return "\"" + pCommandLineArg + '\"';
-    }
-
-    return pCommandLineArg;
-  }
-
-  /**
-   * Creates a string representation of the path.
-   */
-  private String createPathString(Path path, String sep) {
-    if(path == null) {
-      return null;
-    }
-
-    final StringBuffer buf= new StringBuffer();
-
-    for(int i= 0; i < path.list().length; i++) {
-      File file= getProject().resolveFile(path.list()[i]);
-
-      if(!file.exists()) {
-        log("Classpath entry not found: " + file, Project.MSG_WARN);
-      }
-
-      buf.append(file.getAbsolutePath()).append(sep);
-    }
-
-    if(path.list().length > 0) { // cut the last ;
-      buf.deleteCharAt(buf.length() - 1);
-    }
-
-    return buf.toString();
-  }
-
-  private void dumpCommand(String fileName) {
-    ppp("TESTNG PASSED @" + fileName + " WHICH CONTAINS:");
-    List<String> lines= TestNGCommandLineArgs.readFile(fileName);
-    for(String line : lines) {
-      ppp(line);
-    }
-  }
-
-  public void addConfiguredReporter(ReporterConfig reporterConfig) {
-    reporterConfigs.add(reporterConfig);
-  }
-  
-  public void setSkipFailedInvocationCounts(boolean skip) {
-    m_skipFailedInvocationCounts = Boolean.valueOf(skip);
-  }
-}
diff --git a/src/org/testng/TestNGCommandLineArgs.java b/src/org/testng/TestNGCommandLineArgs.java
deleted file mode 100644
index b2f65a1..0000000
--- a/src/org/testng/TestNGCommandLineArgs.java
+++ /dev/null
@@ -1,759 +0,0 @@
-package org.testng;
-
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.Utils;
-import org.testng.internal.version.VersionInfo;
-import org.testng.log4testng.Logger;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * TestNG/RemoteTestNG command line arguments parser.
- * 
- * @author Cedric Beust
- * @author <a href = "mailto:the_mindstorm@evolva.ro">Alexandru Popescu</a>
- */
-public final class TestNGCommandLineArgs {
-  /** This class's log4testng Logger. */
-  private static final Logger LOGGER = Logger.getLogger(TestNGCommandLineArgs.class);
-  
-  public static final String SHOW_TESTNG_STACK_FRAMES = "testng.show.stack.frames";
-  public static final String TEST_CLASSPATH = "testng.test.classpath";
-  
-  // These next two are used by the Eclipse plug-in
-  public static final String PORT_COMMAND_OPT = "-port";
-  public static final String HOST_COMMAND_OPT = "-host";
-  
-  /** The logging level option. */
-  public static final String LOG = "-log";
-  
-  /** @deprecated replaced by DEFAULT_ANNOTATIONS_COMMAND_OPT. */
-  public static final String TARGET_COMMAND_OPT = "-target";
-
-  /** The default annotations option (useful in TestNG 15 only). */
-  public static final String ANNOTATIONS_COMMAND_OPT = "-annotations";
-  /** The test report output directory option. */
-  public static final String OUTDIR_COMMAND_OPT = "-d";
-  public static final String EXCLUDED_GROUPS_COMMAND_OPT = "-excludegroups";
-  public static final String GROUPS_COMMAND_OPT = "-groups";
-  public static final String JUNIT_DEF_OPT = "-junit";
-  public static final String LISTENER_COMMAND_OPT = "-listener";
-  public static final String MASTER_OPT = "-master";
-  public static final String OBJECT_FACTORY_COMMAND_OPT = "-objectfactory";
-  /**
-   * Used to pass a reporter configuration in the form
-   * <code>-reporter <reporter_name_or_class>:option=value[,option=value]</code>
-   */
-  public static final String REPORTER = "-reporter";
-  /**
-   * Used as map key for the complete list of report listeners provided with the above argument
-   */
-  public static final String REPORTERS_LIST = "-reporterslist";
-  public static final String PARALLEL_MODE = "-parallel";
-  public static final String SKIP_FAILED_INVOCATION_COUNT_OPT = "-skipfailedinvocationcounts";
-  public static final String SLAVE_OPT = "-slave";
-  /** The source directory option (when using JavaDoc type annotations). */
-  public static final String SRC_COMMAND_OPT = "-sourcedir";
-  public static final String SUITE_NAME_OPT = "-suitename";
-  /** The list of test classes option. */
-  public static final String TESTCLASS_COMMAND_OPT = "-testclass";
-  public static final String TESTJAR_COMMAND_OPT = "-testjar";
-  public static final String TEST_NAME_OPT = "-testname";
-  public static final String TESTRUNNER_FACTORY_COMMAND_OPT = "-testrunfactory";
-  public static final String THREAD_COUNT = "-threadcount";
-  public static final String DATA_PROVIDER_THREAD_COUNT = "-dataproviderthreadcount";
-  public static final String USE_DEFAULT_LISTENERS = "-usedefaultlisteners";
-  public static final String SUITE_DEF_OPT = "testng.suite.definitions";
-
-
-  /** 
-   * When given a file name to form a class name, the file name is parsed and divided 
-   * into segments. For example, "c:/java/classes/com/foo/A.class" would be divided
-   * into 6 segments {"C:" "java", "classes", "com", "foo", "A"}. The first segment 
-   * actually making up the class name is [3]. This value is saved in m_lastGoodRootIndex
-   * so that when we parse the next file name, we will try 3 right away. If 3 fails we
-   * will take the long approach. This is just a optimization cache value.
-   */  
-  private static int m_lastGoodRootIndex = -1;
-  
-  /**
-   * Hide the constructor for utility class.
-   */
-  private TestNGCommandLineArgs() {
-    // Hide constructor for utility class
-  }
-  
-  /**
-   * Parses the command line options and returns a map from option string to parsed values. 
-   * For example, if argv contains {..., "-sourcedir", "src/main", "-target", ...} then
-   * the map would contain an entry in which the key would be the "-sourcedir" String and
-   * the value would be the "src/main" String.
-   *
-   * @param originalArgv the command line options.
-   * @return the parsed parameters as a map from option string to parsed values. 
-   */
-  public static Map parseCommandLine(final String[] originalArgv) {
-    for (int i = 0; i < originalArgv.length; ++i) {
-      LOGGER.debug("originalArgv[" + i + "] = \"" + originalArgv[i] + "\"");
-    }
-    // TODO CQ In this method, is this OK to simply ignore invalid parameters?
-    LOGGER.debug("TestNG version: \"" + (VersionInfo.IS_JDK14 ? "14" : "15") + "\"");
-    
-    Map<String, Object> arguments = Maps.newHashMap();
-    String[] argv = expandArgv(originalArgv);
-
-    for (int i = 0; i < argv.length; i++) {
-      if (OUTDIR_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(OUTDIR_COMMAND_OPT, argv[i + 1].trim());
-        }
-        else {
-          LOGGER.error("WARNING: missing output directory after -d.  ignored");
-        }
-        i++;
-      }
-      else if (GROUPS_COMMAND_OPT.equalsIgnoreCase(argv[i]) 
-          || EXCLUDED_GROUPS_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          String option = null;
-          if (argv[i + 1].startsWith("\"")) {
-            if (argv[i + 1].endsWith("\"")) {
-              option = argv[i + 1].substring(1, argv[i + 1].length() - 1);
-            }
-            else {
-              LOGGER.error("WARNING: groups option is not well quoted:" + argv[i + 1]);
-              option = argv[i + 1].substring(1);
-            }
-          }
-          else {
-            option = argv[i + 1];
-          }
-
-          String opt = GROUPS_COMMAND_OPT.equalsIgnoreCase(argv[i]) 
-            ? GROUPS_COMMAND_OPT : EXCLUDED_GROUPS_COMMAND_OPT;
-          arguments.put(opt, option);
-        }
-        else {
-          LOGGER.error("WARNING: missing groups parameter after -groups. ignored");
-        }
-        i++;
-      }
-      else if (LOG.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(LOG, Integer.valueOf(argv[i + 1].trim()));
-        }
-        else {
-          LOGGER.error("WARNING: missing log level after -log.  ignored");
-        }
-        i++;
-      }
-      else if (JUNIT_DEF_OPT.equalsIgnoreCase(argv[i])) {
-        arguments.put(JUNIT_DEF_OPT, Boolean.TRUE);
-      }
-      else if (TARGET_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(ANNOTATIONS_COMMAND_OPT, AnnotationTypeEnum.valueOf(argv[i + 1]));
-          LOGGER.warn("The usage of " + TARGET_COMMAND_OPT + " has been deprecated. Please use " + ANNOTATIONS_COMMAND_OPT + " instead.");
-          ++i;
-        }
-      }
-      else if (ANNOTATIONS_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(ANNOTATIONS_COMMAND_OPT, AnnotationTypeEnum.valueOf(argv[i + 1]));
-          ++i;
-        }
-      }
-      else if (TESTRUNNER_FACTORY_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(TESTRUNNER_FACTORY_COMMAND_OPT, fileToClass(argv[++i]));
-        }
-        else {
-          LOGGER.error("WARNING: missing ITestRunnerFactory class or file argument after "
-              + TESTRUNNER_FACTORY_COMMAND_OPT);
-        }
-      }
-      else if (OBJECT_FACTORY_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          Class<?> cls = fileToClass(argv[++i]);
-          arguments.put(OBJECT_FACTORY_COMMAND_OPT, cls);
-        }
-        else {
-          LOGGER.error("WARNING: missing IObjectFactory class/file list argument after "
-              + OBJECT_FACTORY_COMMAND_OPT);
-        }
-      }
-      else if (LISTENER_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          String strClass = argv[++i];
-          String sep = ";";
-          if (strClass.indexOf(",") >= 0) {
-            sep = ",";
-          }
-          String[] strs = Utils.split(strClass, sep);
-          List<Class<?>> classes = Lists.newArrayList();
-
-          for (String cls : strs) {
-            classes.add(fileToClass(cls));
-          }
-
-          arguments.put(LISTENER_COMMAND_OPT, classes);
-        }
-        else {
-          LOGGER.error("WARNING: missing ITestListener class/file list argument after "
-              + LISTENER_COMMAND_OPT);
-        }
-      }
-      else if (TESTCLASS_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          while ((i + 1) < argv.length) {
-            String nextArg = argv[i + 1].trim();
-            if (!nextArg.toLowerCase().endsWith(".xml") && !nextArg.startsWith("-")) {
-
-              // Assume it's a class name
-              List<Class<?>> l = (List<Class<?>>) arguments.get(TESTCLASS_COMMAND_OPT);
-              if (null == l) {
-                l = Lists.newArrayList();
-                arguments.put(TESTCLASS_COMMAND_OPT, l);
-              }
-              Class<?> cls = fileToClass(nextArg);
-              if (null != cls) {
-                l.add(cls);
-              }
-
-              i++;
-            } // if
-            else {
-              break;
-            }
-          }
-        }
-        else {
-          TestNG.exitWithError("-testclass must be followed by a classname");
-        }
-      }
-      else if (TESTJAR_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(TESTJAR_COMMAND_OPT, argv[i + 1].trim());
-        }
-        else {
-          TestNG.exitWithError("-testjar must be followed by a valid jar");
-        }
-        i++;
-      }
-      else if (SRC_COMMAND_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(SRC_COMMAND_OPT, argv[i + 1].trim());
-        }
-        else {
-          TestNG.exitWithError(SRC_COMMAND_OPT + " must be followed by a directory path");
-        }
-        i++;
-      }
-      else if (HOST_COMMAND_OPT.equals(argv[i])) {
-        String hostAddress = "127.0.0.1";
-        if ((i + 1) < argv.length) {
-          hostAddress = argv[i + 1].trim();
-          i++;
-        }
-        else {
-          LOGGER.warn("WARNING: "
-              + HOST_COMMAND_OPT
-              + " option should be followed by the host address. "
-              + "Using default localhost.");
-        }
-
-        arguments.put(HOST_COMMAND_OPT, hostAddress);
-
-      }
-      else if (PORT_COMMAND_OPT.equals(argv[i])) {
-        String portNumber = null;
-        if ((i + 1) < argv.length) {
-          portNumber = argv[i + 1].trim();
-        }
-        else {
-          TestNG.exitWithError(
-              PORT_COMMAND_OPT + " option should be followed by a valid port number.");
-        }
-
-        arguments.put(PORT_COMMAND_OPT, portNumber);
-        i++;
-      }
-      else if (SLAVE_OPT.equals(argv[i])) {
-        String propertiesFile = null;
-        if ((i + 1) < argv.length) {
-          propertiesFile = argv[i + 1].trim();
-        }
-        else {
-          TestNG.exitWithError(SLAVE_OPT + " option should be followed by a valid file path.");
-        }
-        
-        arguments.put(SLAVE_OPT, propertiesFile);
-        i++;
-      }
-      else if (MASTER_OPT.equals(argv[i])) {
-        String propertiesFile = null;
-        if ((i + 1) < argv.length) {
-      	  propertiesFile = argv[i + 1].trim();
-        }
-        else {
-          TestNG.exitWithError(MASTER_OPT + " option should be followed by a valid file path.");
-        }
-
-        arguments.put(MASTER_OPT, propertiesFile);
-        i++;
-      }
-      else if (PARALLEL_MODE.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(PARALLEL_MODE, argv[i + 1]);
-          i++;
-        }
-      }
-      else if (THREAD_COUNT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(THREAD_COUNT, argv[i + 1]);
-          i++;
-        }
-      }
-      else if (DATA_PROVIDER_THREAD_COUNT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(DATA_PROVIDER_THREAD_COUNT, argv[i + 1]);
-           i++;
-        }
-      }
-      else if (USE_DEFAULT_LISTENERS.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(USE_DEFAULT_LISTENERS, argv[i + 1]);
-          i++;
-        }
-      }
-      else if (SUITE_NAME_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(SUITE_NAME_OPT, trim(argv[i + 1]));
-          i++;
-        }
-      }
-      else if (TEST_NAME_OPT.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          arguments.put(TEST_NAME_OPT, trim(argv[i + 1]));
-          i++;
-        }
-      }
-      else if (REPORTER.equalsIgnoreCase(argv[i])) {
-        if ((i + 1) < argv.length) {
-          ReporterConfig reporterConfig = ReporterConfig.deserialize(trim(argv[i + 1]));
-          if (arguments.get(REPORTERS_LIST) == null) {
-            arguments.put(REPORTERS_LIST, Lists.newArrayList());
-          }
-          ((List<ReporterConfig>)arguments.get(REPORTERS_LIST)).add(reporterConfig);
-          i++;
-        }
-      }
-      else if (SKIP_FAILED_INVOCATION_COUNT_OPT.equalsIgnoreCase(argv[i])) {
-        arguments.put(SKIP_FAILED_INVOCATION_COUNT_OPT, Boolean.TRUE);
-      }
-      //
-      // Unknown option
-      //
-      else if (argv[i].startsWith("-")) {
-        TestNG.exitWithError("Unknown option: " + argv[i]);
-      }      
-      //
-      // The XML files
-      //
-      // Read parameters just once, to get all xml files
-      else if( arguments.get(SUITE_DEF_OPT) == null ){
-        List<String> suiteDefs = Lists.newArrayList();
-
-        // Iterates over all declared XML file params
-        for (int k = i; k < argv.length; k++) {
-          String file = argv[k].trim();
-          if (file.toLowerCase().endsWith(".xml")) {
-            suiteDefs.add(file);
-          }
-        }
-
-        arguments.put(SUITE_DEF_OPT, suiteDefs);
-      }
-    }
-
-    for (Map.Entry entry : arguments.entrySet()) {
-      LOGGER.debug("parseCommandLine argument: \"" 
-        + entry.getKey() + "\" = \"" + entry.getValue() + "\"");
-    }
-    return arguments;
-  }
-
-
-  /**
-   * @param string
-   * @return
-   */
-  private static String trim(String string) {
-	String trimSpaces=string.trim();
-	if (trimSpaces.startsWith("\"")) {
-		if (trimSpaces.endsWith("\"")) {
-			return trimSpaces.substring(1, trimSpaces.length() - 1);
-		} else {
-			return trimSpaces.substring(1);
-		}
-	} else {
-		return trimSpaces;
-	}
-	
-}
-
-  /**
-   * Expand the command line parameters to take @ parameters into account.
-   * When @ is encountered, the content of the file that follows is inserted
-   * in the command line
-   * @param originalArgv the original command line parameters
-   * @return the new and enriched command line parameters
-   */
-  private static String[] expandArgv(String[] originalArgv) {
-    List<String> vResult = Lists.newArrayList();
-    
-    for (String arg : originalArgv) {
-
-      if (arg.startsWith("@")) {
-        String fileName = arg.substring(1);
-        vResult.addAll(readFile(fileName));
-      }
-      else {
-        vResult.add(arg);
-      }
-    }
-    
-    return vResult.toArray(new String[vResult.size()]);
-  }   
-   
-   
-//  /**
-//   * Break a line of parameters into individual parameters as the command line parsing 
-//   * would do. The line is assumed to contain only un-escaped double quotes. For example 
-//   * the following Java string:
-//   * " a    \"command\"\"line\" \"with quotes\"  a command line\" with quotes \"here there"
-//   * would yield the following 7 tokens:
-//   * a,commandline,with quotes,a,command,line with quotes here,there
-//   * @param line the command line parameter to be parsed
-//   * @return the list of individual command line tokens
-//   */
-//  private static List<String> parseArgs(String line) {
-//    LOGGER.debug("parseArgs line: \"" + line + "\"");
-//    final String SPACE = " ";
-//    final String DOUBLE_QUOTE = "\"";
-//    
-//    // If line contains no double quotes, the space character is the only
-//    // separator. Easy to do return quickly (logic is also easier to follow)
-//    if (line.indexOf(DOUBLE_QUOTE) == -1) {
-//      List<String> results = Arrays.asList(line.split(SPACE));
-//      for (String result : results) {
-//        LOGGER.debug("parseArgs result: \"" + result + "\"");
-//      }
-//      return results;
-//    }
-//    
-//    // TODO There must be an easier way to do this with a regular expression.
-//    
-//    StringTokenizer st = new StringTokenizer(line, SPACE + DOUBLE_QUOTE, true);
-//    List<String> results = Lists.newArrayList();
-//    
-//    /* 
-//     * isInDoubleQuote toggles from false to true when we reach a double
-//     * quoted string and toggles back to false when we exit. We need to
-//     * know if we are in a double quoted string to treat blanks as normal
-//     * characters. Out of quotes blanks separate arguments. 
-//     * 
-//     * The following example shows these toggle points:
-//     * 
-//     * " a    \"command\"\"line\" \"with quotes\"  a command line\" with quotes \"here there"
-//     *        T        F T     F  T            F                 T              F
-//     *
-//     * If the double quotes are not evenly matched, an exception is thrown.
-//     */
-//    boolean isInDoubleQuote = false;
-//
-//    /*
-//     * isInArg toggles from false to true when we enter a command line argument
-//     * and toggles back to false when we exit. The logic is that we toggle to
-//     * true at the first non-whitespace character met. We toggle back to false
-//     * at first whitespace character not in double quotes or at end of line. 
-//     * 
-//     * The following example shows these toggle points:
-//     * 
-//     * " a    \"command\"\"line\" \"with quotes\"  a command line\" with quotes \"here there"
-//     *   TF   T                F  T             F  TFT      FT                             F
-//     */
-//    boolean isInArg = false;
-//
-//    /* arg is a string buffer to create the argument by concatenating all tokens
-//     * that compose it.
-//     * 
-//     * The following example shows the token returned by the parser and the 
-//     * (spaces, double quotes, others) and resultant argument:
-//     * 
-//     * Input (argument):
-//     * "line\" with quotes \"here"
-//     * 
-//     * Tokens (9):
-//     * line,", ,with, ,quote, ,",here
-//     */
-//    StringBuffer arg = new StringBuffer();
-//    
-//    while (st.hasMoreTokens()) {
-//      String token = st.nextToken();
-//      
-//      if (token.equals(SPACE)) {
-//        if (isInArg) {
-//          if (isInDoubleQuote) {
-//            // Spaces within double quotes are treated as normal spaces
-//            arg.append(SPACE);
-//          }
-//          else {
-//            // First spaces outside double quotes marks the end of the argument. 
-//            isInArg = false;
-//            results.add(arg.toString());
-//            arg = new StringBuffer();
-//          }
-//        }
-//      }
-//      else if (token.equals(DOUBLE_QUOTE)) {
-//        // If we encounter a double quote, we may be entering a new argument 
-//        // (isInArg is false) or continuing the current argument (isInArg is true).
-//        isInArg = true;
-//        isInDoubleQuote = !isInDoubleQuote;
-//      }
-//      else {
-//        // We we encounter a new token, we may be entering a new argument 
-//        // (isInArg is false) or continuing the current argument (isInArg is true).
-//        isInArg = true;
-//        arg.append(token);
-//      }
-//    }
-//    
-//    // In some (most) cases we exit this parsing because there are no tokens left
-//    // but we have not encountered a token to indicate that the last argument has
-//    // completely been read. For example, if the command line ends with a whitespace
-//    // the isInArg will toggle to false and the argument will be completely read.
-//    if (isInArg) {
-//      // End of last argument
-//      results.add(arg.toString());
-//    }
-//    
-//    // If we exit the parsing of the command line with an uneven number of double 
-//    // quotes, throw an exception.
-//    if (isInDoubleQuote) {
-//      throw new IllegalArgumentException("Unbalanced double quotes: \"" + line + "\"");
-//    }
-//    
-//    for (String result : results) {
-//      LOGGER.debug("parseArgs result: \"" + result + "\"");
-//    }
-//    
-//    return results;
-//  }
-
-  /**
-   * Reads the file specified by filename and returns the file content as a string.
-   * End of lines are replaced by a space
-   * 
-   * @param fileName the command line filename
-   * @return the file content as a string.
-   */
-  public static List<String> readFile(String fileName) {
-    List<String> result = Lists.newArrayList();
-
-    try {
-      BufferedReader bufRead = new BufferedReader(new FileReader(fileName));
-
-      String line;
-
-      // Read through file one line at time. Print line # and line
-      while ((line = bufRead.readLine()) != null) {
-        result.add(line);
-      }
-
-      bufRead.close();
-    }
-    catch (IOException e) {
-      LOGGER.error("IO exception reading command line file", e);
-    }
-
-    return result;
-
-  }
-
-  /**
-   * Returns the Class object corresponding to the given name. The name may be
-   * of the following form:
-   * <ul>
-   * <li>A class name: "org.testng.TestNG"</li>
-   * <li>A class file name: "/testng/src/org/testng/TestNG.class"</li>
-   * <li>A class source name: "d:\testng\src\org\testng\TestNG.java"</li>
-   * </ul>
-   * 
-   * @param file
-   *          the class name.
-   * @return the class corresponding to the name specified.
-   */
-  private static Class<?> fileToClass(String file) {
-    Class<?> result = null;
-    
-    if(!file.endsWith(".class") && !file.endsWith(".java")) {
-      // Doesn't end in .java or .class, assume it's a class name
-      result = ClassHelper.forName(file);
-
-      if (null == result) {
-        throw new TestNGException("Cannot load class from file: " + file);
-      }
-
-      return result;
-    }
-    
-    int classIndex = file.lastIndexOf(".class");
-    if (-1 == classIndex) {
-      classIndex = file.lastIndexOf(".java");
-//
-//      if(-1 == classIndex) {
-//        result = ClassHelper.forName(file);
-//  
-//        if (null == result) {
-//          throw new TestNGException("Cannot load class from file: " + file);
-//        }
-//  
-//        return result;
-//      }
-//
-    }
-
-    // Transforms the file name into a class name.
-    
-    // Remove the ".class" or ".java" extension.
-    String shortFileName = file.substring(0, classIndex);
-    
-    // Split file name into segments. For example "c:/java/classes/com/foo/A"
-    // becomes {"c:", "java", "classes", "com", "foo", "A"}
-    String[] segments = shortFileName.split("[/\\\\]", -1);
-
-    //
-    // Check if the last good root index works for this one. For example, if the previous
-    // name was "c:/java/classes/com/foo/A.class" then m_lastGoodRootIndex is 3 and we
-    // try to make a class name ignoring the first m_lastGoodRootIndex segments (3). This 
-    // will succeed rapidly if the path is the same as the one from the previous name.   
-    //    
-    if (-1 != m_lastGoodRootIndex) {
-      
-      // TODO use a SringBuffer here
-      String className = segments[m_lastGoodRootIndex];
-      for (int i = m_lastGoodRootIndex + 1; i < segments.length; i++) {
-        className += "." + segments[i];
-      }
-
-      result = ClassHelper.forName(className);
-
-      if (null != result) {
-        return result;
-      }
-    }
-
-    //
-    // We haven't found a good root yet, start by resolving the class from the end segment 
-    // and work our way up.  For example, if we start with "c:/java/classes/com/foo/A"
-    // we'll start by resolving "A", then "foo.A", then "com.foo.A" until something 
-    // resolves.  When it does, we remember the path we are at as "lastGoodRoodIndex".
-    //
-    
-    // TODO CQ use a StringBuffer here 
-    String className = null;
-    for (int i = segments.length - 1; i >= 0; i--) {
-      if (null == className) {
-        className = segments[i];
-      }
-      else {
-        className = segments[i] + "." + className;
-      }
-
-      result = ClassHelper.forName(className);
-
-      if (null != result) {
-        m_lastGoodRootIndex = i;
-        break;
-      }
-    }
-
-    if (null == result) {
-      throw new TestNGException("Cannot load class from file: " + file);
-    }
-
-    return result;
-  }
-
-//  private static void ppp(Object msg) {
-//    System.out.println("[CMD]: " + msg);
-//  }
-  
-  /**
-   * Prints the usage message to System.out. This message describes all the command line
-   * options.
-   */  
-  public static void usage() {
-    System.out.println("Usage:");
-    System.out.println("[" + OUTDIR_COMMAND_OPT + " output-directory]");
-    System.out.println("\t\tdefault output directory to : " + TestNG.DEFAULT_OUTPUTDIR);
-    System.out.println("[" + TESTCLASS_COMMAND_OPT 
-        + " list of .class files or list of class names]");
-    System.out.println("[" + SRC_COMMAND_OPT + " a source directory]");
-    
-    if (VersionInfo.IS_JDK14) {
-      System.out.println("[" + ANNOTATIONS_COMMAND_OPT + " " + AnnotationTypeEnum.JAVADOC.getName() + "]");
-      System.out.println("\t\tSpecifies the default annotation type to be used in suites when none is explicitly specified.");
-      System.out.println("\t\tThis version of TestNG (14) only supports " + AnnotationTypeEnum.JAVADOC.getName() + " annotation type.");
-      System.out.println("\t\tFor interface compatibility reasons, we allow this value to be explicitly set to " +
-          AnnotationTypeEnum.JAVADOC.getName() + "\"  ");
-    } 
-    else {
-      System.out.println("[" + ANNOTATIONS_COMMAND_OPT + " " + AnnotationTypeEnum.JAVADOC.getName() + " or " 
-          + AnnotationTypeEnum.JDK.getName() + "]");
-      System.out.println("\t\tSpecifies the default annotation type to be used in suites when none is explicitly");      
-      System.out.println("\t\tspecified. This version of TestNG (15) supports both \"" 
-          + AnnotationTypeEnum.JAVADOC.getName() + "\" and \"" + AnnotationTypeEnum.JDK.getName() + "\" annotation types.");
-    }
-
-    System.out.println("[" + GROUPS_COMMAND_OPT + " comma-separated list of group names to be run]");
-    System.out.println("\t\tworks only with " + TESTCLASS_COMMAND_OPT);
-    System.out.println("[" + EXCLUDED_GROUPS_COMMAND_OPT 
-        + " comma-separated list of group names to be excluded]");
-    System.out.println("\t\tworks only with " + TESTCLASS_COMMAND_OPT);
-    System.out.println("[" + TESTRUNNER_FACTORY_COMMAND_OPT 
-        + " list of .class files or list of class names implementing "
-        + ITestRunnerFactory.class.getName()
-        + "]");
-    System.out.println("[" + LISTENER_COMMAND_OPT
-        + " list of .class files or list of class names implementing "
-        + ITestListener.class.getName()
-        + " and/or "
-        + ISuiteListener.class.getName()
-        + "]");
-    System.out.println("[" + PARALLEL_MODE
-            + " methods|tests]");
-    System.out.println("\t\trun tests in parallel using the specified mode");
-    System.out.println("[" + THREAD_COUNT
-            + " number of threads to use when running tests in parallel]");
-    System.out.println("[" + SUITE_NAME_OPT + " name]");
-    System.out.println("\t\tDefault name of test suite, if not specified in suite definition file or source code");
-    System.out.println("[" + TEST_NAME_OPT + " Name]");
-    System.out.println("\t\tDefault name of test, if not specified in suite definition file or source code");
-    System.out.println("[" + REPORTER + " Extended configuration for custom report listener]");    
-    System.out.println("[suite definition files*]");
-    System.out.println("");
-    System.out.println("For details, please consult the documentation at http://testng.org.");
-  }
-}
diff --git a/src/org/testng/TestNGException.java b/src/org/testng/TestNGException.java
deleted file mode 100755
index a5b3d86..0000000
--- a/src/org/testng/TestNGException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.testng;
-
-
-/**
- * The base class for all exceptions thrown by TestNG.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class TestNGException extends RuntimeException {
-
-  /* generated */
-  private static final long serialVersionUID = -422675971506425913L;
-
-  public TestNGException(Throwable t) {
-    super(t);
-  }
-
-  /**
-   * @param string
-   */
-  public TestNGException(String string) {
-    super("\n" + string);
-  }
-
-  public TestNGException(String string, Throwable t) {
-    super("\n" + string, t);
-  }
-}
diff --git a/src/org/testng/TestNGUtils.java b/src/org/testng/TestNGUtils.java
deleted file mode 100755
index 8e2b426..0000000
--- a/src/org/testng/TestNGUtils.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.testng;
-
-import org.testng.internal.ClonedMethod;
-
-import java.lang.reflect.Method;
-
-public class TestNGUtils {
-
-  /**
-   * Create an ITestNGMethod for @code{method} based on @code{existingMethod}, which needs
-   * to belong to the same class.
-   */
-  public static ITestNGMethod createITestNGMethod(ITestNGMethod existingMethod, Method method) {
-    return new ClonedMethod(existingMethod, method);
-  }
-}
diff --git a/src/org/testng/TestRunner.java b/src/org/testng/TestRunner.java
deleted file mode 100644
index a1d8bfb..0000000
--- a/src/org/testng/TestRunner.java
+++ /dev/null
@@ -1,1494 +0,0 @@
-package org.testng;
-
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.Attributes;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.ConfigurationGroupMethods;
-import org.testng.internal.Constants;
-import org.testng.internal.DynamicGraph;
-import org.testng.internal.IConfigurationListener;
-import org.testng.internal.IInvoker;
-import org.testng.internal.IMethodWorker;
-import org.testng.internal.ITestResultNotifier;
-import org.testng.internal.IWorkerFactory;
-import org.testng.internal.InvokedMethod;
-import org.testng.internal.Invoker;
-import org.testng.internal.MapList;
-import org.testng.internal.MethodHelper;
-import org.testng.internal.MethodInstance;
-import org.testng.internal.ResultMap;
-import org.testng.internal.RunInfo;
-import org.testng.internal.TestMethodWorker;
-import org.testng.internal.TestNGClassFinder;
-import org.testng.internal.TestNGMethodFinder;
-import org.testng.internal.Utils;
-import org.testng.internal.XmlMethodSelector;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.Sets;
-import org.testng.internal.thread.GroupThreadPoolExecutor;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.junit.IJUnitTestRunner;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlPackage;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
-
-/**
- * This class takes care of running one Test.
- *
- * @author Cedric Beust, Apr 26, 2004
- */
-public class TestRunner implements ITestContext, ITestResultNotifier, IWorkerFactory {
-  /* generated */
-  private static final long serialVersionUID = 4247820024988306670L;
-  private ISuite m_suite;
-  protected XmlTest m_xmlTest;
-  private String m_testName;
-
-  transient private List<XmlClass> m_testClassesFromXml= null;
-  transient private List<XmlPackage> m_packageNamesFromXml= null;
-
-  transient private IInvoker m_invoker= null;
-  transient private IAnnotationFinder m_annotationFinder= null;
-
-  /** ITestListeners support. */
-  transient private List<ITestListener> m_testListeners = Lists.newArrayList();
-  transient private List<IConfigurationListener> m_configurationListeners = Lists.newArrayList();
-
-  transient private IConfigurationListener m_confListener= new ConfigurationListener();
-  transient private boolean m_skipFailedInvocationCounts;
-  
-  /**
-   * All the test methods we found, associated with their respective classes.
-   * Note that these test methods might belong to different classes.
-   * We pick which ones to run at runtime.
-   */
-  private ITestNGMethod[] m_allTestMethods = new ITestNGMethod[0];
-
-  // Information about this test run
-
-  private Date m_startDate = null;
-  private Date m_endDate = null;
-
-  /** A map to keep track of Class <-> IClass. */
-  transient private Map<Class<?>, ITestClass> m_classMap = Maps.newHashMap();
-
-  /** Where the reports will be created. */
-  private String m_outputDirectory= Constants.getDefaultValueFor(Constants.PROP_OUTPUT_DIR);
-
-  // The XML method selector (groups/methods included/excluded in XML)
-  private XmlMethodSelector m_xmlMethodSelector = new XmlMethodSelector();
-
-  private static int m_verbose = 1;
-
-  //
-  // These next fields contain all the configuration methods found on this class.
-  // At initialization time, they just contain all the various @Configuration methods
-  // found in all the classes we are going to run.  When comes the time to run them,
-  // only a subset of them are run:  those that are enabled and belong on the same class as
-  // (or a parent of) the test class.
-  //
-  /** */
-  private ITestNGMethod[] m_beforeSuiteMethods = {};
-  private ITestNGMethod[] m_afterSuiteMethods = {};
-  private ITestNGMethod[] m_beforeXmlTestMethods = {};
-  private ITestNGMethod[] m_afterXmlTestMethods = {};
-  private List<ITestNGMethod> m_excludedMethods = Lists.newArrayList();
-  private ConfigurationGroupMethods m_groupMethods = null;
-
-  // Meta groups
-  private Map<String, List<String>> m_metaGroups = Maps.newHashMap();
-
-  // All the tests that were run along with their result
-  private IResultMap m_passedTests = new ResultMap();
-  private IResultMap m_failedTests = new ResultMap();
-  private IResultMap m_failedButWithinSuccessPercentageTests = new ResultMap();
-  private IResultMap m_skippedTests = new ResultMap();
-
-  private RunInfo m_runInfo= new RunInfo();
-  
-  // The host where this test was run, or null if run locally
-  private String m_host;
-
-  private IMethodInterceptor m_methodInterceptor = new IMethodInterceptor() {
-
-    public List<IMethodInstance> intercept(List<IMethodInstance> methods,
-        ITestContext context)  {
-      return groupMethodsByInstance(methods);
-  //    Collections.sort(methods, MethodInstance.SORT_BY_CLASS);
-  //    return methods;
-    }
-  
-    private List<IMethodInstance> groupMethodsByInstance(List<IMethodInstance> methods) {
-      List<Object> instanceList = Lists.newArrayList();
-      Map<Object, List<IMethodInstance>> map = Maps.newHashMap();
-      for (IMethodInstance mi : methods) {
-        Object[] methodInstances = mi.getInstances();
-        for (Object instance : methodInstances) {
-          if (!instanceList.contains(instance)) instanceList.add(instance);
-          List<IMethodInstance> l = map.get(instance);
-          if (l == null) {
-            l = Lists.newArrayList();
-            map.put(instance, l);
-          }
-          l.add(mi);
-        }
-      }
-  
-      List<IMethodInstance> result = Lists.newArrayList();
-      for (Object instance : instanceList) {
-        result.addAll(map.get(instance));
-      }
-  
-      return result;
-    }
-    
-  }; // new IMethodInterceptor
-
-  private ClassMethodMap m_classMethodMap;
-
-  public TestRunner(ISuite suite,
-                    XmlTest test,
-                    String outputDirectory,
-                    IAnnotationFinder finder,
-                    boolean skipFailedInvocationCounts,
-                    List<IInvokedMethodListener> invokedMethodListeners) 
-  {
-    init(suite, test, outputDirectory, finder, skipFailedInvocationCounts,
-        invokedMethodListeners);
-  }
-
-  public TestRunner(ISuite suite, XmlTest test, 
-    IAnnotationFinder finder, boolean skipFailedInvocationCounts) 
-  {
-    init(suite, test, suite.getOutputDirectory(), finder, skipFailedInvocationCounts,
-        null);
-  }
-
-  public TestRunner(ISuite suite, XmlTest test, boolean skipFailedInvocationCounts,
-      List<IInvokedMethodListener> listeners) {
-    init(suite, test, suite.getOutputDirectory(), 
-        suite.getAnnotationFinder(test.getAnnotations()),
-        skipFailedInvocationCounts, listeners);
-  }
-
-  private void init(ISuite suite,
-                    XmlTest test,
-                    String outputDirectory,
-                    IAnnotationFinder annotationFinder,
-                    boolean skipFailedInvocationCounts,
-                    List<IInvokedMethodListener> invokedMethodListeners)
-  {
-    m_xmlTest= test;
-    m_suite = suite;
-    m_testName = test.getName();
-    m_host = suite.getHost();
-    m_testClassesFromXml= test.getXmlClasses();
-    m_skipFailedInvocationCounts = skipFailedInvocationCounts;
-    setVerbose(test.getVerbose());
-    
-    m_packageNamesFromXml= test.getXmlPackages();    
-    if(null != m_packageNamesFromXml) {
-      for(XmlPackage xp: m_packageNamesFromXml) {
-        m_testClassesFromXml.addAll(xp.getXmlClasses());
-      }
-    }
-
-    m_annotationFinder= annotationFinder;
-    m_invoker = new Invoker(this, this, m_suite.getSuiteState(), m_annotationFinder,
-        m_skipFailedInvocationCounts, invokedMethodListeners);
-
-    if (suite.getParallel() != null) {
-      log(3, "Running the tests in '" + test.getName() + "' with parallel mode:" + suite.getParallel());
-    } 
-
-    setOutputDirectory(outputDirectory);
-
-    // Finish our initialization
-    init();
-  }
-
-  public IInvoker getInvoker() {
-    return m_invoker;
-  }
-
-  public ITestNGMethod[] getBeforeSuiteMethods() {
-    return m_beforeSuiteMethods;
-  }
-
-  public ITestNGMethod[] getAfterSuiteMethods() {
-    return m_afterSuiteMethods;
-  }
-
-  public ITestNGMethod[] getBeforeTestConfigurationMethods() {
-    return m_beforeXmlTestMethods;
-  }
-
-  public ITestNGMethod[] getAfterTestConfigurationMethods() {
-    return m_afterXmlTestMethods;
-  }
-
-  private void init() {
-    initMetaGroups(m_xmlTest);
-    initRunInfo(m_xmlTest);
-
-    // Init methods and class map
-    // JUnit behavior is different and doesn't need this initialization step
-    if(!m_xmlTest.isJUnit()) {
-      initMethods();
-    }
-
-    addConfigurationListener(m_confListener);
-  }
-
-  /**
-   * Initialize meta groups
-   */
-  private void initMetaGroups(XmlTest xmlTest) {
-    Map<String, List<String>> metaGroups = xmlTest.getMetaGroups();
-
-    for (String name : metaGroups.keySet()) {
-      addMetaGroup(name, metaGroups.get(name));
-    }
-  }
-
-  private void initRunInfo(final XmlTest xmlTest) {
-    // Groups
-    m_xmlMethodSelector.setIncludedGroups(createGroups(m_xmlTest.getIncludedGroups()));
-    m_xmlMethodSelector.setExcludedGroups(createGroups(m_xmlTest.getExcludedGroups()));
-    m_xmlMethodSelector.setExpression(m_xmlTest.getExpression());
-
-    // Methods
-    m_xmlMethodSelector.setXmlClasses(m_xmlTest.getXmlClasses());
-    
-    m_runInfo.addMethodSelector(m_xmlMethodSelector, 10);
-    
-    // Add user-specified method selectors (only class selectors, we can ignore
-    // script selectors here)
-    if (null != xmlTest.getMethodSelectors()) {
-      for (org.testng.xml.XmlMethodSelector selector : xmlTest.getMethodSelectors()) {
-        if (selector.getClassName() != null) {
-          IMethodSelector s = ClassHelper.createSelector(selector);
-          
-          m_runInfo.addMethodSelector(s, selector.getPriority());
-        }
-      }
-    }
-  }
-
-  private void initMethods() {
-
-    //
-    // Calculate all the methods we need to invoke
-    //
-    List<ITestNGMethod> beforeClassMethods = Lists.newArrayList();
-    List<ITestNGMethod> testMethods = Lists.newArrayList();
-    List<ITestNGMethod> afterClassMethods = Lists.newArrayList();
-    List<ITestNGMethod> beforeSuiteMethods = Lists.newArrayList();
-    List<ITestNGMethod> afterSuiteMethods = Lists.newArrayList();
-    List<ITestNGMethod> beforeXmlTestMethods = Lists.newArrayList();
-    List<ITestNGMethod> afterXmlTestMethods = Lists.newArrayList();
-
-    ITestClassFinder testClassFinder= new TestNGClassFinder(Utils.xmlClassesToClasses(m_testClassesFromXml),
-                                             null,
-                                             m_xmlTest,
-                                             m_annotationFinder,
-                                             this);
-    ITestMethodFinder testMethodFinder
-      = new TestNGMethodFinder<ITestNGMethod>(m_runInfo, m_annotationFinder);
-    
-    m_runInfo.setTestMethods(testMethods);
-    
-    //
-    // Initialize TestClasses
-    //
-    IClass[] classes = testClassFinder.findTestClasses();
-    
-    for (IClass ic : classes) {
-
-      // Create TestClass
-      ITestClass tc = new TestClass(ic,
-                                   m_testName,
-                                   testMethodFinder,
-                                   m_annotationFinder,
-                                   m_runInfo,
-                                   m_xmlTest);
-      m_classMap.put(ic.getRealClass(), tc);
-    }
-    
-    //
-    // Calculate groups methods
-    //
-    Map<String, List<ITestNGMethod>> beforeGroupMethods= MethodHelper.findGroupsMethods(m_classMap.values(), true);
-    Map<String, List<ITestNGMethod>> afterGroupMethods= MethodHelper.findGroupsMethods(m_classMap.values(), false);
-
-    //
-    // Walk through all the TestClasses, store their method
-    // and initialize them with the correct ITestClass
-    //
-    for (ITestClass tc : m_classMap.values()) {
-      fixMethodsWithClass(tc.getTestMethods(), tc, testMethods);
-      fixMethodsWithClass(tc.getBeforeClassMethods(), tc, beforeClassMethods);
-      fixMethodsWithClass(tc.getBeforeTestMethods(), tc, null);
-      fixMethodsWithClass(tc.getAfterTestMethods(), tc, null);
-      fixMethodsWithClass(tc.getAfterClassMethods(), tc, afterClassMethods);
-      fixMethodsWithClass(tc.getBeforeSuiteMethods(), tc, beforeSuiteMethods);
-      fixMethodsWithClass(tc.getAfterSuiteMethods(), tc, afterSuiteMethods);
-      fixMethodsWithClass(tc.getBeforeTestConfigurationMethods(), tc, beforeXmlTestMethods);
-      fixMethodsWithClass(tc.getAfterTestConfigurationMethods(), tc, afterXmlTestMethods);
-      fixMethodsWithClass(tc.getBeforeGroupsMethods(), tc, 
-          MethodHelper.uniqueMethodList(beforeGroupMethods.values()));
-      fixMethodsWithClass(tc.getAfterGroupsMethods(), tc, 
-          MethodHelper.uniqueMethodList(afterGroupMethods.values()));
-    }
-
-    //
-    // Sort the methods
-    //
-    m_beforeSuiteMethods = MethodHelper.collectAndOrderConfigurationMethods(beforeSuiteMethods,
-                                                              m_runInfo,
-                                                              m_annotationFinder,
-                                                              true /* unique */,
-                                                              m_excludedMethods);
-
-    m_beforeXmlTestMethods = MethodHelper.collectAndOrderConfigurationMethods(beforeXmlTestMethods,
-                                                                m_runInfo,
-                                                                m_annotationFinder,
-                                                                true, // CQ added by me
-                                                                m_excludedMethods);
-
-    m_allTestMethods = MethodHelper.collectAndOrderMethods(testMethods,
-                                                          m_runInfo,
-                                                          m_annotationFinder,
-                                                          m_excludedMethods);
-    m_classMethodMap = new ClassMethodMap(m_allTestMethods);
-
-    m_afterXmlTestMethods = MethodHelper.collectAndOrderConfigurationMethods(afterXmlTestMethods,
-                                                               m_runInfo,
-                                                               m_annotationFinder,
-                                                               true, // CQ added by me
-                                                               m_excludedMethods);
-
-    m_afterSuiteMethods = MethodHelper.collectAndOrderConfigurationMethods(afterSuiteMethods,
-                                                             m_runInfo,
-                                                             m_annotationFinder,
-                                                             true /* unique */,
-                                                             m_excludedMethods);
-    // shared group methods
-    m_groupMethods = new ConfigurationGroupMethods(m_allTestMethods, beforeGroupMethods, afterGroupMethods);
-
-
-  }
-
-  private void fixMethodsWithClass(ITestNGMethod[] methods,
-                                   ITestClass testCls,
-                                   List<ITestNGMethod> methodList) {
-    for (ITestNGMethod itm : methods) {
-      itm.setTestClass(testCls);
-
-      if (methodList != null) {
-        methodList.add(itm);
-      }
-    }
-  }
-
-  public Collection<ITestClass> getTestClasses() {
-    return m_classMap.values();
-  }
-
-  public void setTestName(String name) {
-    m_testName = name;
-  }
-
-  public void setOutputDirectory(String od) {
-    m_outputDirectory= od;
-//  FIX: empty directories were created
-//    if (od == null) { m_outputDirectory = null; return; } //for maven2
-//    File file = new File(od);
-//    file.mkdirs();
-//    m_outputDirectory= file.getAbsolutePath();
-  }
-
-  private void addMetaGroup(String name, List<String> groupNames) {
-    m_metaGroups.put(name, groupNames);
-  }
-
-  /**
-   * Calculate the transitive closure of all the MetaGroups
-   *
-   * @param groups
-   * @param unfinishedGroups
-   * @param result           The transitive closure containing all the groups found
-   */
-  private void collectGroups(String[] groups,
-                             List<String> unfinishedGroups,
-                             Map<String, String> result) {
-    for (String gn : groups) {
-      List<String> subGroups = m_metaGroups.get(gn);
-      if (null != subGroups) {
-
-        for (String sg : subGroups) {
-          if (null == result.get(sg)) {
-            result.put(sg, sg);
-            unfinishedGroups.add(sg);
-          }
-        }
-      }
-    }
-  }
-
-  private Map<String, String> createGroups(List<String> groups) {
-    return createGroups((String[]) groups.toArray(new String[groups.size()]));
-  }
-
-  private Map<String, String> createGroups(String[] groups) {
-    Map<String, String> result = Maps.newHashMap();
-
-    // Groups that were passed on the command line
-    for (String group : groups) {
-      result.put(group, group);
-    }
-
-    // See if we have any MetaGroups and
-    // expand them if they match one of the groups
-    // we have just been passed
-    List<String> unfinishedGroups = Lists.newArrayList();
-
-    if (m_metaGroups.size() > 0) {
-      collectGroups(groups, unfinishedGroups, result);
-
-      // Do we need to loop over unfinished groups?
-      while (unfinishedGroups.size() > 0) {
-        String[] uGroups = (String[]) unfinishedGroups.toArray(new String[unfinishedGroups.size()]);
-        unfinishedGroups = Lists.newArrayList();
-        collectGroups(uGroups, unfinishedGroups, result);
-      }
-    }
-
-    //    Utils.dumpMap(result);
-    return result;
-  }
-
-  /**
-   * The main entry method for TestRunner.
-   *
-   * This is where all the hard work is done:
-   * - Invoke configuration methods
-   * - Invoke test methods
-   * - Catch exceptions
-   * - Collect results
-   * - Invoke listeners
-   * - etc...
-   */
-  public void run() {
-    beforeRun();
-
-    try {
-      XmlTest test= getTest();
-      if(test.isJUnit()) {
-        privateRunJUnit(test);
-      }
-      else {
-        privateRun(test);
-      }
-    }
-    finally {
-      afterRun();
-    }
-  }
-
-  /** Before run preparements. */
-  private void beforeRun() {
-    //
-    // Log the start date
-    //
-    m_startDate = new Date(System.currentTimeMillis());
-
-    // Log start
-    logStart();
-
-    // Invoke listeners
-    fireEvent(true /*start*/);
-    
-    // invoke @BeforeTest
-    ITestNGMethod[] testConfigurationMethods= getBeforeTestConfigurationMethods();
-    if(null != testConfigurationMethods && testConfigurationMethods.length > 0) {
-      m_invoker.invokeConfigurations(null,
-                                     testConfigurationMethods,
-                                     m_xmlTest.getSuite(), 
-                                     m_xmlTest.getParameters(),
-                                     null, /* no parameter values */
-                                     null /* instance */);
-    }
-  }
-
-  private void privateRunJUnit(XmlTest xmlTest) {
-    final Class<?>[] classes= Utils.xmlClassesToClasses(m_testClassesFromXml);
-    final List<ITestNGMethod> runMethods= Lists.newArrayList();
-    List<IMethodWorker> workers= Lists.newArrayList();
-    // FIXME: directly referincing JUnitTestRunner which uses JUnit classes
-    // may result in an class resolution exception under different JVMs
-    // The resolution process is not specified in the JVM spec with a specific implementation,
-    // so it can be eager => failure
-    workers.add(new IMethodWorker() {
-      /**
-       * @see org.testng.internal.IMethodWorker#getMaxTimeOut()
-       */
-      public long getMaxTimeOut() {
-        return 0;
-      }
-
-      public List<ITestResult> getTestResults() {
-        return null;
-      }
-
-      /**
-       * @see java.lang.Runnable#run()
-       */
-      public void run() {    
-        for(Class<?> tc: classes) {
-          IJUnitTestRunner tr= ClassHelper.createTestRunner(TestRunner.this);
-          try {
-            tr.run(tc);
-          }
-          catch(Exception ex) {
-            ex.printStackTrace();
-          }
-          finally {
-            runMethods.addAll(tr.getTestMethods());
-          }
-        }
-      }
-
-      public List<ITestNGMethod> getMethods() {
-        throw new TestNGException("JUnit not supported");
-      }
-
-      public int getPriority() {
-        if (m_allTestMethods.length == 1) return m_allTestMethods[0].getPriority();
-        else return 0;
-      }
-
-      public int compareTo(IMethodWorker other) {
-        return getPriority() - other.getPriority();
-      }
-    });
-
-    runWorkers(workers, "" /* JUnit does not support parallel */, null);
-    m_allTestMethods= runMethods.toArray(new ITestNGMethod[runMethods.size()]);
-  }
-  
-  public void privateRun(XmlTest xmlTest) {
-    //
-    // Calculate the lists of tests that can be run in sequence and in parallel
-    //
-    List<List<ITestNGMethod>> sequentialList= Lists.newArrayList();
-    List<ITestNGMethod> parallelList= Lists.newArrayList();
-    MapList<Integer, ITestNGMethod> sequentialMapList = new MapList<Integer, ITestNGMethod>();
-
-    String parallelMode = xmlTest.getParallel();
-    boolean parallel = XmlSuite.PARALLEL_METHODS.equals(parallelMode) 
-        || "true".equalsIgnoreCase(parallelMode)
-        || XmlSuite.PARALLEL_CLASSES.equals(parallelMode); 
-
-    // false for new stuff
-//    if (true) {
-    if (!parallel) {
-      computeTestLists(sequentialList, parallelList, sequentialMapList);
-      
-      log(3, "Found " + (sequentialList.size() + parallelList.size()) + " applicable methods");
-      
-      //
-      // Create the workers
-      //
-      List<TestMethodWorker> workers = Lists.newArrayList();
-  
-      createSequentialWorkers(sequentialList, xmlTest.getParameters(), m_classMethodMap, workers);
-      MapList<Integer, TestMethodWorker> ml =
-          createSequentialWorkers(sequentialMapList, xmlTest.getParameters(), m_classMethodMap);
-  
-      // All the parallel tests are placed in a separate worker, so they can be
-      // invoked in parallel
-      createParallelWorkers(parallelList, xmlTest, m_classMethodMap, workers);
-
-//      m_testPlan =
-//        new TestPlan(sequentialList, parallelList, cmm,
-//          getBeforeSuiteMethods(), getAfterSuiteMethods(),
-//          m_groupMethods, xmlTest);
-  
-      try {
-        runWorkers(workers, xmlTest.getParallel(), ml);
-      }
-      finally {
-        m_classMethodMap.clear();
-      }
-    }
-    else {
-      int threadCount = xmlTest.getThreadCount();
-      DynamicGraph<ITestNGMethod> graph = computeAlternateTestList(m_allTestMethods);
-      GroupThreadPoolExecutor executor = new GroupThreadPoolExecutor(this, xmlTest,
-          threadCount, threadCount, 0, TimeUnit.MILLISECONDS,
-          new LinkedBlockingQueue<Runnable>(), graph);
-      executor.run();
-      try {
-        executor.awaitTermination(10000, TimeUnit.SECONDS);
-        executor.shutdownNow();
-      } catch (InterruptedException e) {
-        e.printStackTrace();
-      }
-    }
-  }
-
-  /**
-   * Create a list of workers to run the methods passed in parameter.
-   * Each test method is run in its own worker except in the following cases:
-   * - The method belongs to a class that has @Test(sequential=true)
-   * - The parallel attribute is set to "classes"
-   * In both these cases, all the methods belonging to that class will then
-   * be put in the same worker in order to run in the same thread.
-   */
-  public List<IMethodWorker> createWorkers(XmlTest xmlTest, Set<ITestNGMethod> methods) {
-    List<IMethodWorker> result = Lists.newArrayList();
-
-    // Methods that belong to classes with a sequential=true or parallel=classes
-    // attribute must all be run in the same worker
-    Set<Class> sequentialClasses = Sets.newHashSet();
-    for (ITestNGMethod m : methods) {
-      Class<? extends ITestClass> cls = m.getRealClass();
-      org.testng.annotations.ITestAnnotation test = 
-        (org.testng.annotations.ITestAnnotation) m_annotationFinder.
-          findAnnotation(cls,
-              org.testng.annotations.ITestAnnotation.class);
-
-      // If either sequential=true or parallel=classes, mark this class sequential
-      if (test != null && test.getSequential() ||
-          XmlSuite.PARALLEL_CLASSES.equals(xmlTest.getParallel())) {
-        sequentialClasses.add(cls);
-      }
-    }
-
-    List<IMethodInstance> methodInstances = Lists.newArrayList();
-    for (ITestNGMethod tm : methods) {
-      methodInstances.addAll(methodsToMultipleMethodInstances(tm));
-    }
-
-    //
-    // Finally, sort the parallel methods by classes
-    //
-    methodInstances = m_methodInterceptor.intercept(methodInstances, this);
-    Map<String, String> params = xmlTest.getParameters();
-//    ClassMethodMap cmm = new ClassMethodMap(m_allTestMethods);
-    Map<Class, Set<IMethodInstance>> list = groupMethodInstancesByClass(methodInstances);
-
-    if (false) {
-      for (Class c : list.keySet()) {
-        Set<IMethodInstance> s = list.get(c);
-        // If the current class is marked sequential, we want to run all its method
-        // in one TestMethodWorker to guarantee a sequential order. Otherwise, we
-        // create one worker per method
-        if (sequentialClasses.contains(c)) {
-          // Sequential class: all methods in one worker
-          TestMethodWorker worker = new TestMethodWorker(m_invoker,
-              s.toArray(new IMethodInstance[s.size()]),
-              m_xmlTest.getSuite(),
-              params,
-              m_allTestMethods,
-              m_groupMethods,
-              m_classMethodMap,
-              this);
-          result.add(worker);
-        }
-        else {
-          // Parallel class: each method in its own worker
-          for (IMethodInstance imi : s) {
-            TestMethodWorker worker = new TestMethodWorker(m_invoker,
-                new IMethodInstance[] { imi },
-                m_xmlTest.getSuite(),
-                params,
-                m_allTestMethods,
-                m_groupMethods,
-                m_classMethodMap,
-                this);
-            result.add(worker);
-          }
-        }
-      }
-    } else {
-      Set<Class<?>> processedClasses = Sets.newHashSet();
-      for (IMethodInstance im : methodInstances) {
-        Class<?> c = im.getMethod().getTestClass().getRealClass();
-        if (sequentialClasses.contains(c)) {
-          if (!processedClasses.contains(c)) {
-            processedClasses.add(c);
-            // Sequential class: all methods in one worker
-            TestMethodWorker worker = new TestMethodWorker(m_invoker,
-                findClasses(methodInstances, c),
-                m_xmlTest.getSuite(),
-                params,
-                m_allTestMethods,
-                m_groupMethods,
-                m_classMethodMap,
-                this);
-            result.add(worker);
-          }
-        }
-        else {
-          // Parallel class: each method in its own worker
-            TestMethodWorker worker = new TestMethodWorker(m_invoker,
-                new IMethodInstance[] { im },
-                m_xmlTest.getSuite(),
-                params,
-                m_allTestMethods,
-                m_groupMethods,
-                m_classMethodMap,
-                this);
-            result.add(worker);
-          }      
-        }
-    }
-
-    Collections.sort(result);
-    return result;
-  }
-
-  private IMethodInstance[] findClasses(List<IMethodInstance> methodInstances, Class<?> c) {
-    List<IMethodInstance> result = Lists.newArrayList();
-    for (IMethodInstance mi : methodInstances) {
-      if (mi.getMethod().getTestClass().getRealClass() == c) {
-        result.add(mi);
-      }
-    }
-    return result.toArray(new IMethodInstance[result.size()]);
-  }
-
-  private void createParallelWorkers(List<ITestNGMethod> parallel, 
-      XmlTest xmlTest, ClassMethodMap cmm, List<TestMethodWorker> workers) {
-
-    if(parallel.isEmpty()) return;
-    
-    List<IMethodInstance> methodInstances = Lists.newArrayList();
-    for (ITestNGMethod tm : parallel) {
-      methodInstances.addAll(methodsToMultipleMethodInstances(tm));
-    }
-    
-    //
-    // Finally, sort the parallel methods by classes
-    //
-    methodInstances = m_methodInterceptor.intercept(methodInstances, this);
-
-    if (getVerbose() >= 2) {
-      log(3, "WILL BE RUN IN RANDOM ORDER:");
-      for (IMethodInstance mi : methodInstances) {
-        log(3, "  " + mi.getMethod());
-        log(3, "      on instances");
-        for(Object o: mi.getInstances()) {
-          log(3, "     " + o);
-        }
-      }
-      log(3, "===");
-    }
-
-    Map<String, String> params = xmlTest.getParameters();
-    // This should no longer happen when we are running the new 5.11 implementation but keeping
-    // it until I'm sure the new implementation is working fine.
-    // @deprecated
-    if (XmlSuite.PARALLEL_CLASSES.equals(xmlTest.getParallel())) {
-      Map<Class, Set<IMethodInstance>> list = groupMethodInstancesByClass(methodInstances);
-      for (Set<IMethodInstance> s : list.values()) {
-          workers.add(new TestMethodWorker(m_invoker,
-              s.toArray(new IMethodInstance[s.size()]),
-              m_xmlTest.getSuite(),
-              params,
-              m_allTestMethods,
-              m_groupMethods,
-              cmm,
-              this));          
-      }
-    }
-    else {
-      for (IMethodInstance mi : methodInstances) {
-        workers.add(new TestMethodWorker(m_invoker,
-                                         new IMethodInstance[] { mi },
-                                         m_xmlTest.getSuite(),
-                                         params,
-                                         m_allTestMethods,
-                                         m_groupMethods,
-                                         cmm,
-                                         this));
-        }
-    }
-
-  }
-
-  /**
-   * @return a Set of arrays of IMethodInstances. Each element in the array is a method that belongs
-   * to the same class.
-   */
-  private Map<Class, Set<IMethodInstance>> groupMethodInstancesByClass(List<IMethodInstance> instances) {
-      Map<Class, Set<IMethodInstance>> result = Maps.newHashMap();
-      for (IMethodInstance mi : instances) {
-          Class cl = mi.getMethod().getTestClass().getRealClass();
-          Set<IMethodInstance> methods = result.get(cl);
-          if (methods == null) {
-              methods = new HashSet<IMethodInstance>();
-              result.put(cl, methods);
-          }
-          methods.add(mi);
-      }
-
-      return result;
-  }
-  
-  private void createSequentialWorkers(List<List<ITestNGMethod>> sequentialList, 
-      Map<String, String> params, ClassMethodMap cmm, List<TestMethodWorker> workers) {
-    if(sequentialList.isEmpty()) return;
-    
-    // All the sequential tests are place in one worker, guaranteeing they
-    // will be invoked sequentially
-    for (List<ITestNGMethod> sl : sequentialList) {        
-      workers.add(new TestMethodWorker(m_invoker,
-                                       methodsToMethodInstances(sl),
-                                       m_xmlTest.getSuite(),
-                                       params,
-                                       m_allTestMethods,
-                                       m_groupMethods,
-                                       cmm,
-                                       this));
-    }
-    if (getVerbose() >= 2) {
-      log(3, "WILL BE RUN SEQUENTIALLY:");
-      for (List<ITestNGMethod> l : sequentialList) {
-        for (ITestNGMethod tm : l) {
-          log(3, "  " + tm);
-        }
-        log(3, "====");
-      }
-      
-      log(3, "===");
-    }
-  }
-
-  private MapList<Integer, TestMethodWorker> createSequentialWorkers(MapList<Integer,
-      ITestNGMethod> mapList, Map<String, String> params, ClassMethodMap cmm) { 
-
-    MapList<Integer, TestMethodWorker> result = new MapList<Integer, TestMethodWorker>();
-    // All the sequential tests are place in one worker, guaranteeing they
-    // will be invoked sequentially
-    for (Integer i : mapList.getKeys()) {
-      result.put(i,
-          new TestMethodWorker(m_invoker, methodsToMethodInstances(mapList.get(i)),
-          m_xmlTest.getSuite(), params, m_allTestMethods, m_groupMethods, cmm, this));
-    }
-
-    if (getVerbose() >= 2) {
-      log(3, "WILL BE RUN SEQUENTIALLY:" + result);
-    }
-
-    return result;
-  }
-
-  private List<MethodInstance> methodsToMultipleMethodInstances(ITestNGMethod... sl) {
-    List<MethodInstance> vResult = Lists.newArrayList();
-    for (ITestNGMethod m : sl) {
-      Object[] instances = m.getTestClass().getInstances(true);
-      for (Object instance : instances) {
-        vResult.add(new MethodInstance(m, new Object[] { instance }));
-      }
-    }
-    
-    return vResult;
-  }
-
-  private MethodInstance[] methodsToMethodInstances(List<ITestNGMethod> sl) {
-    MethodInstance[] result = new MethodInstance[sl.size()];
-    for (int i = 0; i < result.length; i++) {
-      result[i] = new MethodInstance(sl.get(i), sl.get(i).getTestClass().getInstances(true));
-    }
-    
-    return result;
-  }
-
-  //
-  // Invoke the workers
-  //
-  private void runWorkers(List<? extends IMethodWorker> workers, String parallelMode,
-      MapList<Integer, TestMethodWorker> sequentialWorkers) {
-    if (XmlSuite.PARALLEL_METHODS.equals(parallelMode) 
-        || "true".equalsIgnoreCase(parallelMode)
-        || XmlSuite.PARALLEL_CLASSES.equals(parallelMode)) 
-    {
-      //
-      // Parallel run
-      //
-      // Default timeout for individual methods:  10 seconds
-      long maxTimeOut = m_xmlTest.getTimeOut(10 * 1000);
-      for (IMethodWorker tmw : workers) {
-        long mt= tmw.getMaxTimeOut();
-        if (mt > maxTimeOut) {
-          maxTimeOut= mt;
-        }
-      }
-
-      ThreadUtil.execute(workers, m_xmlTest.getThreadCount(), maxTimeOut, false);
-//      ThreadUtil.execute(sequentialWorkers);
-    }
-    else {
-      //
-      // Sequential run
-      //
-      for (IMethodWorker tmw : workers) {
-        tmw.run();
-      }
-    }
-  }
-  
-  private void afterRun() {
-    // invoke @AfterTest
-    ITestNGMethod[] testConfigurationMethods= getAfterTestConfigurationMethods();
-    if(null != testConfigurationMethods && testConfigurationMethods.length > 0) {
-      m_invoker.invokeConfigurations(null,
-                                     testConfigurationMethods,
-                                     m_xmlTest.getSuite(), 
-                                     m_xmlTest.getParameters(),
-                                     null, /* no parameter values */
-                                     null /* instance */);
-    }
-
-    //
-    // Log the end date
-    //
-    m_endDate = new Date(System.currentTimeMillis());
-    
-    if (getVerbose() >= 3) {
-      dumpInvokedMethods();
-    }
-
-    // Invoke listeners
-    fireEvent(false /*stop*/);
-
-    // Statistics
-//    logResults();
-  }
-  
-  /**
-   * @param regexps
-   * @param group
-   * @return true if the map contains at least one regexp that matches the 
-   * given group
-   */
-  private boolean containsString(Map<String, String> regexps, String group) {
-    for (String regexp : regexps.values()) {
-      boolean match = Pattern.matches(regexp, group);
-      if (match) {
-        return true;
-      }
-    }
-    
-    return false;
-  }
-
-  private DynamicGraph<ITestNGMethod> computeAlternateTestList(ITestNGMethod[] methods) {
-    DynamicGraph<ITestNGMethod> result = new DynamicGraph<ITestNGMethod>();
-    Map<String, ITestNGMethod> map = Maps.newHashMap();
-    MapList<String, ITestNGMethod> groups = new MapList<String, ITestNGMethod>();
-
-    for (ITestNGMethod m : methods) {
-      map.put(m.getTestClass().getName() + "." + m.getMethodName(), m);
-      for (String g : m.getGroups()) {
-        groups.put(g, m);
-      }
-    }
-    
-    for (ITestNGMethod m : methods) {
-      result.addNode(m);
-      
-      // Dependent methods
-      {
-        String[] dependentMethods = m.getMethodsDependedUpon();
-        if (dependentMethods != null) {
-          for (String d : dependentMethods) {
-            ITestNGMethod dm = map.get(d);
-            if (dm == null) {
-              throw new TestNGException("Method \"" + m
-                  + "\" depends on nonexistent method \"" + d + "\""); 
-            }
-            result.addEdge(m, dm);
-          }
-        }
-      }
-
-      // Dependent groups
-      {
-        String[] dependentGroups = m.getGroupsDependedUpon();
-        for (String d : dependentGroups) {
-          List<ITestNGMethod> dg = groups.get(d);
-          if (dg == null) {
-            throw new TestNGException("Method \"" + m
-                + "\" depends on nonexistent group \"" + d + "\""); 
-          }
-          for (ITestNGMethod ddm : dg) {
-            result.addEdge(m, ddm);
-          }
-        }
-      }
-    }
-
-    return result;
-  }
-
-  /**
-   * Creates the
-   * @param sl the sequential list of methods
-   * @param parallelList the list of methods that can be run in parallel
-   */
-  private void computeTestLists(List<List<ITestNGMethod>> sl,
-      List<ITestNGMethod> parallelList, MapList<Integer, ITestNGMethod> outSequentialList) {
-
-    Map<String, String> groupsDependedUpon = Maps.newHashMap();
-    Map<String, String> methodsDependedUpon = Maps.newHashMap();
-    
-    Map<String, List<ITestNGMethod>> sequentialAttributeList = Maps.newHashMap();
-    List<ITestNGMethod> sequentialList = Lists.newArrayList();
-
-    for (int i= m_allTestMethods.length - 1; i >= 0; i--) {
-      ITestNGMethod tm= m_allTestMethods[i];
-      
-      //
-      // If the class this method belongs to has @Test(sequential = true), we
-      // put this method in the sequential list right away
-      //
-      Class<?> cls= tm.getRealClass();
-      org.testng.annotations.ITestAnnotation test = 
-        (org.testng.annotations.ITestAnnotation) m_annotationFinder.
-          findAnnotation(cls, org.testng.annotations.ITestAnnotation.class);
-      if (test != null) {
-        if (test.getSequential()) {
-          String className = tm.getTestClass().getName();
-          List<ITestNGMethod> list = sequentialAttributeList.get(className);
-          if (list == null) {
-            list = Lists.newArrayList();
-            sequentialAttributeList.put(className, list);
-          }
-          list.add(0, tm);
-          continue;
-        }
-      }
-      
-      //
-      // Otherwise, determine if it depends on other methods/groups or if
-      // it is depended upon
-      //
-      String[] currentGroups = tm.getGroups();
-      String[] currentGroupsDependedUpon= tm.getGroupsDependedUpon();
-      String[] currentMethodsDependedUpon= tm.getMethodsDependedUpon();
-
-      String thisMethodName = tm.getMethod().getDeclaringClass().getName() 
-        + "." + tm.getMethod().getName();
-      if (currentGroupsDependedUpon.length > 0) {
-        for (String gdu : currentGroupsDependedUpon) {
-          groupsDependedUpon.put(gdu, gdu);
-        }
-
-        sequentialList.add(0, tm);
-      }
-      else if (currentMethodsDependedUpon.length > 0) {
-        for (String cmu : currentMethodsDependedUpon) {
-          methodsDependedUpon.put(cmu, cmu);
-        }
-        sequentialList.add(0, tm);
-      }
-      // Is there a method that depends on the current method?
-      else if (containsString(methodsDependedUpon, thisMethodName)) {
-        int index = 0;
-        for (int j = 0; j < sequentialList.size(); j++) {
-          ITestNGMethod m = sequentialList.get(j);
-          if (arrayContains(m.getMethodsDependedUpon(), thisMethodName)) {
-            index = j;
-            break;
-          }
-        }
-        // Insert the dependee as close to its dependent as possible (TESTNG-317)
-        sequentialList.add(index, tm);
-      }
-      else if (currentGroups.length > 0) {
-        boolean isSequential= false;
-
-        for (String group : currentGroups) {
-          if (containsString(groupsDependedUpon, group)) {
-            sequentialList.add(0, tm);
-            isSequential = true;
-
-            break;
-          }
-        }
-        if (!isSequential) {
-          parallelList.add(0, tm);
-        }
-      }
-      else {
-        parallelList.add(0, tm);
-      }
-    }
-    
-    //
-    // Put all the sequential methods in the output argument
-    //
-    if(sequentialList.size() > 0) {
-      sl.add(sequentialList);
-    }
-
-    String previousGroup = "";
-    int index = 0;
-    for (ITestNGMethod m : sequentialList) {
-      String[] g = m.getGroupsDependedUpon();
-      if (g.length > 0 && !m.getGroupsDependedUpon()[0].equals(previousGroup)) {
-        index++;
-        previousGroup = m.getGroupsDependedUpon()[0];
-      }
-      outSequentialList.put(index, m);
-    }
-//    System.out.println("Map list:" + mapList);
-
-    sl.addAll(sequentialAttributeList.values());
-  }
-
-  private boolean arrayContains(String[] array, String element) {
-    for (String a : array) {
-      if (element.equals(a)) return true;
-    }
-    return false;
-  }
-
-  /**
-   * Logs the beginning of the {@link #beforeRun()} .
-   */
-  private void logStart() {
-    log(3,
-        "Running test " + m_testName + " on " + m_classMap.size() + " " + " classes, "
-        + " included groups:[" + mapToString(m_xmlMethodSelector.getIncludedGroups())
-        + "] excluded groups:[" + mapToString(m_xmlMethodSelector.getExcludedGroups()) + "]");
-
-    if (getVerbose() >= 3) {
-      for (ITestClass tc : m_classMap.values()) {
-        ((TestClass) tc).dump();
-      }
-    }
-  }
-
-  /**
-   * Trigger the start/finish event.
-   *
-   * @param isStart <tt>true</tt> if the event is for start, <tt>false</tt> if the
-   *                event is for finish
-   */
-  private void fireEvent(boolean isStart) {
-    for (ITestListener itl : m_testListeners) {
-      if (isStart) {
-        itl.onStart(this);
-      }
-      else {
-        itl.onFinish(this);
-      }
-    }
-  }
-
-  /////
-  // ITestContext
-  //
-  public String getName() {
-    return m_testName;
-  }
-
-  /**
-   * @return Returns the startDate.
-   */
-  public Date getStartDate() {
-    return m_startDate;
-  }
-
-  /**
-   * @return Returns the endDate.
-   */
-  public Date getEndDate() {
-    return m_endDate;
-  }
-
-  public IResultMap getPassedTests() {
-    return m_passedTests;
-  }
-
-  public IResultMap getSkippedTests() {
-    return m_skippedTests;
-  }
-
-  public IResultMap getFailedTests() {
-    return m_failedTests;
-  }
-
-  public IResultMap getFailedButWithinSuccessPercentageTests() {
-    return m_failedButWithinSuccessPercentageTests;
-  }
-
-  public String[] getIncludedGroups() {
-    Map<String, String> ig= m_xmlMethodSelector.getIncludedGroups();
-    String[] result= (String[]) ig.values().toArray((new String[ig.size()]));
-
-    return result;
-  }
-
-  public String[] getExcludedGroups() {
-    Map<String, String> eg= m_xmlMethodSelector.getExcludedGroups();
-    String[] result= (String[]) eg.values().toArray((new String[eg.size()]));
-
-    return result;
-  }
-
-  public String getOutputDirectory() {
-    return m_outputDirectory;
-  }
-
-  /**
-   * @return Returns the suite.
-   */
-  public ISuite getSuite() {
-    return m_suite;
-  }
-
-  public ITestNGMethod[] getAllTestMethods() {
-    return m_allTestMethods;
-  }
-
-  
-  public String getHost() {
-    return m_host;
-  }
-
-  public Collection<ITestNGMethod> getExcludedMethods() {
-    Map<ITestNGMethod, ITestNGMethod> vResult = Maps.newHashMap();
-    
-    for (ITestNGMethod m : m_excludedMethods) {
-      vResult.put(m, m);
-    }
-    
-    return vResult.keySet();
-  }
-
-  /**
-   * @see org.testng.ITestContext#getFailedConfigurations()
-   */
-  public IResultMap getFailedConfigurations() {
-    return m_failedConfigurations;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getPassedConfigurations()
-   */
-  public IResultMap getPassedConfigurations() {
-    return m_passedConfigurations;
-  }
-
-  /**
-   * @see org.testng.ITestContext#getSkippedConfigurations()
-   */
-  public IResultMap getSkippedConfigurations() {
-    return m_skippedConfigurations;
-  }
-  
-  //
-  // ITestContext
-  /////
-  
-  /////
-  // ITestResultNotifier
-  //
-
-  public void addPassedTest(ITestNGMethod tm, ITestResult tr) {
-    m_passedTests.addResult(tr, tm);
-  }
-
-  public Set<ITestResult> getPassedTests(ITestNGMethod tm) {
-    return m_passedTests.getResults(tm);
-  }
-
-  public void addSkippedTest(ITestNGMethod tm, ITestResult tr) {
-    m_skippedTests.addResult(tr, tm);
-  }
-
-  public void addInvokedMethod(InvokedMethod im) {
-    synchronized(m_invokedMethods) {
-      m_invokedMethods.add(im);
-    }
-  }
-
-  public void addFailedTest(ITestNGMethod testMethod, ITestResult result) {
-    logFailedTest(testMethod, result, false /* withinSuccessPercentage */);
-  }
-
-  public void addFailedButWithinSuccessPercentageTest(ITestNGMethod testMethod,
-                                                      ITestResult result) {
-    logFailedTest(testMethod, result, true /* withinSuccessPercentage */);
-  }
-
-  public XmlTest getTest() {
-    return m_xmlTest;
-  }
-
-  public List<ITestListener> getTestListeners() {
-    return m_testListeners;
-  }
-
-  public List<IConfigurationListener> getConfigurationListeners() {
-    return m_configurationListeners;
-  }
-  //
-  // ITestResultNotifier
-  /////
-
-  private void logFailedTest(ITestNGMethod method,
-                             ITestResult tr,
-                             boolean withinSuccessPercentage) {
-    m_passedTests.removeResult(method);
-    if (withinSuccessPercentage) {
-      m_failedButWithinSuccessPercentageTests.addResult(tr, method);
-    }
-    else {
-      m_failedTests.addResult(tr, method);
-    }
-  }
-
-  private String mapToString(Map<?, ?> m) {
-    StringBuffer result= new StringBuffer();
-    for (Object o : m.values()) {
-      result.append(o.toString()).append(" ");
-    }
-
-    return result.toString();
-  }
-
-  private void log(int level, String s) {
-    Utils.log("TestRunner", level, s);
-  }
-
-  public static int getVerbose() {
-    return m_verbose;
-  }
-
-  public void setVerbose(int n) {
-    m_verbose = n;
-  }
-
-  private void log(String s) {
-    Utils.log("TestRunner", 2, s);
-  }
-
-  /////
-  // Listeners
-  //
-  public void addListener(Object listener) {
-    if(listener instanceof ITestListener) {
-      addTestListener((ITestListener) listener);
-    }
-    if(listener instanceof IConfigurationListener) {
-      addConfigurationListener((IConfigurationListener) listener);
-    }
-  }
-  
-  public void addTestListener(ITestListener il) {
-    m_testListeners.add(il);
-  }
-
-  public void addConfigurationListener(IConfigurationListener icl) {
-    m_configurationListeners.add(icl);
-  }
-  //
-  // Listeners
-  /////
-
-  private List<InvokedMethod> m_invokedMethods = Lists.newArrayList();
-
-  private void dumpInvokedMethods() {
-    System.out.println("\n*********** INVOKED METHODS\n");
-    for (IInvokedMethod im : m_invokedMethods) {
-      if (im.isTestMethod()) {
-        System.out.print("\t\t");
-      }
-      else if (im.isConfigurationMethod()) {
-        System.out.print("\t");
-      }
-      else {
-        continue;
-      }
-      System.out.println("" + im);
-    }
-    System.out.println("\n***********\n");
-  }
-
-  public List<ITestNGMethod> getInvokedMethods() {
-    List<ITestNGMethod> result= Lists.newArrayList();
-    for (IInvokedMethod im : m_invokedMethods) {
-      ITestNGMethod tm= im.getTestMethod();
-      tm.setDate(im.getDate());
-      result.add(tm);
-    }
-
-    return result;
-  }
-
-  private IResultMap m_passedConfigurations= new ResultMap();
-  private IResultMap m_skippedConfigurations= new ResultMap();
-  private IResultMap m_failedConfigurations= new ResultMap();
-  
-  private class ConfigurationListener implements IConfigurationListener {
-    public void onConfigurationFailure(ITestResult itr) {
-      m_failedConfigurations.addResult(itr, itr.getMethod());
-    }
-
-    public void onConfigurationSkip(ITestResult itr) {
-      m_skippedConfigurations.addResult(itr, itr.getMethod());
-    }
-
-    public void onConfigurationSuccess(ITestResult itr) {
-      m_passedConfigurations.addResult(itr, itr.getMethod());
-    }
-  }
-
-  public void setMethodInterceptor(IMethodInterceptor methodInterceptor) {
-    m_methodInterceptor = methodInterceptor;
-  }
-
-  public XmlTest getCurrentXmlTest() {
-    return m_xmlTest;
-  }
-
-  private IAttributes m_attributes = new Attributes();
-
-  public Object getAttribute(String name) {
-    return m_attributes.getAttribute(name);
-  }
-
-  public void setAttribute(String name, Object value) {
-    m_attributes.setAttribute(name, value);
-  }
-
-  public Set<String> getAttributeNames() {
-    return m_attributes.getAttributeNames();
-  }
-
-  public Object removeAttribute(String name) {
-    return m_attributes.removeAttribute(name);
-  }
-
-} // TestRunner
diff --git a/src/org/testng/TimeBombSkipException.java b/src/org/testng/TimeBombSkipException.java
deleted file mode 100755
index 1638f2e..0000000
--- a/src/org/testng/TimeBombSkipException.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package org.testng;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-
-/**
- * A {@link SkipException} extension that transforms a skipped method
- * into a failed method based on a time trigger.
- * <p/>
- * By default the time format is yyyy/MM/dd (according to {@code SimpleDateFormat}). 
- * You can customize this by using the specialized constructors. Suppported date
- * formats are according to the {@code SimpleDateFormat}.
- * 
- * @author <a href='mailto:the[dot]mindstorm[at]gmail[dot]com'>Alex Popescu</a>
- * @since 5.6
- */
-public class TimeBombSkipException extends SkipException {
-  private static final SimpleDateFormat SDF= new SimpleDateFormat("yyyy/MM/dd");
-  private Calendar m_expireDate;
-  private DateFormat m_inFormat= SDF;
-  private DateFormat m_outFormat= SDF;
-  private volatile boolean m_stackChanged= false;
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>expirationDate</tt>.
-   * The format used for date comparison is <tt>yyyy/MM/dd</tt>
-   * @param msg exception message
-   * @param expirationDate time limit after which the SKIP becomes a FAILURE
-   */
-  public TimeBombSkipException(String msg, Date expirationDate) {
-    super(msg);
-    initExpireDate(expirationDate);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>expirationDate</tt>.
-   * The <tt>format</tt> parameter wiil be used for performing the time comparison.
-   * @param msg exception message
-   * @param expirationDate time limit after which the SKIP becomes a FAILURE
-   * @param format format for the time comparison
-   */
-  public TimeBombSkipException(String msg, Date expirationDate, String format) {
-    super(msg);
-    m_inFormat= new SimpleDateFormat(format);
-    m_outFormat= new SimpleDateFormat(format);
-    initExpireDate(expirationDate);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>date</tt>
-   * in the format <tt>yyyy/MM/dd</tt>.
-   * @param msg exception message
-   * @param date time limit after which the SKIP becomes a FAILURE
-   */
-  public TimeBombSkipException(String msg, String date) {
-    super(msg);
-    initExpireDate(date);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>date</tt>
-   * in the specified format <tt>format</tt>. The same format is used
-   * when performing the time comparison.
-   * @param msg exception message
-   * @param date time limit after which the SKIP becomes a FAILURE
-   * @param format format of the passed in <tt>date</tt> and of the time comparison
-   */
-  public TimeBombSkipException(String msg, String date, String format) {
-    this(msg, date, format, format);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>date</tt>
-   * in the specified format <tt>inFormat</tt>. The <tt>outFormat</tt> will be
-   * used to perform the time comparison and display.
-   * @param msg exception message
-   * @param date time limit after which the SKIP becomes a FAILURE
-   * @param inFormat format of the passed in <tt>date</tt>
-   * @param outFormat format of the time comparison
-   */
-  public TimeBombSkipException(String msg, String date, String inFormat, String outFormat) {
-    super(msg);
-    m_inFormat= new SimpleDateFormat(inFormat);
-    m_outFormat= new SimpleDateFormat(outFormat);
-    initExpireDate(date);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>expirationDate</tt>.
-   * The format used for date comparison is <tt>yyyy/MM/dd</tt>
-   * @param msg exception message
-   * @param expirationDate time limit after which the SKIP becomes a FAILURE
-   * @param cause the cause (which is saved for later retrieval by the
-   *         {@link #getCause()} method).  (A <tt>null</tt> value is
-   *         permitted, and indicates that the cause is nonexistent or
-   *         unknown.)
-   */
-  public TimeBombSkipException(String msg, Date expirationDate, Throwable cause) {
-    super(msg, cause);
-    initExpireDate(expirationDate);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>expirationDate</tt>.
-   * The <tt>format</tt> parameter wiil be used for performing the time comparison.
-   * @param msg exception message
-   * @param expirationDate time limit after which the SKIP becomes a FAILURE
-   * @param format format for the time comparison
-   * @param cause the cause (which is saved for later retrieval by the
-   *         {@link #getCause()} method).  (A <tt>null</tt> value is
-   *         permitted, and indicates that the cause is nonexistent or
-   *         unknown.)
-   */
-  public TimeBombSkipException(String msg, Date expirationDate, String format, Throwable cause) {
-    super(msg, cause);
-    m_inFormat= new SimpleDateFormat(format);
-    m_outFormat= new SimpleDateFormat(format);
-    initExpireDate(expirationDate);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>date</tt>
-   * in the format <tt>yyyy/MM/dd</tt>.
-   * @param msg exception message
-   * @param date time limit after which the SKIP becomes a FAILURE
-   * @param cause the cause (which is saved for later retrieval by the
-   *         {@link #getCause()} method).  (A <tt>null</tt> value is
-   *         permitted, and indicates that the cause is nonexistent or
-   *         unknown.)
-   */
-  public TimeBombSkipException(String msg, String date, Throwable cause) {
-    super(msg, cause);
-    initExpireDate(date);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>date</tt>
-   * in the specified format <tt>format</tt>. The same format is used
-   * when performing the time comparison.
-   * @param msg exception message
-   * @param date time limit after which the SKIP becomes a FAILURE
-   * @param format format of the passed in <tt>date</tt> and of the time comparison
-   * @param cause the cause (which is saved for later retrieval by the
-   *         {@link #getCause()} method).  (A <tt>null</tt> value is
-   *         permitted, and indicates that the cause is nonexistent or
-   *         unknown.)
-   */
-  public TimeBombSkipException(String msg, String date, String format, Throwable cause) {
-    this(msg, date, format, format, cause);
-  }
-  
-  /**
-   * Creates a {@code TimeBombedSkipException} using the <tt>date</tt>
-   * in the specified format <tt>inFormat</tt>. The <tt>outFormat</tt> will be
-   * used to perform the time comparison and display.
-   * @param msg exception message
-   * @param date time limit after which the SKIP becomes a FAILURE
-   * @param inFormat format of the passed in <tt>date</tt>
-   * @param outFormat format of the time comparison
-   * @param cause the cause (which is saved for later retrieval by the
-   *         {@link #getCause()} method).  (A <tt>null</tt> value is
-   *         permitted, and indicates that the cause is nonexistent or
-   *         unknown.)
-   */
-  public TimeBombSkipException(String msg, String date, String inFormat, String outFormat, Throwable cause) {
-    super(msg, cause);
-    m_inFormat= new SimpleDateFormat(inFormat);
-    m_outFormat= new SimpleDateFormat(outFormat);
-    initExpireDate(date);
-  }
-  
-  private void initExpireDate(Date expireDate) {
-    m_expireDate= Calendar.getInstance();
-    m_expireDate.setTime(expireDate);    
-  }
-  
-  private void initExpireDate(String date) {
-    try {
-      Date d= m_inFormat.parse(date);
-      initExpireDate(d);
-    }
-    catch(ParseException pex) {
-      throw new TestNGException("Cannot parse date:" + date + " using pattern: " + m_inFormat, pex);
-    }
-  }
-  
-  public boolean isSkip() {
-    if(null == m_expireDate) return false;
-    
-    try {
-      Calendar now= Calendar.getInstance();
-      Date nowDate= m_inFormat.parse(m_inFormat.format(now.getTime()));
-      now.setTime(nowDate);
-      
-      return !now.after(m_expireDate);
-    }
-    catch(ParseException pex) {
-      throw new TestNGException("Cannot compare dates.");
-    }
-  }
-
-  public String getMessage() {
-    if(isSkip()) {
-      return super.getMessage();
-    }
-    else {
-      return super.getMessage() + "; Test must have been enabled by: " + m_outFormat.format(m_expireDate.getTime());
-    }
-  }
-
-  public void printStackTrace(PrintStream s) {
-    reduceStackTrace();
-    super.printStackTrace(s);
-  }
-
-  public void printStackTrace(PrintWriter s) {
-    reduceStackTrace();
-    super.printStackTrace(s);
-  }
-
-  
-}
diff --git a/src/org/testng/annotations/AfterClass.java b/src/org/testng/annotations/AfterClass.java
deleted file mode 100755
index 7aa705b..0000000
--- a/src/org/testng/annotations/AfterClass.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface AfterClass {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/AfterGroups.java b/src/org/testng/annotations/AfterGroups.java
deleted file mode 100755
index e412f77..0000000
--- a/src/org/testng/annotations/AfterGroups.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface AfterGroups {
-  /**
-   * The list of groups that this configuration method will run before. If specified it overrides the
-   * list of groups provided through {@link #groups()} attribute.
-   * This method is guaranteed to run shortly before the first test method that
-   * belongs to any of these groups is invoked.
-   */
-  public String[] value() default {};
-
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. The list also describes the groups
-   * that this configuration method will be run after (if no {@link #value()} attribute is defined).
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/AfterMethod.java b/src/org/testng/annotations/AfterMethod.java
deleted file mode 100755
index bd17465..0000000
--- a/src/org/testng/annotations/AfterMethod.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface AfterMethod {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more test methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-  /**
-   * If true and the @Test method that was just run has an invocationCount > 1, this
-   * AfterMethod will only be invoked once (after the last test invocation).
-   */
-  public boolean lastTimeOnly() default false;
-
-}
diff --git a/src/org/testng/annotations/AfterSuite.java b/src/org/testng/annotations/AfterSuite.java
deleted file mode 100755
index b802077..0000000
--- a/src/org/testng/annotations/AfterSuite.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface AfterSuite {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/AfterTest.java b/src/org/testng/annotations/AfterTest.java
deleted file mode 100755
index 1425eb8..0000000
--- a/src/org/testng/annotations/AfterTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface AfterTest {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/BeforeClass.java b/src/org/testng/annotations/BeforeClass.java
deleted file mode 100755
index d094085..0000000
--- a/src/org/testng/annotations/BeforeClass.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface BeforeClass {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/BeforeGroups.java b/src/org/testng/annotations/BeforeGroups.java
deleted file mode 100755
index abd9edc..0000000
--- a/src/org/testng/annotations/BeforeGroups.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface BeforeGroups {
-  /**
-   * The list of groups that this configuration method will run before. If specified it overrides the
-   * list of groups provided through {@link #groups()} attribute.
-   * This method is guaranteed to run shortly before the first test method that
-   * belongs to any of these groups is invoked.
-   */
-  public String[] value() default {};
-
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. This list also describes the groups
-   * that this configuration method will run before (if no {@link #value()} attribute is defined).
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/BeforeMethod.java b/src/org/testng/annotations/BeforeMethod.java
deleted file mode 100755
index 2a250d1..0000000
--- a/src/org/testng/annotations/BeforeMethod.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface BeforeMethod {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-  /**
-   * If true and the @Test method about to be run has an invocationCount > 1, this
-   * BeforeMethod will only be invoked once (before the first test invocation).
-   */
-  public boolean firstTimeOnly() default false;
-}
diff --git a/src/org/testng/annotations/BeforeSuite.java b/src/org/testng/annotations/BeforeSuite.java
deleted file mode 100755
index a1f4891..0000000
--- a/src/org/testng/annotations/BeforeSuite.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface BeforeSuite {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/BeforeTest.java b/src/org/testng/annotations/BeforeTest.java
deleted file mode 100755
index 6c67d21..0000000
--- a/src/org/testng/annotations/BeforeTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface BeforeTest {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-
-}
diff --git a/src/org/testng/annotations/Configuration.java b/src/org/testng/annotations/Configuration.java
deleted file mode 100755
index 7368458..0000000
--- a/src/org/testng/annotations/Configuration.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-
-/**
- * Configuration information for a TestNG class.
- * 
- * @deprecated Use @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest,
- * \@BeforeGroups, @AfterGroups, @BeforeClass, @AfterClass, @BeforeMethod,
- * \@AfterMethod
- *
- * @author Cedric Beust, Apr 26, 2004
- * 
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface Configuration {
-  
-  /**
-   * If true, the annotated method will be run after the test class is instantiated
-   * and before the test method is invoked.
-   */
-  public boolean beforeTestClass() default false;
-  
-  /**
-   * If true, the annotated method will be run after all the tests in the test
-   * class have been run.
-   */
-  public boolean afterTestClass() default false;
-  
-  /**
-   * If true, the annotated method will be run before any test method is invoked.
-   */
-  public boolean beforeTestMethod() default false;
-  
-  /**
-   * If true, the annotated method will be run after any test method is invoked.
-   */
-  public boolean afterTestMethod() default false;
-  
-  /**
-   * If true, the annotated method will be run before this suite starts.
-   */
-  public boolean beforeSuite() default false;
-  
-  /**
-   * If true, the annotated method will be run after all tests in this suite
-   * have run.
-   */
-  public boolean afterSuite() default false;
-  
-  /**
-   * If true, the annotated method will be run before every test.
-   */
-  public boolean beforeTest() default false;
-  
-  /**
-   * If true, the annotated method will be run after all every test.
-   */
-  public boolean afterTest() default false;
-  
-  /**
-   * The list of groups that this configuration method will run before.
-   * This method is guaranteed to run shortly before the first test method that
-   * belongs to any of these groups is invoked.
-   */
-  public String[] beforeGroups() default {};
-  
-  /**
-   * The list of groups that this configuration method will run after.
-   * This method is guaranteed to run shortly after the last test method that
-   * belongs to any of these groups is invoked.
-   */
-  public String[] afterGroups() default {};
-
-  /**
-   * The list of variables used to fill the parameters of this method.
-   * These variables must be defined in the property file.
-   * 
-   * @deprecated Use @Parameters
-   */
-  @Deprecated
-  public String[] parameters() default {};  
-  
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean alwaysRun() default false;
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean inheritGroups() default true;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-}
diff --git a/src/org/testng/annotations/DataProvider.java b/src/org/testng/annotations/DataProvider.java
deleted file mode 100755
index 9d04cbd..0000000
--- a/src/org/testng/annotations/DataProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.testng.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Mark a method as supplying data for a test method. The data provider name
- * defaults to method name.
- * The annotated method must return an Object[][] where each
- * Object[] can be assigned the parameter list of the test method.
- * The @Test method that wants to receive data from this DataProvider
- * needs to use a dataProvider name equals to the name of this annotation.
- * 
- * @author cbeust
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({METHOD})
-public @interface DataProvider {
-  
-  /**
-   * The name of this DataProvider.
-   */
-  public String name() default "";
-
-  /**
-   * Whether this data provider should be run in parallel.
-   */
-  boolean parallel() default false;
-}
diff --git a/src/org/testng/annotations/ExpectedExceptions.java b/src/org/testng/annotations/ExpectedExceptions.java
deleted file mode 100755
index 472e944..0000000
--- a/src/org/testng/annotations/ExpectedExceptions.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-
-/**
- * List of exceptions that a test method is expected to throw.
- * 
- * @deprecated Use @Test(expectedExceptions = "...")
- *
- * @author Cedric Beust, Apr 26, 2004
- * 
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface ExpectedExceptions {
-  
-  /**
-   * The list of exceptions expected to be thrown by this method.
-   */
-  public Class[] value();
-}
diff --git a/src/org/testng/annotations/Factory.java b/src/org/testng/annotations/Factory.java
deleted file mode 100755
index 6fcd21c..0000000
--- a/src/org/testng/annotations/Factory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-
-/**
- * Marks a method as a factory that returns objects that will be used by TestNG
- * as Test classes.  The method must return Object[].
- * 
- * @author <a href="mailto:cedric@beust.com">Cedric Beust</a>
- */
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface Factory {
-  /**
-   * The list of variables used to fill the parameters of this method.
-   * These variables must be defined in the property file.
-   * 
-   * @deprecated Use @Parameters
-   */
-  @Deprecated
-  public String[] parameters() default {};
-  
-  /**
-   * The name of the data provider for this test method.
-   * @see org.testng.annotations.DataProvider
-   */
-  public String dataProvider() default "";
-}
diff --git a/src/org/testng/annotations/IAnnotation.java b/src/org/testng/annotations/IAnnotation.java
deleted file mode 100755
index 12cdb7c..0000000
--- a/src/org/testng/annotations/IAnnotation.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.testng.annotations;
-
-/**
- * The parent interface for all the annotations.
- * 
- * Created on Dec 20, 2005
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IAnnotation {
-}
diff --git a/src/org/testng/annotations/IConfigurationAnnotation.java b/src/org/testng/annotations/IConfigurationAnnotation.java
deleted file mode 100755
index 274aeb8..0000000
--- a/src/org/testng/annotations/IConfigurationAnnotation.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.testng.annotations;
-
-/**
- * Encapsulate the @Configuration / @testng.configuration annotation
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IConfigurationAnnotation extends ITestOrConfiguration {
-  /**
-   * If true, the annotated method will be run after the test class is instantiated
-   * and before the test method is invoked.
-   */
-  public boolean getBeforeTestClass();
-  
-  /**
-   * If true, the annotated method will be run after all the tests in the test
-   * class have been run.
-   */
-  public boolean getAfterTestClass();
-  
-  /**
-   * If true, the annotated method will be run before any test method is invoked.
-   */
-  public boolean getBeforeTestMethod();
-  
-  /**
-   * If true, the annotated method will be run after any test method is invoked.
-   */
-  public boolean getAfterTestMethod();
-  
-  /**
-   * If true, the annotated method will be run before this suite starts.
-   */
-  public boolean getBeforeSuite();
-  
-  /**
-   * If true, the annotated method will be run after all tests in this suite
-   * have run.
-   */
-  public boolean getAfterSuite();
-  
-  /**
-   * If true, the annotated method will be run before every test
-   */
-  public boolean getBeforeTest();
-  
-  /**
-   * If true, the annotated method will be run after all every test.
-   */
-  public boolean getAfterTest();
-  
-  /**
-   * Used only for after type of configuration methods. If set to true than
-   * the configuration method will be run whatever the status of before 
-   * configuration methods was.
-   */
-  public boolean getAlwaysRun();
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * \@Test annotation on the class (if any).
-   */
-  public boolean getInheritGroups();
-
-  /**
-   * The list of groups that this configuration method will run before.
-   */
-  public String[] getBeforeGroups();
-
-  /**
-   * The list of groups that this configuration method will run after.
-   */
-  public String[] getAfterGroups();  
-
-  /**
-   * Internal use only.
-   * @return true if this configuration annotation is not a "true" @Configuration
-   * but a @BeforeSuite or similar that is represented as a @Configuration
-   */
-  public boolean isFakeConfiguration();
-}
diff --git a/src/org/testng/annotations/IDataProviderAnnotation.java b/src/org/testng/annotations/IDataProviderAnnotation.java
deleted file mode 100755
index e6c72f1..0000000
--- a/src/org/testng/annotations/IDataProviderAnnotation.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.testng.annotations;
-
-/**
- * Encapsulate the @DataProvider / @testng.data-provider annotation
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IDataProviderAnnotation extends IAnnotation {
-  /**
-   * The name of this DataProvider.
-   */
-  public String getName();
-  public void setName(String name);
-
-  /**
-   * Whether this data provider should be used in parallel.
-   */
-  boolean isParallel();
-  void setParallel(boolean parallel);
-}
diff --git a/src/org/testng/annotations/IExpectedExceptionsAnnotation.java b/src/org/testng/annotations/IExpectedExceptionsAnnotation.java
deleted file mode 100755
index 535a488..0000000
--- a/src/org/testng/annotations/IExpectedExceptionsAnnotation.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.testng.annotations;
-
-/**
- * Encapsulate the @ExpectedExceptions / @testng.expected-exceptions annotation 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IExpectedExceptionsAnnotation extends IAnnotation {
-  /**
-   * The list of exceptions expected to be thrown by this method.
-   */
-  public Class[] getValue();
-
-}
diff --git a/src/org/testng/annotations/IFactoryAnnotation.java b/src/org/testng/annotations/IFactoryAnnotation.java
deleted file mode 100755
index 2cb167b..0000000
--- a/src/org/testng/annotations/IFactoryAnnotation.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.testng.annotations;
-
-/**
- * Encapsulate the @Factory / @testng.factory annotation
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IFactoryAnnotation extends IParameterizable {
-  public String getDataProvider();
-  public void setDataProvider(String dataProvider);
-}
diff --git a/src/org/testng/annotations/IObjectFactoryAnnotation.java b/src/org/testng/annotations/IObjectFactoryAnnotation.java
deleted file mode 100755
index 21d9984..0000000
--- a/src/org/testng/annotations/IObjectFactoryAnnotation.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.testng.annotations;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 2:16:13 PM
- */
-public interface IObjectFactoryAnnotation extends IAnnotation
-{
-}
diff --git a/src/org/testng/annotations/IParameterizable.java b/src/org/testng/annotations/IParameterizable.java
deleted file mode 100755
index 2f80224..0000000
--- a/src/org/testng/annotations/IParameterizable.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.testng.annotations;
-
-/**
- * Parent interface for annotations that can receive parameters.
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IParameterizable extends IAnnotation {
-  /**
-   * The list of variables used to fill the parameters of this method.
-   * These variables must be defined in the property file.
-   * 
-   * @deprecated Use @Parameters
-   */
-  public String[] getParameters();
-
-}
diff --git a/src/org/testng/annotations/IParametersAnnotation.java b/src/org/testng/annotations/IParametersAnnotation.java
deleted file mode 100755
index 0fac7de..0000000
--- a/src/org/testng/annotations/IParametersAnnotation.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.testng.annotations;
-
-/**
- * Encapsulate the @Parameters / @testng.parameters annotation
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IParametersAnnotation extends IAnnotation {
-  /**
-   * The list of variables used to fill the parameters of this method.
-   * These variables must be defined in your testng.xml file.
-   * For example
-   * <p>
-   * <code>
-   * @Parameters({ "xmlPath" })<br>
-   * @Test<br>
-   * public void verifyXmlFile(String path) { ... }<br>
-   * </code>
-   * <p>and in <tt>testng.xml</tt>:<p>
-   * <code>
-   * <parameter name="xmlPath" value="account.xml" /><br>
-   * </code>
-   */
-  public String[] getValue();
-
-}
diff --git a/src/org/testng/annotations/ITestAnnotation.java b/src/org/testng/annotations/ITestAnnotation.java
deleted file mode 100755
index b062141..0000000
--- a/src/org/testng/annotations/ITestAnnotation.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.testng.annotations;
-
-import org.testng.IRetryAnalyzer;
-
-/**
- * Encapsulate the @Test / @testng.test annotation.
- * 
- * Created on Dec 20, 2005
- * @author <a href = "mailto:cedric@beust.com">Cedric Beust</a>
- */
-public interface ITestAnnotation extends ITestOrConfiguration {
-  /**
-   * Returns the maximum number of milliseconds this test should take.
-   * If it hasn't returned after this time, it will be marked as a FAIL.
-   * @return the maximum number of milliseconds this test should take.
-   */
-  public long getTimeOut();
-  public void setTimeOut(long l);
-  
-  /**
-   * Returns the number of times this method should be invoked.
-   * @return the number of times this method should be invoked.
-   */
-  public int getInvocationCount();
-  public void setInvocationCount(int l);
-  
-  /**
-   * The size of the thread pool for this method.  The method will be invoked
-   * from multiple threads as specified by invocationCount.
-   * Note:  this attribute is ignored if invocationCount is not specified
-   */
-  public int getThreadPoolSize();
-  public void setThreadPoolSize(int n);
-  
-  /**
-   * The percentage of success expected from this method.
-   */
-  public int getSuccessPercentage();
-  public void setSuccessPercentage(int s);
-
-  /**
-   * If set to true, this test method will always be run even if it depends
-   * on a method that failed.  This attribute will be ignored if this test
-   * doesn't depend on any method or group.
-   */
-  public boolean getAlwaysRun();
-  public void setAlwaysRun(boolean f);
-
-  public Class<?>[] getExpectedExceptions();
-  public void setExpectedExceptions(Class<?>[] e);
-  
-  public String getExpectedExceptionsMessageRegExp();
-  public void setExpectedExceptionsMessageRegExp(String e);
-
-  public String getSuiteName();
-  public void setSuiteName(String s);
-  
-  public String getTestName();
-  public void setTestName(String s);
-  
-  public boolean getSequential();
-  public void setSequential(boolean f);
-  
-  public String getDataProvider();
-  public void setDataProvider(String v);
-
-  public Class<?> getDataProviderClass();
-  public void setDataProviderClass(Class<?> v);
-
-  public IRetryAnalyzer getRetryAnalyzer();
-  public void setRetryAnalyzer(Class<?> c);
-  
-  public boolean skipFailedInvocations();
-  public void setSkipFailedInvocations(boolean skip);
-
-  public long invocationTimeOut();
-  public void setInvocationTimeOut(long timeOut);
-  
-  public boolean ignoreMissingDependencies();
-  public void setIgnoreMissingDependencies(boolean ignore);
-
-  /**
-   * The scheduling priority. Lower priorities get scheduled first.
-   */
-  public int getPriority();
-  public void setPriority(int priority);
-}
diff --git a/src/org/testng/annotations/ITestOrConfiguration.java b/src/org/testng/annotations/ITestOrConfiguration.java
deleted file mode 100755
index 2640770..0000000
--- a/src/org/testng/annotations/ITestOrConfiguration.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.testng.annotations;
-
-/**
- * This interface captures methods common to @Test and @Configuration
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface ITestOrConfiguration extends IParameterizable {
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] getGroups();
-  public void setGroups(String[] groups);
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] getDependsOnGroups();
-  public void setDependsOnGroups(String[] groups);
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] getDependsOnMethods();
-  public void setDependsOnMethods(String[] dependsOnMethods);
-
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean getEnabled();
-  public void setEnabled(boolean enabled);
-
-  /**
-   * The description for this method, which will be shown in the reports.
-   */
-  public String getDescription();
-  public void setDescription(String description);
-
-}
diff --git a/src/org/testng/annotations/Listeners.java b/src/org/testng/annotations/Listeners.java
deleted file mode 100644
index f04ccff..0000000
--- a/src/org/testng/annotations/Listeners.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.testng.annotations;
-
-import static java.lang.annotation.ElementType.TYPE;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.IAnnotationTransformer2;
-import org.testng.ITestNGListener;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * This annotation lets you define listeners directly on a test class
- * instead of doing so in your testng.xml.  Any class that implements
- * the interface {@link org.testng.ITestNGListener} is allowed,
- * except {@link IAnnotationTransformer} and {@link IAnnotationTransformer2},
- * which need to be defined in XML since they have to be known before we even
- * start looking for annotations.
- *
- * @author Cedric Beust, Mar 26, 2010
- *
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({TYPE})
-public @interface Listeners {
-  Class<? extends ITestNGListener>[] value() default {};
-}
diff --git a/src/org/testng/annotations/ObjectFactory.java b/src/org/testng/annotations/ObjectFactory.java
deleted file mode 100755
index 140056c..0000000
--- a/src/org/testng/annotations/ObjectFactory.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Marks a method as the object factory to use for creating all test instances.
- * The test classes can only contain one method marked with this annotation,
- * and the method must return an instance of {@link org.testng.IObjectFactory}.
- * 
- * @author Hani Suleiman
- * @since 5.6
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface ObjectFactory
-{
-}
diff --git a/src/org/testng/annotations/Optional.java b/src/org/testng/annotations/Optional.java
deleted file mode 100755
index 26f26c9..0000000
--- a/src/org/testng/annotations/Optional.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.testng.annotations;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.testng.internal.Parameters;
-
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
-
-/**
- * Specifies that the current parameter is optional.  TestNG will pass
- * in a specified default value, or <code>null</code> if none is specified.
- */
- at Retention(RUNTIME)
- at Target({PARAMETER})
-public @interface Optional {
-  /** The default value to pass to this parameter.  <p>The default deserves
-   * a bit of explanation.  JSR-175 (which defines annotations) says that
-   * Java annotation parameters can only be ConstantExpressions, which
-   * can be primitive/string literals, but not <code>null</code>.</p>
-   * <p>In this case, we use this string as a substitute
-   * for <code>null</code>; in practice, TestNG will pass <code>null</code>
-   * to your code, and not the string "null", if you do not specify
-   * a default value here in this parameter.
-   */
-  public String value() default Parameters.NULL_VALUE;
-}
diff --git a/src/org/testng/annotations/Parameters.java b/src/org/testng/annotations/Parameters.java
deleted file mode 100755
index 35b6d68..0000000
--- a/src/org/testng/annotations/Parameters.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.testng.annotations;
-
-import static java.lang.annotation.ElementType.CONSTRUCTOR;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Describes how to pass parameters to a @Test method.
- * 
- * @author <a href="mailto:cedric@beust.com">Cedric Beust</a>
- */
- at Retention(RUNTIME)
- at Target({METHOD, CONSTRUCTOR, TYPE })
-public @interface Parameters {
-  /**
-   * The list of variables used to fill the parameters of this method.
-   * These variables must be defined in your testng.xml file.
-   * For example
-   * <p>
-   * <code>
-   * @Parameters({ "xmlPath" })<br>
-   * @Test<br>
-   * public void verifyXmlFile(String path) { ... }<br>
-   * </code>
-   * <p>and in <tt>testng.xml</tt>:<p>
-   * <code>
-   * <parameter name="xmlPath" value="account.xml" /><br>
-   * </code>
-   */
-  public String[] value() default {};
-}
diff --git a/src/org/testng/annotations/Test.java b/src/org/testng/annotations/Test.java
deleted file mode 100755
index e8c460c..0000000
--- a/src/org/testng/annotations/Test.java
+++ /dev/null
@@ -1,177 +0,0 @@
-package org.testng.annotations;
-
-import static java.lang.annotation.ElementType.CONSTRUCTOR;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Mark a class or a method as part of the test.
- *
- * @author Cedric Beust, Apr 26, 2004
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({METHOD, TYPE, CONSTRUCTOR})
-public @interface Test {
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] groups() default {};
-
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean enabled() default true;
-  
-  /**
-   * The list of variables used to fill the parameters of this method.
-   * These variables must be defined in the property file.
-   * 
-   * @deprecated Use @Parameters
-   */
-  @Deprecated
-  public String[] parameters() default {};
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] dependsOnGroups() default {};
-
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   * If some of these methods have been overloaded, all the overloaded
-   * versions will be run.
-   */
-  public String[] dependsOnMethods() default {};
-
-  /**
-   * The maximum number of milliseconds this test should take.
-   * If it hasn't returned after this time, it will be marked as a FAIL.
-   */
-  public long timeOut() default 0;
-  
-  /**
-   * The maximum number of milliseconds that the total number of invocations on this test
-   * method should take.  This annotation will be ignored if the attribute invocationCount
-   * is not specified on this method.
-   * If it hasn't returned after this time, it will be marked as a FAIL.
-   */
-  public long invocationTimeOut() default 0;
-  
-  /**
-   * The number of times this method should be invoked.
-   */
-  public int invocationCount() default 1;
-  
-  /**
-   * The size of the thread pool for this method.  The method will be invoked
-   * from multiple threads as specified by invocationCount.
-   * Note:  this attribute is ignored if invocationCount is not specified
-   */
-  public int threadPoolSize() default 0;
-  
-  /**
-   * The percentage of success expected from this method.
-   */
-  public int successPercentage() default 100;
-  
-  /**
-   * The name of the data provider for this test method.
-   * @see org.testng.annotations.DataProvider
-   */
-  public String dataProvider() default "";
-  
-  /**
-   * The class where to look for the data provider.  If not
-   * specified, the dataprovider will be looked on the class
-   * of the current test method or one of its super classes.
-   * If this attribute is specified, the data provider method
-   * needs to be static on the specified class.
-   */
-  public Class<?> dataProviderClass() default Object.class;
-  
-  /**
-   * If set to true, this test method will always be run even if it depends
-   * on a method that failed.  This attribute will be ignored if this test
-   * doesn't depend on any method or group.
-   */
-  public boolean alwaysRun() default false;
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String description() default "";
-  
-  /**
-   * The list of exceptions that a test method is expected to throw.  If no 
-   * exception or a different than one on this list is thrown, this test will be
-   * marked a failure.
-   */
-  public Class[] expectedExceptions() default {};
-
-  /**
-   * If expectedExceptions was specified, its message must match the regular expression
-   * specified in this attribute. 
-   */
-  public String expectedExceptionsMessageRegExp() default ".*";
-
-  /**
-   * The name of the suite this test class should be placed in.  This
-   * attribute is ignore if @Test is not at the class level.
-   */
-  public String suiteName() default "";
-
-  /**
-   * The name of the test  this test class should be placed in.  This
-   * attribute is ignore if @Test is not at the class level.
-   */
-  public String testName() default "";
-  
-  /**
-   * If set to true, all the methods on this test class are guaranteed to run
-   * sequentially, even if the tests are currently being run with parallel="true".
-   * 
-   * This attribute can only be used at the class level and will be ignored
-   * if used at the method level. 
-   */
-  public boolean sequential() default false;
-
-  /**
-   * The name of the class that should be called to test if the test
-   * should be retried.
-   * @return String The name of the class that will test if a test method
-   * should be retried.
-   */
-  public Class retryAnalyzer() default Class.class;
-  
-  /**
-   * If true and invocationCount is specified with a value > 1,
-   * then all invocations after a failure will be marked as a SKIP
-   * instead of a FAIL.
-   */
-  public boolean skipFailedInvocations() default false;
-  
-  /**
-   * If set to true, this test will run even if the methods
-   * it depends on are missing or excluded.
-   */
-  public boolean ignoreMissingDependencies() default false;
-
-  /**
-   * The scheduling priority. Lower priorities will be scheduled first.
-   */
-  int priority() default 0;
-}
diff --git a/src/org/testng/annotations/TestInstance.java b/src/org/testng/annotations/TestInstance.java
deleted file mode 100755
index c5d9747..0000000
--- a/src/org/testng/annotations/TestInstance.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.testng.annotations;
-
-import static java.lang.annotation.ElementType.PARAMETER;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * If this annotation is used on a parameter of a data provider, that parameter is the instance
- * of the test method which is going to be fed by this data provider.
- * 
- * This annotation is ignored everywhere else.
- * 
- * @author cbeust
- */
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({PARAMETER})
-public @interface TestInstance {
-}
diff --git a/src/org/testng/collections/Lists.java b/src/org/testng/collections/Lists.java
deleted file mode 100755
index 3a7052a..0000000
--- a/src/org/testng/collections/Lists.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.testng.collections;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Lists {
-
-  public static <K> List<K> newArrayList() {
-    return new ArrayList<K>();
-  }
-
-  public static <K> List<K> newArrayList(int size) {
-    return new ArrayList<K>(size);
-  }
-}
diff --git a/src/org/testng/collections/Maps.java b/src/org/testng/collections/Maps.java
deleted file mode 100755
index 14a834f..0000000
--- a/src/org/testng/collections/Maps.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.testng.collections;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Maps {
-
-  public static <K, V> Map<K,V> newHashMap() {
-    return new HashMap<K, V>();
-  }
-}
diff --git a/src/org/testng/internal/AnnotationTypeEnum.java b/src/org/testng/internal/AnnotationTypeEnum.java
deleted file mode 100755
index 16b0fd3..0000000
--- a/src/org/testng/internal/AnnotationTypeEnum.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * @(#)AnnotationType.java
- *
- * Copyright 1999-2004 by Taleo Corporation,
- * 330 St-Vallier East, Suite 400, Quebec city, Quebec, G1K 9C5, CANADA
- * All rights reserved
- */
-package org.testng.internal;
-
-import java.io.Serializable;
-
-import org.testng.internal.version.VersionInfo;
-import org.testng.log4testng.Logger;
-
-/**
- * <code>AnnotationTypeEnum</code> is an enumeration value representing the annotation type. 
- * @author cquezel
- */
-public final class AnnotationTypeEnum implements Serializable {
-  /** This class's log4testng Logger. */
-  private static final Logger LOGGER = Logger.getLogger(AnnotationTypeEnum.class);
-  
-  /** The JDK50 annotation type ID ("JDK5").*/
-  private static final String JDK_ANNOTATION_TYPE = "JDK";
-  
-  /** The JavaDoc annotation type ID ("javadoc"). */
-  private static final String JAVADOC_ANNOTATION_TYPE = "javadoc";
-
-  /** javadoc annotation type */
-  public static final AnnotationTypeEnum JAVADOC = new AnnotationTypeEnum(JAVADOC_ANNOTATION_TYPE);
-  
-  /** JDK5 annotation type */
-  public static final AnnotationTypeEnum JDK = new AnnotationTypeEnum(JDK_ANNOTATION_TYPE);
-  
-  /** The enumeration name (one of JAVADOC_ANNOTATION_TYPE or JDK5_ANNOTATION_TYPE) */
-  private String m_name;
-
-  /**
-   * Returns an <code>AnnotationTypeEnum</code> object holding the value of the 
-   * specified <code>pAnnotationType</code>. This method throws an IllegalArgumentException
-   * if pAnnotationType is an illegal value or if this is version 14 and JDK5 annotations
-   * are specified.
-   * 
-   * @param pAnnotationType the annotation type. This is one of the two constants 
-   * (AnnotationTypeEnum.JAVADOC_ANNOTATION_TYPE or AnnotationTypeEnum.JDK5_ANNOTATION_TYPE).
-   * For backward compatibility we accept "1.4", "1.5". Any other value will default to 
-   * AnnotationTypeEnum.JDK5 if this is the 1.5 version of TestNG or
-   * AnnotationTypeEnum.JAVADOC if this is the 1.4 version of TestNG. 
-   * 
-   * @return an <code>AnnotationTypeEnum</code> object holding the value of the 
-   * specified <code>pAnnotationType</code>. 
-   */
-  public static AnnotationTypeEnum valueOf(String pAnnotationType) {
-    return valueOf(pAnnotationType, true);
-  }
-
-  /**
-   * Returns an <code>AnnotationTypeEnum</code> object holding the value of the 
-   * specified <code>pAnnotationType</code>. This method throws an IllegalArgumentException
-   * if pAnnotationType is an illegal value or if this is version 14 and JDK5 annotations
-   * are specified.
-   * 
-   * @param pAnnotationType the annotation type. This is one of the two constants 
-   * (AnnotationTypeEnum.JAVADOC_ANNOTATION_TYPE or AnnotationTypeEnum.JDK5_ANNOTATION_TYPE).
-   * For backward compatibility we accept "1.4", "1.5". Any other value will default to 
-   * AnnotationTypeEnum.JDK5 if this is the 1.5 version of TestNG or
-   * AnnotationTypeEnum.JAVADOC if this is the 1.4 version of TestNG. 
-   * @param strict flag indicating if compatibility check should be performed
-   * 
-   * @return an <code>AnnotationTypeEnum</code> object holding the value of the 
-   * specified <code>pAnnotationType</code>. 
-   */
-  public static AnnotationTypeEnum valueOf(String pAnnotationType, boolean strict) {
-    if (pAnnotationType == null) {
-      throw new IllegalArgumentException("annotation is null");
-    }
-    
-    AnnotationTypeEnum annotationType;
-    if (pAnnotationType.equals(JAVADOC_ANNOTATION_TYPE)) {
-      annotationType = JAVADOC;
-    }
-    else if (pAnnotationType.equals(JDK_ANNOTATION_TYPE)) {
-      annotationType = JDK;
-    }
-    else if (pAnnotationType.equals("1.4") 
-        || pAnnotationType.toLowerCase().equals(JAVADOC_ANNOTATION_TYPE.toLowerCase())) {
-      // For backward compatibility only
-      annotationType = JAVADOC;
-      log(2, pAnnotationType, annotationType);
-    }
-    else if ("1.5".equals(pAnnotationType) 
-        || pAnnotationType.toLowerCase().equals(JDK_ANNOTATION_TYPE.toLowerCase())) {
-      // For backward compatibility only
-      annotationType = JDK;
-      log(2, pAnnotationType, annotationType);
-    }
-    else if ("jdk1.5".equals(pAnnotationType.toLowerCase()) || "jdk5".equals(pAnnotationType.toLowerCase())) {
-      // For backward compatibility only
-      annotationType = JDK;
-      log(2, pAnnotationType, annotationType);
-    }
-    else {
-      // For backward compatibility only
-      // TODO should we make this an error?
-      annotationType = VersionInfo.getDefaultAnnotationType();
-      log(1, pAnnotationType, annotationType);
-    }
-    
-    if(strict) {
-      if (VersionInfo.IS_JDK14 && annotationType == JDK) {
-        throw new IllegalArgumentException("Cannot specify \"" + pAnnotationType + "\" with 1.4 version of TestNG");
-      }
-    }
-    
-    return annotationType;
-  }
-  
-  /**
-   * Returns a human readable representation of the enum, suitable to be converted
-   * back to the enumeration by the valueOf method.
-   * @return a human readable representation of the enum, suitable to be converted
-   * back to the enumeration by the valueOf method.
-   */
-  public String getName() {
-    return m_name;
-  }
-  
-  /**
-   * Returns the m_name of the annotation type.
-   * {@inheritDoc}
-   */
-  @Override 
-  public String toString() {
-    return m_name;
-  }
-
-  
-  private static void log(int level, String pAnnotationType, AnnotationTypeEnum pDefault) {
-    final String msg = "Illegal annotation type '" + pAnnotationType + "' defaulting to '" + pDefault + "'";
-    LOGGER.info(msg);
-    Utils.log("AnnotationTypeEnum", level, "[WARN] " + msg);
-  }
-  
-  private AnnotationTypeEnum(String pName) {
-    m_name = pName;
-  }
-}
diff --git a/src/org/testng/internal/Attributes.java b/src/org/testng/internal/Attributes.java
deleted file mode 100644
index 55fed5c..0000000
--- a/src/org/testng/internal/Attributes.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IAttributes;
-import org.testng.collections.Maps;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Simple implementation of IAttributes.
- * 
- * @author cbeust at google.com (Cedric Beust), March 16th, 2010
- */
-public class Attributes implements IAttributes {
-  private Map<String, Object> m_attributes = Maps.newHashMap();
-
-  public Object getAttribute(String name) {
-    return m_attributes.get(name);
-  }
-
-  public Set<String> getAttributeNames() {
-    return m_attributes.keySet();
-  }
-
-  public void setAttribute(String name, Object value) {
-    m_attributes.put(name, value);
-  }
-
-  public Object removeAttribute(String name) {
-    return m_attributes.remove(name);
-  }
-}
diff --git a/src/org/testng/internal/BaseClassFinder.java b/src/org/testng/internal/BaseClassFinder.java
deleted file mode 100755
index 6dbd2de..0000000
--- a/src/org/testng/internal/BaseClassFinder.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IClass;
-import org.testng.IObjectFactory;
-import org.testng.ITestClassFinder;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-import java.util.Map;
-
-/**
- * This class
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-abstract public class BaseClassFinder implements ITestClassFinder {
-  private Map<Class, IClass> m_classes = Maps.newHashMap();
-
-  public IClass getIClass(Class cls) {
-    return m_classes.get(cls);
-  }
-
-  protected void putIClass(Class cls, IClass iClass) {
-    if (! m_classes.containsKey(cls)) {
-      m_classes.put(cls, iClass);
-    }
-  }
-
-  private void ppp(String s) {
-    System.out.println("[BaseClassFinder] " + s);
-  }
-
-  /**
-   * @param cls
-   * @return An IClass for the given class, or null if we have
-   * already treated this class.
-   */
-  protected IClass findOrCreateIClass(Class cls, Object instance,
-      XmlTest xmlTest,
-      IAnnotationFinder annotationFinder,
-      IObjectFactory objectFactory)
-  {
-    IClass result = m_classes.get(cls);
-    if (null == result) {
-      result = new ClassImpl(cls, instance, m_classes, xmlTest, annotationFinder, objectFactory);
-      m_classes.put(cls, result);
-    }
-
-    return result;
-  }
-
-  protected Map getExistingClasses() {
-    return m_classes;
-  }
-
-  protected boolean classExists(Class cls) {
-    return m_classes.containsKey(cls);
-  }
-
-  public IClass[] findTestClasses() {
-    return m_classes.values().toArray(new IClass[m_classes.size()]);
-   }
-}
diff --git a/src/org/testng/internal/BaseTestMethod.java b/src/org/testng/internal/BaseTestMethod.java
deleted file mode 100755
index d496000..0000000
--- a/src/org/testng/internal/BaseTestMethod.java
+++ /dev/null
@@ -1,657 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IClass;
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestClass;
-import org.testng.ITestNGMethod;
-import org.testng.annotations.ITestOrConfiguration;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.thread.IAtomicInteger;
-import org.testng.internal.thread.ThreadUtil;
-
-import java.lang.reflect.Method;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Superclass to represent both @Test and @Configuration methods.
- */
-public abstract class BaseTestMethod implements ITestNGMethod {
-  /** The test class on which the test method was found. Note that this is not 
-   * necessarily the declaring class. */
-  protected ITestClass m_testClass;
-  
-  protected final transient Class<?> m_methodClass;
-  protected final transient Method m_method;
-  protected String m_id = "";
-  protected long m_date = System.currentTimeMillis();
-  protected final transient IAnnotationFinder m_annotationFinder;
-  protected String[] m_groups = {};
-  protected String[] m_groupsDependedUpon = {};
-  protected String[] m_methodsDependedUpon = {};
-  protected String[] m_beforeGroups = {};
-  protected String[] m_afterGroups = {};
-  private boolean m_isAlwaysRun;
-  
-  // Methods are not serialized, but we can serialize their hashCode  
-  private final String m_signature;
-  private final String m_methodName;
-  // If a depended group is not found
-  private String m_missingGroup;
-  private String m_description = null;
-  protected IAtomicInteger m_currentInvocationCount = ThreadUtil.createAtomicInteger(0);
-  private int m_parameterInvocationCount = 1;
-  private IRetryAnalyzer m_retryAnalyzer = null;
-  private boolean m_skipFailedInvocations = true;
-  private long m_invocationTimeOut = 0L;
-
-  private List<Integer> m_invocationNumbers = Lists.newArrayList();
-  private List<Integer> m_failedInvocationNumbers = Lists.newArrayList();
-  
-  private boolean m_ignoreMissingDependencies;
-  private int m_priority;
-
-  /**
-   * Constructs a <code>BaseTestMethod</code> TODO cquezel JavaDoc.
-   *
-   * @param method
-   * @param annotationFinder
-   */
-  public BaseTestMethod(Method method, IAnnotationFinder annotationFinder) {
-    m_methodClass = method.getDeclaringClass();
-    m_method = method;
-    m_methodName = m_method.getName();
-    m_annotationFinder = annotationFinder;
-    m_signature = initSignature();
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAlwaysRun() {
-    return m_isAlwaysRun;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param alwaysRun
-   */
-  protected void setAlwaysRun(boolean alwaysRun) {
-    m_isAlwaysRun = alwaysRun;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public Class<?> getRealClass() {
-    return m_methodClass;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public ITestClass getTestClass() {
-    return m_testClass;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setTestClass(ITestClass tc) {
-    assert null != tc;
-    if (! tc.getRealClass().equals(m_method.getDeclaringClass())) {
-      assert m_method.getDeclaringClass().isAssignableFrom(tc.getRealClass()) :
-        "\nMISMATCH : " + tc.getRealClass() + " " + m_method.getDeclaringClass();
-    }
-    m_testClass = tc;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param o
-   * @return
-   */
-  public int compareTo(Object o) {
-    int result = -2;
-    Class<?> thisClass = getRealClass();
-    Class<?> otherClass = ((ITestNGMethod) o).getRealClass();
-    if (thisClass.isAssignableFrom(otherClass)) 
-      result = -1;
-    else if (otherClass.isAssignableFrom(thisClass)) 
-      result = 1;
-    else if (equals(o)) 
-      result = 0;
-    
-    return result;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public Method getMethod() {
-    return m_method;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getMethodName() {
-    return m_methodName;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public Object[] getInstances() {
-    return m_testClass.getInstances(false);
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public long[] getInstanceHashCodes() {
-    return m_testClass.getInstanceHashCodes();
-  }
-
-  /**
-   * {@inheritDoc}
-   * @return the addition of groups defined on the class and on this method.
-   */
-  public String[] getGroups() {
-    return m_groups;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getGroupsDependedUpon() {
-    return m_groupsDependedUpon;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getMethodsDependedUpon() {
-    return m_methodsDependedUpon;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isTest() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeSuiteConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterSuiteConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeTestConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterTestConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeGroupsConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterGroupsConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeClassConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterClassConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isBeforeMethodConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean isAfterMethodConfiguration() {
-    return false;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public long getTimeOut() {
-    return 0L;
-  }
-  
-  /**
-   * {@inheritDoc}  
-   * @return the number of times this method needs to be invoked.
-   */
-  public int getInvocationCount() {
-    return 1;
-  }
-  
-  /**
-   * No-op.
-   */
-  public void setInvocationCount(int counter) {
-  }
-
-  /**
-   * {@inheritDoc} Default value for successPercentage.
-   */
-  public int getSuccessPercentage() {
-    return 100;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getId() {
-    return m_id;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setId(String id) {
-    m_id = id;
-  }
-  
-
-  /**
-   * {@inheritDoc} 
-   * @return Returns the date.
-   */
-  public long getDate() {
-    return m_date;
-  }
-
-  /**
-   * {@inheritDoc} 
-   * @param date The date to set.
-   */
-  public void setDate(long date) {
-    m_date = date;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public boolean canRunFromClass(IClass testClass) {
-    return m_methodClass.isAssignableFrom(testClass.getRealClass());
-  }
-
-  /**
-   * {@inheritDoc} Compares two BaseTestMethod using the test class then the associated 
-   * Java Method. 
-   */
-  @Override
-  public boolean equals(Object obj) {
-    // TODO CQ document why this try block exists.
-    try {
-      BaseTestMethod other = (BaseTestMethod) obj;
-      
-      boolean isEqual = m_testClass == null ? other.m_testClass == null
-          : m_testClass.getRealClass().equals(other.m_testClass.getRealClass());
-      
-      return isEqual && m_method.equals(other.m_method);
-    }
-    catch(Exception ex) {
-      return false;
-    }
-  }
-  
-  /**
-   * {@inheritDoc} This implementation returns the associated Java Method's hash code.
-   * @Return the associated Java Method's hash code. 
-   */
-  @Override
-  public int hashCode() {
-    return m_method.hashCode();
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param annotationClass
-   */
-  protected void initGroups(Class<?> annotationClass) {
-    //
-    // Init groups
-    //
-    {
-      ITestOrConfiguration annotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod(),
-          annotationClass);
-      ITestOrConfiguration classAnnotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod().getDeclaringClass(),
-          annotationClass);
-      
-      setGroups(getStringArray(null != annotation ? annotation.getGroups() : null, 
-          null != classAnnotation ? classAnnotation.getGroups() : null));    
-    }
-    
-    //
-    // Init groups depended upon
-    //
-    {
-      ITestOrConfiguration annotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod(),
-          annotationClass);
-      ITestOrConfiguration classAnnotation = 
-        (ITestOrConfiguration) getAnnotationFinder().findAnnotation(getMethod().getDeclaringClass(),
-          annotationClass);
-  
-      setGroupsDependedUpon(
-          getStringArray(null != annotation ? annotation.getDependsOnGroups() : null, 
-          null != classAnnotation ? classAnnotation.getDependsOnGroups() : null));
-      
-      String[] methodsDependedUpon =
-        getStringArray(null != annotation ? annotation.getDependsOnMethods() : null, 
-        null != classAnnotation ? classAnnotation.getDependsOnMethods() : null);
-      // Qualify these methods if they don't have a package
-      for (int i = 0; i < methodsDependedUpon.length; i++) {
-        String m = methodsDependedUpon[i];
-        if (m.indexOf(".") < 0) {
-          m = MethodHelper.calculateMethodCanonicalName(m_methodClass, methodsDependedUpon[i]); 
-          methodsDependedUpon[i] = m != null ? m : methodsDependedUpon[i];            
-        }
-      }
-      setMethodsDependedUpon(methodsDependedUpon);
-    }
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  protected IAnnotationFinder getAnnotationFinder() {
-    return m_annotationFinder;
-  }
-  
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  protected IClass getIClass() {
-    return m_testClass;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  protected String getSignature() {
-    return m_signature;
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @return
-   */
-  private String initSignature() {
-    Method m = getMethod();
-    String cls = m.getDeclaringClass().getName();
-    StringBuffer result = new StringBuffer(cls + "." + m.getName() + "(");
-    int i = 0;
-    for (Class<?> p : m.getParameterTypes()) {
-      if (i++ > 0) result.append(", ");
-      result.append(p.getName());
-    }
-    result.append(")");
-
-    return result.toString();
-    
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public String toString() {
-    return getSignature();
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param methodArray
-   * @param classArray
-   * @return
-   */
-  protected String[] getStringArray(String[] methodArray, String[] classArray) {
-    Map<String, String> vResult = Maps.newHashMap();
-    if (null != methodArray) {
-      for (String m : methodArray) {
-        vResult.put(m, m);
-      }
-    }
-    if (null != classArray) {
-      for (String m : classArray) {
-        vResult.put(m, m);
-      }
-    }
-    
-    return vResult.values().toArray(new String[vResult.size()]);
-  }
-
-  protected void setGroups(String[] groups) {
-    m_groups = groups;
-  }
-  
-  protected void setGroupsDependedUpon(String[] groups) {
-    m_groupsDependedUpon = groups;
-  }
-  
-  protected void setMethodsDependedUpon(String[] methods) {
-    m_methodsDependedUpon = methods;
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  public void addMethodDependedUpon(String method) {
-    String[] newMethods = new String[m_methodsDependedUpon.length + 1];
-    newMethods[0] = method;
-    for (int i =1; i < newMethods.length; i++) {
-      newMethods[i] = m_methodsDependedUpon[i - 1];
-    }
-    m_methodsDependedUpon = newMethods;
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[BaseTestMethod] " + s);
-  }
-
-  /** Compares two ITestNGMethod by date. */
-  public static final Comparator<?> DATE_COMPARATOR = new Comparator<Object>() {
-    public int compare(Object o1, Object o2) {
-      try {
-        ITestNGMethod m1 = (ITestNGMethod) o1;
-        ITestNGMethod m2 = (ITestNGMethod) o2;
-        return (int) (m1.getDate() - m2.getDate());
-      }
-      catch(Exception ex) {
-        return 0; // TODO CQ document this logic
-      }
-    }
-  };
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getMissingGroup() {
-    return m_missingGroup;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public void setMissingGroup(String group) {
-    m_missingGroup = group;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public int getThreadPoolSize() {
-    return 0;
-  }
-
-  /**
-   * No-op.
-   * @param threadPoolSize
-   */
-  public void setThreadPoolSize(int threadPoolSize) {
-  }
-
-  /**
-   * TODO cquezel JavaDoc.
-   *
-   * @param description
-   */
-  public void setDescription(String description) {
-    m_description = description;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String getDescription() {
-    return m_description;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getBeforeGroups() {
-    return m_beforeGroups;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public String[] getAfterGroups() {
-    return m_afterGroups;
-  }
-  
-  public void incrementCurrentInvocationCount() {
-    m_currentInvocationCount.incrementAndGet();
-  }
-  
-  public int getCurrentInvocationCount() {
-    return m_currentInvocationCount.get();
-  }
-
-  public void setParameterInvocationCount(int n) {
-    m_parameterInvocationCount = n;
-  }
-  
-  public int getParameterInvocationCount() {
-    return m_parameterInvocationCount;
-  }  
-  
-  public abstract ITestNGMethod clone();
-  
-  public IRetryAnalyzer getRetryAnalyzer() {
-    return m_retryAnalyzer;
-  }
-  
-  public void setRetryAnalyzer(IRetryAnalyzer retryAnalyzer) {
-    m_retryAnalyzer = retryAnalyzer;
-  }
-
-  public boolean skipFailedInvocations() {
-    return m_skipFailedInvocations;
-  }
-  
-  public void setSkipFailedInvocations(boolean s) {
-    m_skipFailedInvocations = s;
-  }
-  
-  public void setInvocationTimeOut(long timeOut) {
-    m_invocationTimeOut = timeOut;
-  }
-
-  public long getInvocationTimeOut() {
-    return m_invocationTimeOut;
-  }
-
-  public boolean ignoreMissingDependencies() {
-    return m_ignoreMissingDependencies;
-  }
-
-  public void setIgnoreMissingDependencies(boolean i) {
-    m_ignoreMissingDependencies = i;
-  }
-
-  public List<Integer> getInvocationNumbers() {
-    return m_invocationNumbers;
-  }
-
-  public void setInvocationNumbers(List<Integer> numbers) {
-    m_invocationNumbers = numbers;
-  }
-
-  public List<Integer> getFailedInvocationNumbers() {
-    return m_failedInvocationNumbers;
-  }
-
-  public void addFailedInvocationNumber(int number) {
-    m_failedInvocationNumbers.add(number);
-  }
-
-  public int getPriority() {
-    return m_priority;
-  }
-  
-  public void setPriority(int priority) {
-    m_priority = priority;
-  }
-}
diff --git a/src/org/testng/internal/ClassHelper.java b/src/org/testng/internal/ClassHelper.java
deleted file mode 100644
index 5d9f814..0000000
--- a/src/org/testng/internal/ClassHelper.java
+++ /dev/null
@@ -1,412 +0,0 @@
-package org.testng.internal;
-
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.IClass;
-import org.testng.IMethodSelector;
-import org.testng.IObjectFactory;
-import org.testng.TestNGException;
-import org.testng.TestRunner;
-import org.testng.annotations.IAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.IParametersAnnotation;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.junit.IJUnitTestRunner;
-import org.testng.xml.XmlTest;
-
-/**
- * Utility class for different class manipulations.
- */
-public final class ClassHelper {
-  private static final String JUNIT_TESTRUNNER= "org.testng.junit.JUnitTestRunner";
-
-  /** Hide constructor. */
-  private ClassHelper() {
-    // Hide Constructor
-  }
-  
-  public static <T> T newInstance(Class<T> clazz) {
-    try {
-      T instance = clazz.newInstance();
-
-      return instance;
-    }
-    catch(IllegalAccessException iae) {
-      throw new TestNGException("Class " + clazz.getName()
-          + " does not have a no-args constructor", iae);
-    }
-    catch(InstantiationException ie) {
-      throw new TestNGException("Cannot instantiate class " + clazz.getName(), ie);
-    }
-    catch(ExceptionInInitializerError eiierr) {
-      throw new TestNGException("An exception occurred in static initialization of class "
-          + clazz.getName(), eiierr);
-    }
-    catch(SecurityException se) {
-      throw new TestNGException(se);
-    }
-  }
-  
-  /**
-   * Tries to load the specified class using the context ClassLoader or if none,
-   * than from the default ClassLoader. This method differs from the standard 
-   * class loading methods in that it does not throw an exception if the class 
-   * is not found but returns null instead.
-   *  
-   * @param className the class name to be loaded.
-   *
-   * @return the class or null if the class is not found.
-   */
-  public static Class<?> forName(final String className) {
-    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-    if (classLoader != null) {
-      try {
-        return classLoader.loadClass(className);
-      }
-      catch(Exception ex) {
-        logInstantiationError(className, ex);
-      }
-    }
-    
-    try {
-      return Class.forName(className);
-    }
-    catch(ClassNotFoundException cnfe) {
-      logInstantiationError(className, cnfe);
-      return null;
-    }
-  }
-
-  private static void logInstantiationError(String className, Exception ex) {
-    Utils.log("ClassHelper", 2, "Could not instantiate " + className + ": "
-        + ex.getMessage());
-  }
-
-  /**
-   * For the given class, returns the method annotated with @Factory or null 
-   * if none is found. This method does not search up the superclass hierarchy.
-   * If more than one method is @Factory annotated, a TestNGException is thrown. 
-   * @param cls The class to search for the @Factory annotation.
-   * @param finder The finder (JDK 1.4 or JDK 5.0+) use to search for the annotation. 
-   *
-   * @return the @Factory <CODE>method</CODE> or null
-   *  
-   * FIXME: @Factory method must be public!
-   * TODO rename this method to findDeclaredFactoryMethod
-   */
-  public static Method findFactoryMethod(Class<?> cls, IAnnotationFinder finder) {
-    Method result = null;
-
-    for (Method method : cls.getMethods()) {
-      IAnnotation f = finder.findAnnotation(method, IFactoryAnnotation.class);
-
-      if (null != f) {
-        if (null != result) {
-          throw new TestNGException(cls.getName() + ":  only one @Factory method allowed");
-        }
-        result = method;
-      }
-    }
-
-    // If we didn't find anything, look for nested classes
-//    if (null == result) {
-//      Class[] subClasses = cls.getClasses();
-//      for (Class subClass : subClasses) {
-//        result = findFactoryMethod(subClass, finder);
-//        if (null != result) {
-//          break;
-//        }
-//      }
-//    }
-
-    // Found the method, verify that it returns an array of objects
-    // TBD
-
-    return result;
-  }
-
-//  private static void ppp(String s) {
-//    System.out.println("[ClassHelper] " + s);
-//  }
-
-  /**
-   * Extract all callable methods of a class and all its super (keeping in mind
-   * the Java access rules).
-   *
-   * @param clazz
-   * @return
-   */
-  public static Set<Method> getAvailableMethods(Class<?> clazz) {
-    Set<Method> methods = new HashSet<Method>(Arrays.asList(clazz.getDeclaredMethods()));
-
-    Class<?> parent= clazz.getSuperclass();
-
-    while (null != parent) {
-      methods.addAll(extractMethods(clazz, parent, methods));
-      parent= parent.getSuperclass();
-    }
-
-    return methods;
-  }
-
-
-  /**
-   * @param runner
-   * @return
-   */
-  public static IJUnitTestRunner createTestRunner(TestRunner runner) {
-    try {
-      IJUnitTestRunner tr= (IJUnitTestRunner) ClassHelper.forName(JUNIT_TESTRUNNER).newInstance();
-      tr.setTestResultNotifier(runner);
-      
-      return tr;
-    }
-    catch(Exception ex) {
-      throw new TestNGException("Cannot create JUnit runner " + JUNIT_TESTRUNNER, ex);
-    }
-  }
-  
-  private static Set<Method> extractMethods(Class<?> childClass, Class<?> clazz, 
-      Set<Method> collected) {
-    Set<Method> methods = new HashSet<Method>();
-
-    Method[] declaredMethods = clazz.getDeclaredMethods();
-
-    Package childPackage = childClass.getPackage();
-    Package classPackage = clazz.getPackage();
-    boolean isSamePackage = false;
-
-    if ((null == childPackage) && (null == classPackage)) {
-      isSamePackage = true;
-    }
-    if ((null != childPackage) && (null != classPackage)) {
-      isSamePackage = childPackage.getName().equals(classPackage.getName());
-    }
-
-    for (Method method : declaredMethods) {
-      int methodModifiers = method.getModifiers();
-      if (Modifier.isPublic(methodModifiers)
-        || Modifier.isProtected(methodModifiers)) {
-        if (!isOverridden(method, collected)) {
-          methods.add(method);
-        }
-      }
-      else if (isSamePackage && !Modifier.isPrivate(methodModifiers)) {
-        if (!isOverridden(method, collected)) {
-          methods.add(method);
-        }
-      }
-    }
-
-    return methods;
-  }
-
-  private static boolean isOverridden(Method method, Set<Method> collectedMethods) {
-    Class<?> methodClass = method.getDeclaringClass();
-    Class<?>[] methodParams = method.getParameterTypes();
-    
-    for (Method m: collectedMethods) {
-      Class<?>[] paramTypes = m.getParameterTypes();
-      if (method.getName().equals(m.getName())
-         && methodClass.isAssignableFrom(m.getDeclaringClass())
-         && methodParams.length == paramTypes.length) {
-        
-        boolean sameParameters = true;
-        for (int i= 0; i < methodParams.length; i++) {
-          if (!methodParams[i].equals(paramTypes[i])) {
-            sameParameters = false;
-            break;
-          }
-        }
-        
-        if (sameParameters) {
-          return true;
-        }
-      }
-    }
-    
-    return false;
-  }
-  
-  public static IMethodSelector createSelector(org.testng.xml.XmlMethodSelector selector) {
-    try {
-      Class<?> cls = Class.forName(selector.getClassName());
-      return (IMethodSelector) cls.newInstance();
-    }
-    catch(Exception ex) {
-      throw new TestNGException("Couldn't find method selector : " + selector.getClassName(), ex);
-    }
-  }
-
-  /**
-   * Create an instance for the given class.
-   */
-  public static Object createInstance(Class<?> declaringClass,
-                                      Map<Class, IClass> classes,
-                                      XmlTest xmlTest,
-                                      IAnnotationFinder finder,
-                                      IObjectFactory objectFactory) {
-    Object result;
-  
-    try {
-  
-      //
-      // Any annotated constructor?
-      //
-      Constructor<?> constructor = findAnnotatedConstructor(finder, declaringClass);
-      if (null != constructor) {
-        IParametersAnnotation annotation = (IParametersAnnotation) finder.findAnnotation(constructor,
-                                                                     IParametersAnnotation.class);
-  
-        String[] parameterNames = annotation.getValue();
-        Object[] parameters = Parameters.createInstantiationParameters(constructor,
-                                                          "@Parameters",
-                                                          finder,
-                                                          parameterNames,
-                                                          xmlTest.getParameters(),
-                                                          xmlTest.getSuite());
-        result = objectFactory.newInstance(constructor, parameters);
-      }
-  
-      //
-      // No, just try to instantiate the parameterless constructor (or the one
-      // with a String)
-      //
-      else {
-  
-        // If this class is a (non-static) nested class, the constructor contains a hidden
-        // parameter of the type of the enclosing class
-        Class<?>[] parameterTypes = new Class[0];
-        Object[] parameters = new Object[0];
-        Class<?> ec = getEnclosingClass(declaringClass);
-        boolean isStatic = 0 != (declaringClass.getModifiers() & Modifier.STATIC);
-  
-        // Only add the extra parameter if the nested class is not static
-        if ((null != ec) && !isStatic) {
-          parameterTypes = new Class[] { ec };
-  
-          // Create an instance of the enclosing class so we can instantiate
-          // the nested class (actually, we reuse the existing instance).
-          IClass enclosingIClass = classes.get(ec);
-          Object[] enclosingInstances;
-          if (null != enclosingIClass) {
-            enclosingInstances = enclosingIClass.getInstances(false);
-            if ((null == enclosingInstances) || (enclosingInstances.length == 0)) {
-              Object o = objectFactory.newInstance(ec.getConstructor(parameterTypes));
-              enclosingIClass.addInstance(o);
-              enclosingInstances = new Object[] { o };
-            }
-          }
-          else {
-            enclosingInstances = new Object[] { ec.newInstance() };
-          }
-          Object enclosingClassInstance = enclosingInstances[0];
-  
-          // Utils.createInstance(ec, classes, xmlTest, finder);
-          parameters = new Object[] { enclosingClassInstance };
-        } // isStatic
-        Constructor<?> ct = declaringClass.getDeclaredConstructor(parameterTypes);
-        result = objectFactory.newInstance(ct, parameters);
-      }
-    }
-    catch (TestNGException ex) {
-      // We need to pass this along
-      throw ex;
-    }
-    catch (NoSuchMethodException ex) {
-      result = ClassHelper.tryOtherConstructor(declaringClass);
-    }
-    catch (Throwable cause) {
-      // Something else went wrong when running the constructor
-      throw new TestNGException("An error occurred while instantiating class "
-          + declaringClass.getName() + ": " + cause.getMessage(), cause);
-    }
-  
-    return result;
-  }
-  
-  /**
-   * Class.getEnclosingClass() only exists on JDK5, so reimplementing it
-   * here.
-   */
-  private static Class<?> getEnclosingClass(Class<?> declaringClass) {
-    Class<?> result = null;
-
-    String className = declaringClass.getName();
-    int index = className.indexOf("$");
-    if (index != -1) {
-      String ecn = className.substring(0, index);
-      try {
-        result = Class.forName(ecn);
-      }
-      catch (ClassNotFoundException e) {
-        e.printStackTrace();
-      }
-    }
-
-    return result;
-  }
-
-  /**
-   * Find the best constructor given the parameters found on the annotation
-   */
-  private static Constructor<?> findAnnotatedConstructor(IAnnotationFinder finder,
-                                                      Class<?> declaringClass) {
-    Constructor<?>[] constructors = declaringClass.getDeclaredConstructors();
-
-    for (int i = 0; i < constructors.length; i++) {
-      Constructor<?> result = constructors[i];
-      IParametersAnnotation annotation = (IParametersAnnotation)
-          finder.findAnnotation(result, IParametersAnnotation.class);
-
-      if (null != annotation) {
-        String[] parameters = annotation.getValue();
-        Class<?>[] parameterTypes = result.getParameterTypes();
-        if (parameters.length != parameterTypes.length) {
-          throw new TestNGException("Parameter count mismatch:  " + result + "\naccepts "
-                                    + parameterTypes.length
-                                    + " parameters but the @Test annotation declares "
-                                    + parameters.length);
-        }
-        else {
-          return result;
-        }
-      }
-    }
-
-    return null;
-  }
-
-  public static <T> T tryOtherConstructor(Class<T> declaringClass) {
-    T result;
-    try {
-      // Special case for inner classes
-      if (declaringClass.getModifiers() == 0) {
-        return null;
-      }
-
-      Constructor<T> ctor = declaringClass.getConstructor(new Class[] { String.class });
-      result = ctor.newInstance(new Object[] { "Default test name" });
-    }
-    catch (Exception e) {
-      String message = e.getMessage();
-      if ((message == null) && (e.getCause() != null)) {
-        message = e.getCause().getMessage();
-      }
-      String error = "Could not create an instance of class " + declaringClass
-      + ((message != null) ? (": " + message) : "")
-        + ".\nPlease make sure it has a constructor that accepts either a String or no parameter.";
-      throw new TestNGException(error);
-    }
-  
-    return result;
-  }
-}
diff --git a/src/org/testng/internal/ClassImpl.java b/src/org/testng/internal/ClassImpl.java
deleted file mode 100755
index 599621b..0000000
--- a/src/org/testng/internal/ClassImpl.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IClass;
-import org.testng.IObjectFactory;
-import org.testng.ITest;
-import org.testng.collections.Lists;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Implementation of an IClass.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class ClassImpl implements IClass {
-  transient private Class m_class = null;
-  transient private Object m_defaultInstance = null;
-  private XmlTest m_xmlTest = null;
-  transient private IAnnotationFinder m_annotationFinder = null;
-  transient private List<Object> m_instances = Lists.newArrayList();
-  transient private Map<Class, IClass> m_classes = null;
-  private int m_instanceCount;
-  private long[] m_instanceHashCodes;
-  private Object m_instance;
-  private IObjectFactory m_objectFactory;
-  private String m_testName = null;
-
-  public ClassImpl(Class cls, Object instance, Map<Class, IClass> classes,
-      XmlTest xmlTest, IAnnotationFinder annotationFinder, IObjectFactory objectFactory) 
-  {
-    m_class = cls;
-    m_classes = classes;
-    m_xmlTest = xmlTest;
-    m_annotationFinder = annotationFinder;
-    m_instance = instance;
-    m_objectFactory = objectFactory;
-    if (instance instanceof ITest) {
-      m_testName = ((ITest) instance).getTestName();
-    }
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[ClassImpl] " + s);
-  }
-
-  public String getTestName() {
-    return m_testName;
-  }
-
-  public String getName() {
-    return m_class.getName();
-  }
-
-  public Class getRealClass() {
-    return m_class;
-  }
-
-  public int getInstanceCount() {
-    return m_instanceCount;
-  }
-  
-  public long[] getInstanceHashCodes() {
-    return m_instanceHashCodes;
-  }
-  
-  private Object getDefaultInstance() {
-    if (m_defaultInstance == null) {
-      m_defaultInstance = 
-        m_instance != null ? m_instance : 
-          ClassHelper.createInstance(m_class, m_classes, m_xmlTest, m_annotationFinder, m_objectFactory);
-    }
-    
-    return m_defaultInstance;
-  }
-  
-  public Object[] getInstances(boolean create) {
-    Object[] result = {};
-    
-    if (m_xmlTest.isJUnit()) {
-      if (create) {
-        result = new Object[] { 
-          ClassHelper.createInstance(m_class, m_classes, m_xmlTest, m_annotationFinder, m_objectFactory) 
-        };
-      }
-    }
-    else {
-      result = new Object[] { getDefaultInstance() };
-    }
-    if (m_instances.size() > 0) {
-      result = m_instances.toArray(new Object[m_instances.size()]);
-    }
-
-    m_instanceCount = m_instances.size();
-    m_instanceHashCodes = new long[m_instanceCount];
-    for (int i = 0; i < m_instanceCount; i++) {
-      m_instanceHashCodes[i] = m_instances.get(i).hashCode();
-    }
-    return result;
-  }
-    
-  @Override
-  public String toString() {
-    return "[ClassImpl " + m_class.getName() + "]";
-  }
-
-  public void addInstance(Object instance) {
-    m_instances.add(instance);
-  }
-
-}
diff --git a/src/org/testng/internal/ClonedMethod.java b/src/org/testng/internal/ClonedMethod.java
deleted file mode 100755
index acc46b2..0000000
--- a/src/org/testng/internal/ClonedMethod.java
+++ /dev/null
@@ -1,277 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IClass;
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestClass;
-import org.testng.ITestNGMethod;
-import org.testng.collections.Lists;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-public class ClonedMethod implements ITestNGMethod {
-  private static final long serialVersionUID = 1L;
-
-  private ITestNGMethod m_method;
-  private Method m_javaMethod;
-  private String m_id;
-  private int m_currentInvocationCount;
-  private long m_date;
-
-  private List<Integer> m_invocationNumbers = Lists.newArrayList();
-  private List<Integer> m_failedInvocationNumbers = Lists.newArrayList();
-
-  public ClonedMethod(ITestNGMethod method, Method javaMethod) {
-    m_method = method;
-    m_javaMethod = javaMethod;
-  }
-
-  public void addMethodDependedUpon(String methodName) {
-    // nop
-  }
-
-  public boolean canRunFromClass(IClass testClass) {
-    return m_method.canRunFromClass(testClass);
-  }
-
-  public String[] getAfterGroups() {
-    return m_method.getAfterGroups();
-  }
-
-  public String[] getBeforeGroups() {
-    return m_method.getBeforeGroups();
-  }
-
-  public int getCurrentInvocationCount() {
-    return m_currentInvocationCount;
-  }
-
-  public long getDate() {
-    return m_method.getDate();
-  }
-
-  public String getDescription() {
-    return "";
-  }
-
-  public String[] getGroups() {
-    return m_method.getGroups();
-  }
-
-  public String[] getGroupsDependedUpon() {
-    return new String[0];
-  }
-
-  public String getId() {
-    return m_id;
-  }
-
-  public long[] getInstanceHashCodes() {
-    return m_method.getInstanceHashCodes();
-  }
-
-  public Object[] getInstances() {
-    return m_method.getInstances();
-  }
-
-  public int getInvocationCount() {
-    return 1;
-  }
-
-  public long getInvocationTimeOut() {
-    return m_method.getInvocationTimeOut();
-  }
-
-  public Method getMethod() {
-    return m_javaMethod;
-  }
-
-  public String getMethodName() {
-    return m_javaMethod.getName();
-  }
-
-  public String[] getMethodsDependedUpon() {
-    return new String[0];
-  }
-
-  public String getMissingGroup() {
-    return null;
-  }
-
-  public int getParameterInvocationCount() {
-    return 1;
-  }
-
-  public Class getRealClass() {
-    return m_javaMethod.getClass();
-  }
-
-  public IRetryAnalyzer getRetryAnalyzer() {
-    return m_method.getRetryAnalyzer();
-  }
-
-  public int getSuccessPercentage() {
-    return 100;
-  }
-
-  public ITestClass getTestClass() {
-    return m_method.getTestClass();
-  }
-
-  public int getThreadPoolSize() {
-    return m_method.getThreadPoolSize();
-  }
-
-  public long getTimeOut() {
-    return m_method.getTimeOut();
-  }
-
-  public boolean ignoreMissingDependencies() {
-    return false;
-  }
-
-  public void incrementCurrentInvocationCount() {
-    m_currentInvocationCount++;
-  }
-
-  public boolean isAfterClassConfiguration() {
-    return false;
-  }
-
-  public boolean isAfterGroupsConfiguration() {
-    return false;
-  }
-
-  public boolean isAfterMethodConfiguration() {
-    return false;
-  }
-
-  public boolean isAfterSuiteConfiguration() {
-    return false;
-  }
-
-  public boolean isAfterTestConfiguration() {
-    return false;
-  }
-
-  public boolean isAlwaysRun() {
-    return false;
-  }
-
-  public boolean isBeforeClassConfiguration() {
-    return false;
-  }
-
-  public boolean isBeforeGroupsConfiguration() {
-    return false;
-  }
-
-  public boolean isBeforeMethodConfiguration() {
-    return false;
-  }
-
-  public boolean isBeforeSuiteConfiguration() {
-    return false;
-  }
-
-  public boolean isBeforeTestConfiguration() {
-    return false;
-  }
-
-  public boolean isTest() {
-    return true;
-  }
-
-  public void setDate(long date) {
-    m_date = date;
-  }
-
-  public void setId(String id) {
-    m_id = id;
-  }
-
-  public void setIgnoreMissingDependencies(boolean ignore) {
-  }
-
-  public void setInvocationCount(int count) {
-  }
-
-  public void setMissingGroup(String group) {
-  }
-
-  public void setParameterInvocationCount(int n) {
-  }
-
-  public void setRetryAnalyzer(IRetryAnalyzer retryAnalyzer) {
-  }
-
-  public void setSkipFailedInvocations(boolean skip) {
-  }
-
-  public void setTestClass(ITestClass cls) {
-  }
-
-  public void setThreadPoolSize(int threadPoolSize) {
-  }
-
-  public boolean skipFailedInvocations() {
-    return false;
-  }
-
-  public int compareTo(Object o) {
-    int result = -2;
-    Class<?> thisClass = getRealClass();
-    Class<?> otherClass = ((ITestNGMethod) o).getRealClass();
-    if (thisClass.isAssignableFrom(otherClass)) 
-      result = -1;
-    else if (otherClass.isAssignableFrom(thisClass)) 
-      result = 1;
-    else if (equals(o)) 
-      result = 0;
-    
-    return result;
-  }
-
-  public ClonedMethod clone() {
-    return new ClonedMethod(m_method, m_javaMethod);
-  }
-
-  @Override
-  public String toString() {
-    Method m = getMethod();
-    String cls = m.getDeclaringClass().getName();
-    StringBuffer result = new StringBuffer(cls + "." + m.getName() + "(");
-    int i = 0;
-    for (Class<?> p : m.getParameterTypes()) {
-      if (i++ > 0) result.append(", ");
-      result.append(p.getName());
-    }
-    result.append(")");
-
-    return result.toString();
-  }
-
-  public List<Integer> getInvocationNumbers() {
-    return m_invocationNumbers;
-  }
-
-  public void setInvocationNumbers(List<Integer> count) {
-    m_invocationNumbers = count;
-  }
-
-  public List<Integer> getFailedInvocationNumbers() {
-    return m_failedInvocationNumbers;
-  }
-
-  public void addFailedInvocationNumber(int number) {
-    m_failedInvocationNumbers.add(number);
-  }
-
-  public int getPriority() {
-    return m_method.getPriority();
-  }
-
-  public void setPriority(int priority) {
-    // ignored
-  }
-}
diff --git a/src/org/testng/internal/Configuration.java b/src/org/testng/internal/Configuration.java
deleted file mode 100644
index 4f3de97..0000000
--- a/src/org/testng/internal/Configuration.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.testng.internal;
-
-import com.google.inject.Inject;
-import com.google.inject.internal.Nullable;
-
-import org.testng.IObjectFactory;
-import org.testng.internal.annotations.IAnnotationFinder;
-
-public class Configuration implements IConfiguration {
-
-  @Inject
-  IAnnotationFinder m_annotationFinder;
-  
-  @Inject
-  @Nullable
-  IObjectFactory m_objectFactory;
-
-  public IAnnotationFinder getAnnotationFinder() {
-    return m_annotationFinder;
-  }
-
-  public IObjectFactory getObjectFactory() {
-    return m_objectFactory;
-  }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/ConfigurationGroupMethods.java b/src/org/testng/internal/ConfigurationGroupMethods.java
deleted file mode 100755
index b42d0e1..0000000
--- a/src/org/testng/internal/ConfigurationGroupMethods.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.testng.internal;
-
-
-import org.testng.ITestNGMethod;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class wraps access to beforeGroups and afterGroups methods,
- * since they are passed around the various invokers and potentially
- * modified in different threads.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- * @since 5.3 (Mar 2, 2006)
- */
-public class ConfigurationGroupMethods implements Serializable {
-  /** Use serialVersionUID for interoperability. */
-  private final static long serialVersionUID= 1660798519864898480L;
-
-  /** The list of beforeGroups methods keyed by the name of the group */
-  private final Map<String, List<ITestNGMethod>> m_beforeGroupsMethods;
-
-  /** The list of afterGroups methods keyed by the name of the group */
-  private final Map<String, List<ITestNGMethod>> m_afterGroupsMethods;
-
-  /** The list of all test methods */
-  private final ITestNGMethod[] m_allMethods;
-
-  /**A map that returns the last method belonging to the given group */
-  private Map<String, List<ITestNGMethod>> m_afterGroupsMap= null;
-
-  public ConfigurationGroupMethods(ITestNGMethod[] allMethods,
-                                   Map<String, List<ITestNGMethod>> beforeGroupsMethods,
-                                   Map<String, List<ITestNGMethod>> afterGroupsMethods) 
-  {
-    m_allMethods= allMethods;
-    m_beforeGroupsMethods= beforeGroupsMethods;
-    m_afterGroupsMethods= afterGroupsMethods;
-  }
-  
-  public Map<String, List<ITestNGMethod>> getBeforeGroupsMethods() {
-    return m_beforeGroupsMethods;
-  }
-
-  public Map<String, List<ITestNGMethod>> getAfterGroupsMethods() {
-    return m_afterGroupsMethods;
-  }
-
-  /**
-   * @return true if the passed method is the last to run for the group.
-   * This method is used to figure out when is the right time to invoke
-   * afterGroups methods.
-   */
-  public synchronized boolean isLastMethodForGroup(String group, ITestNGMethod method) {
-
-    // If we have more invocation to do, this is not the last one yet
-    int invocationCount= method.getCurrentInvocationCount();
-    if(invocationCount < (method.getInvocationCount() * method.getParameterInvocationCount())) {
-      return false;
-    }
-
-    // Lazy initialization since we might never be called
-    if(m_afterGroupsMap == null) {
-      m_afterGroupsMap= initializeAfterGroupsMap();
-    }
-
-    List<ITestNGMethod> methodsInGroup= m_afterGroupsMap.get(group);
-    
-    if(null == methodsInGroup || methodsInGroup.isEmpty()) return false;
-    
-    methodsInGroup.remove(method);
-    
-    // Note:  == is not good enough here as we may work with ITestNGMethod clones
-    return methodsInGroup.isEmpty();
-
-  }
-
-  private synchronized Map<String, List<ITestNGMethod>> initializeAfterGroupsMap() {
-    Map<String, List<ITestNGMethod>> result= Maps.newHashMap();
-    for(ITestNGMethod m : m_allMethods) {
-      String[] groups= m.getGroups();
-      for(String g : groups) {
-        List<ITestNGMethod> methodsInGroup= result.get(g);
-        if(null == methodsInGroup) {
-          methodsInGroup= Lists.newArrayList();
-          result.put(g, methodsInGroup);
-        }
-        methodsInGroup.add(m);
-      }
-    }
-
-    return result;
-  }
-  
-  public synchronized void removeBeforeMethod(String group, ITestNGMethod method) {
-    List<ITestNGMethod> methods= m_beforeGroupsMethods.get(group);
-    if(methods != null) {
-      Object success= methods.remove(method);
-      if(success == null) {
-        log("Couldn't remove beforeGroups method " + method + " for group " + group);
-      }
-    }
-    else {
-      log("Couldn't find any beforeGroups method for group " + group);
-    }
-  }
-
-  private void log(String string) {
-    Utils.log("ConfigurationGroupMethods", 2, string);
-  }
-
-  synchronized public Map<String, List<ITestNGMethod>> getBeforeGroupsMap() {
-    return m_beforeGroupsMethods;
-  }
-
-  synchronized public Map<String, List<ITestNGMethod>> getAfterGroupsMap() {
-    return m_afterGroupsMethods;
-  }
-
-  synchronized public void removeBeforeGroups(String[] groups) {
-    for(String group : groups) {
-//      log("Removing before group " + group);
-      m_beforeGroupsMethods.remove(group);
-    }
-  }
-
-  synchronized public void removeAfterGroups(Collection<String> groups) {
-    for(String group : groups) {
-//      log("Removing before group " + group);
-      m_afterGroupsMethods.remove(group);
-    }
-    
-  }
-
-}
diff --git a/src/org/testng/internal/ConfigurationMethod.java b/src/org/testng/internal/ConfigurationMethod.java
deleted file mode 100755
index c91366f..0000000
--- a/src/org/testng/internal/ConfigurationMethod.java
+++ /dev/null
@@ -1,396 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestNGMethod;
-import org.testng.annotations.IAnnotation;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.ConfigurationAnnotation;
-import org.testng.internal.annotations.IAfterClass;
-import org.testng.internal.annotations.IAfterGroups;
-import org.testng.internal.annotations.IAfterMethod;
-import org.testng.internal.annotations.IAfterSuite;
-import org.testng.internal.annotations.IAfterTest;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.IBeforeClass;
-import org.testng.internal.annotations.IBeforeGroups;
-import org.testng.internal.annotations.IBeforeMethod;
-import org.testng.internal.annotations.IBeforeSuite;
-import org.testng.internal.annotations.IBeforeTest;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-
-public class ConfigurationMethod extends BaseTestMethod {
-  private final boolean m_isBeforeSuiteConfiguration;
-  private final boolean m_isAfterSuiteConfiguration;
-
-  private final boolean m_isBeforeTestConfiguration;
-  private final boolean m_isAfterTestConfiguration;
-  
-  private final boolean m_isBeforeClassConfiguration;
-  private final boolean m_isAfterClassConfiguration;
-
-  private final boolean m_isBeforeMethodConfiguration;
-  private final boolean m_isAfterMethodConfiguration;
-
-  private boolean m_inheritGroupsFromTestClass = false;
-
-  private ConfigurationMethod(Method method, 
-                              IAnnotationFinder annotationFinder,
-                              boolean isBeforeSuite,
-                              boolean isAfterSuite,
-                              boolean isBeforeTest,
-                              boolean isAfterTest,
-                              boolean isBeforeClass, 
-                              boolean isAfterClass,
-                              boolean isBeforeMethod, 
-                              boolean isAfterMethod,
-                              String[] beforeGroups,
-                              String[] afterGroups,
-                              boolean initialize)
-  {
-    super(method, annotationFinder);
-    if(initialize) {
-      init();
-    }
-    
-    m_isBeforeSuiteConfiguration = isBeforeSuite;
-    m_isAfterSuiteConfiguration = isAfterSuite;
-
-    m_isBeforeTestConfiguration = isBeforeTest;
-    m_isAfterTestConfiguration = isAfterTest;
-    
-    m_isBeforeClassConfiguration = isBeforeClass;
-    m_isAfterClassConfiguration = isAfterClass;
-
-    m_isBeforeMethodConfiguration = isBeforeMethod;
-    m_isAfterMethodConfiguration = isAfterMethod;
-    
-    m_beforeGroups = beforeGroups;
-    m_afterGroups = afterGroups;
-    
-  }
-  
-  public ConfigurationMethod(Method method, 
-                             IAnnotationFinder annotationFinder,
-                             boolean isBeforeSuite,
-                             boolean isAfterSuite,
-                             boolean isBeforeTest,
-                             boolean isAfterTest,
-                             boolean isBeforeClass, 
-                             boolean isAfterClass,
-                             boolean isBeforeMethod, 
-                             boolean isAfterMethod,
-                             String[] beforeGroups,
-                             String[] afterGroups) 
-  {
-    this(method, annotationFinder, isBeforeSuite, isAfterSuite, isBeforeTest, isAfterTest,
-        isBeforeClass, isAfterClass, isBeforeMethod, isAfterMethod, beforeGroups, afterGroups, true);
-  }
-
-  
-  public static ITestNGMethod[] createSuiteConfigurationMethods(ITestNGMethod[] methods,
-                                                                IAnnotationFinder annotationFinder,
-                                                                boolean isBefore) {
-    ITestNGMethod[] result = new ITestNGMethod[methods.length];
-    
-    for(int i = 0; i < methods.length; i++) {
-      result[i] = new ConfigurationMethod(methods[i].getMethod(),
-                                          annotationFinder,
-                                          isBefore,
-                                          !isBefore,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          new String[0],
-                                          new String[0]);
-    }
-    
-    return result;
-  }
-
-  public static ITestNGMethod[] createTestConfigurationMethods(ITestNGMethod[] methods,
-                                                               IAnnotationFinder annotationFinder,
-                                                               boolean isBefore) {
-    ITestNGMethod[] result = new ITestNGMethod[methods.length];
-    
-    for(int i = 0; i < methods.length; i++) {
-      result[i] = new ConfigurationMethod(methods[i].getMethod(),
-                                          annotationFinder,
-                                          false,
-                                          false,
-                                          isBefore,
-                                          !isBefore,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          new String[0],
-                                          new String[0]);
-    }
-    
-    return result;
-  }
-
-  public static ITestNGMethod[] createClassConfigurationMethods(ITestNGMethod[] methods,
-                                                                IAnnotationFinder annotationFinder,
-                                                                boolean isBefore) 
-  {
-    ITestNGMethod[] result = new ITestNGMethod[methods.length];
-    
-    for(int i = 0; i < methods.length; i++) {
-      result[i] = new ConfigurationMethod(methods[i].getMethod(),
-                                          annotationFinder,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          isBefore,
-                                          !isBefore,
-                                          false,
-                                          false,
-                                          new String[0],
-                                          new String[0]);
-    }
-    
-    return result;
-  }
-  
-  public static ITestNGMethod[] createBeforeConfigurationMethods(ITestNGMethod[] methods, 
-      IAnnotationFinder annotationFinder, boolean isBefore) 
-  {
-    ITestNGMethod[] result = new ITestNGMethod[methods.length];
-    for(int i = 0; i < methods.length; i++) {
-      result[i] = new ConfigurationMethod(methods[i].getMethod(),
-                                          annotationFinder,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          isBefore ? methods[i].getBeforeGroups() : new String[0],
-                                          new String[0]);
-      }
-    
-    return result;
-  }
-
-  public static ITestNGMethod[] createAfterConfigurationMethods(ITestNGMethod[] methods, 
-      IAnnotationFinder annotationFinder, boolean isBefore) 
-  {
-    ITestNGMethod[] result = new ITestNGMethod[methods.length];
-    for(int i = 0; i < methods.length; i++) {
-      result[i] = new ConfigurationMethod(methods[i].getMethod(),
-                                          annotationFinder,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          new String[0],
-                                          isBefore ? new String[0] : methods[i].getAfterGroups());
-      }
-    
-    return result;
-  }
-  
-  public static ITestNGMethod[] createTestMethodConfigurationMethods(ITestNGMethod[] methods,
-                                                                     IAnnotationFinder annotationFinder,
-                                                                     boolean isBefore) {
-    ITestNGMethod[] result = new ITestNGMethod[methods.length];
-    
-    for(int i = 0; i < methods.length; i++) {
-      result[i] = new ConfigurationMethod(methods[i].getMethod(),
-                                          annotationFinder,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          false,
-                                          isBefore,
-                                          !isBefore,
-                                          new String[0],
-                                          new String[0]);
-    }
-    
-    return result;
-  }
-  
-  /**
-   * @return Returns the isAfterClassConfiguration.
-   */
-  @Override
-  public boolean isAfterClassConfiguration() {
-    return m_isAfterClassConfiguration;
-  }
-  /**
-   * @return Returns the isAfterMethodConfiguration.
-   */
-  @Override
-  public boolean isAfterMethodConfiguration() {
-    return m_isAfterMethodConfiguration;
-  }
-  /**
-   * @return Returns the isBeforeClassConfiguration.
-   */
-  @Override
-  public boolean isBeforeClassConfiguration() {
-    return m_isBeforeClassConfiguration;
-  }
-  /**
-   * @return Returns the isBeforeMethodConfiguration.
-   */
-  @Override
-  public boolean isBeforeMethodConfiguration() {
-    return m_isBeforeMethodConfiguration;
-  }
-  
-
-  /**
-   * @return Returns the isAfterSuiteConfiguration.
-   */
-  @Override
-  public boolean isAfterSuiteConfiguration() {
-    return m_isAfterSuiteConfiguration;
-  }
-  
-  /**
-   * @return Returns the isBeforeSuiteConfiguration.
-   */
-  @Override
-  public boolean isBeforeSuiteConfiguration() {
-    return m_isBeforeSuiteConfiguration;
-  }
-
-  @Override
-  public boolean isBeforeTestConfiguration() {
-    return m_isBeforeTestConfiguration;
-  }
-
-  @Override
-  public boolean isAfterTestConfiguration() {
-    return m_isAfterTestConfiguration;
-  }
-  
-  public boolean isBeforeGroupsConfiguration() {
-    return m_beforeGroups != null && m_beforeGroups.length > 0;
-  }
-
-  public boolean isAfterGroupsConfiguration() {
-    return m_afterGroups != null && m_afterGroups.length > 0;
-  }
-
-  private boolean inheritGroupsFromTestClass() {
-    return m_inheritGroupsFromTestClass;
-  }
-  
-  private void init() {
-    IAnnotation a = AnnotationHelper.findConfiguration(m_annotationFinder, m_method); 
-    IConfigurationAnnotation annotation = (IConfigurationAnnotation) a;
-    if (a != null) {
-      m_inheritGroupsFromTestClass = annotation.getInheritGroups();
-      setDescription(annotation.getDescription());
-    }
-
-    if (annotation != null && annotation.isFakeConfiguration()) {
-     if (annotation.getBeforeSuite()) initGroups(IBeforeSuite.class);  
-     if (annotation.getAfterSuite()) initGroups(IAfterSuite.class);  
-     if (annotation.getBeforeTest()) initGroups(IBeforeTest.class);  
-     if (annotation.getAfterTest()) initGroups(IAfterTest.class);  
-     if (annotation.getBeforeGroups().length != 0) initGroups(IBeforeGroups.class);  
-     if (annotation.getAfterGroups().length != 0) initGroups(IAfterGroups.class);
-     if (annotation.getBeforeTestClass()) initGroups(IBeforeClass.class);  
-     if (annotation.getAfterTestClass()) initGroups(IAfterClass.class);  
-     if (annotation.getBeforeTestMethod()) initGroups(IBeforeMethod.class);  
-     if (annotation.getAfterTestMethod()) initGroups(IAfterMethod.class);  
-    }
-    else {
-      initGroups(IConfigurationAnnotation.class);
-    }
-
-    // If this configuration method has inherit-groups=true, add the groups
-    // defined in the @Test class
-    if (inheritGroupsFromTestClass()) {
-      ITestAnnotation classAnnotation = 
-        (ITestAnnotation) m_annotationFinder.findAnnotation(m_methodClass, ITestAnnotation.class);
-      if (classAnnotation != null) {
-        String[] groups = classAnnotation.getGroups();
-        Map<String, String> newGroups = Maps.newHashMap();
-        for (String g : getGroups()) {
-          newGroups.put(g, g);
-        }
-        if (groups != null) {
-          for (String g : groups) {
-            newGroups.put(g, g);
-          }
-          setGroups(newGroups.values().toArray(new String[newGroups.size()]));
-        }
-      }
-    }
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[ConfigurationMethod] " + s);
-  }
-
-  public ConfigurationMethod clone() {
-    ConfigurationMethod clone= new ConfigurationMethod(getMethod(),
-        getAnnotationFinder(),
-        isBeforeSuiteConfiguration(),
-        isAfterSuiteConfiguration(),
-        isBeforeTestConfiguration(),
-        isAfterTestConfiguration(),
-        isBeforeClassConfiguration(),
-        isAfterClassConfiguration(),
-        isBeforeMethodConfiguration(),
-        isAfterMethodConfiguration(),
-        getBeforeGroups(),
-        getAfterGroups(),
-        false /* do not call init() */
-        );
-    clone.m_testClass= getTestClass();
-    clone.setDate(getDate());
-    clone.setGroups(getGroups());
-    clone.setGroupsDependedUpon(getGroupsDependedUpon());
-    clone.setMethodsDependedUpon(getMethodsDependedUpon());
-    clone.setAlwaysRun(isAlwaysRun());
-    clone.setMissingGroup(getMissingGroup());
-    clone.setDescription(getDescription());
-    clone.setParameterInvocationCount(getParameterInvocationCount());
-    clone.m_inheritGroupsFromTestClass= inheritGroupsFromTestClass();
-
-    return clone;
-  }
-  
-  public boolean isFirstTimeOnly() {
-    boolean result = false;
-    IAnnotation before = m_annotationFinder.findAnnotation(getMethod(), IBeforeMethod.class);
-    if (before != null) {
-      result = ((ConfigurationAnnotation) before).isFirstTimeOnly();
-    }
-    return result;
-  }
-
-  public boolean isLastTimeOnly() {
-    boolean result = false;
-    IAnnotation before = m_annotationFinder.findAnnotation(getMethod(), IAfterMethod.class);
-    if (before != null) {
-      result = ((ConfigurationAnnotation) before).isLastTimeOnly();
-    }
-    return result;
-  }
-
-}
-
diff --git a/src/org/testng/internal/Constants.java b/src/org/testng/internal/Constants.java
deleted file mode 100755
index 12b909d..0000000
--- a/src/org/testng/internal/Constants.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestResult;
-import org.testng.collections.Maps;
-
-import java.util.Map;
-import java.util.Properties;
-
-
-
-/**
- * Constants used by TestNG
- *
- * @author Cedric Beust, May 2, 2004
- * 
- */
-public class Constants {
-  private static final String NAMESPACE = "testng";
-  
-////////  //
-  // Properties
-  //
-  public static final String PROP_OUTPUT_DIR = NAMESPACE + "." + "outputDir";
-//  public static final String PROP_NAME = NAMESPACE + "." + "name";
-//  public static final String PROP_INCLUDED_GROUPS = NAMESPACE + "." + "includedGroups";
-//  public static final String PROP_EXCLUDED_GROUPS = NAMESPACE + "." + "excludedGroups";
-//  public static final String PROP_CLASS_NAMES = NAMESPACE + "." + "classNames";
-//  public static final String PROP_VERBOSE = NAMESPACE + "." + "verbose";
-//  public static final String PROP_JUNIT= NAMESPACE + "." + "junit";
-//  public static final String PROP_QUIET= NAMESPACE + "." + "quiet";
-//  public static final String PROP_GROUP= NAMESPACE + "." + "group";
-  
-  private static final TestNGProperty[] COMMAND_LINE_PARAMETERS = {
-    new TestNGProperty("-d", PROP_OUTPUT_DIR, "Directory where the result files will be created.", "test-output"),
-  };
-  
-  private static final Map<String, TestNGProperty> m_propertiesByName = Maps.newHashMap();
-
-  static {
-//    for (int i = 0; i < PROPERTIES.length; i++) {
-//      m_propertiesByName.put(PROPERTIES[i].getName(), PROPERTIES[i]);
-//    }
-    for (int i = 0; i < COMMAND_LINE_PARAMETERS.length; i++) {
-      m_propertiesByName.put(COMMAND_LINE_PARAMETERS[i].getName(), COMMAND_LINE_PARAMETERS[i]);
-    }
-  }
-  
-  private static TestNGProperty getProperty(String propertyName) {
-    TestNGProperty result = (TestNGProperty) m_propertiesByName.get(propertyName);
-    assert null != result : "Unknown property : " + propertyName;
-    
-    return result;
-  }
-  
-  public static String getPropertyValue(Properties p, String propertyName) {
-    TestNGProperty r= getProperty(propertyName);
-    assert null != r : "Unknown property : " + propertyName;
-    
-    String result = p.getProperty(r.getName());
-    
-    return result;
-  }
-  
-  public static boolean getBooleanPropertyValue(Properties properties, String propertyName) {
-    TestNGProperty p = getProperty(propertyName);
-    String r = properties.getProperty(propertyName, p.getDefault());
-    boolean result = "true".equalsIgnoreCase(r);
-  
-    return Boolean.valueOf( result).booleanValue();
-  }
-
-  public static int getIntegerPropertyValue(Properties properties, String propertyName) {
-    TestNGProperty p = getProperty(propertyName);
-    String r = properties.getProperty(propertyName, p.getDefault());
-    int result = Integer.parseInt(r);
-  
-    return result;
-  }
-
-  public static String getDefaultValueFor(String propertyName) {
-    TestNGProperty p = getProperty(propertyName);
-    return p.getDefault();
-  }
-
-  /**
-   * @param status
-   * @return
-   */
-  public static String displayStatus(int status) {
-    if (ITestResult.SKIP == status) return "SKIP";
-    else if (ITestResult.SUCCESS == status) return "SUCCESS";
-    else if (ITestResult.FAILURE == status) return "FAILURE";
-    else return "UNKNOWN_STATUS";
-  }
-
-}
diff --git a/src/org/testng/internal/DataProviderHolder.java b/src/org/testng/internal/DataProviderHolder.java
deleted file mode 100755
index 4e592ce..0000000
--- a/src/org/testng/internal/DataProviderHolder.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.testng.internal;
-
-import org.testng.annotations.IDataProviderAnnotation;
-
-import java.lang.reflect.Method;
-
-/**
- * A holder for a pair of Method and IDataProviderAnnotation
- */
-public class DataProviderHolder {
-  Method method;
-  IDataProviderAnnotation annotation;
-
-  public DataProviderHolder(IDataProviderAnnotation annotation, Method method) {
-    super();
-    this.annotation = annotation;
-    this.method = method;
-  }
-}
diff --git a/src/org/testng/internal/DefaultGuiceModule.java b/src/org/testng/internal/DefaultGuiceModule.java
deleted file mode 100644
index d6250ee..0000000
--- a/src/org/testng/internal/DefaultGuiceModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.testng.internal;
-
-import com.google.inject.Binder;
-import com.google.inject.Module;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.IObjectFactory;
-import org.testng.internal.annotations.DefaultAnnotationTransformer;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.JDK15AnnotationFinder;
-
-public class DefaultGuiceModule implements Module {
-
-  private IObjectFactory m_objectFactory;
-
-  public DefaultGuiceModule(IObjectFactory factory) {
-    m_objectFactory = factory;
-  }
-
-  public void configure(Binder binder) {
-    binder.bind(IAnnotationFinder.class).to(JDK15AnnotationFinder.class).in(Singleton.class);
-    binder.bind(IAnnotationTransformer.class).to(DefaultAnnotationTransformer.class)
-        .in(Singleton.class);
-    binder.bind(IConfiguration.class).to(Configuration.class).in(Singleton.class);
-  }
-
-  @Provides
-  IObjectFactory provideObjectFactory() {
-    return m_objectFactory;
-  }
-}
diff --git a/src/org/testng/internal/DefaultMethodSelectorContext.java b/src/org/testng/internal/DefaultMethodSelectorContext.java
deleted file mode 100755
index 3ed1f14..0000000
--- a/src/org/testng/internal/DefaultMethodSelectorContext.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IMethodSelectorContext;
-import org.testng.collections.Maps;
-
-import java.util.Map;
-
-/**
- * Simple implementation of IMethodSelectorContext
- * 
- * Created on Jan 3, 2007
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class DefaultMethodSelectorContext implements IMethodSelectorContext {
-  private Map<Object, Object> m_userData = Maps.newHashMap();
-  private boolean m_isStopped = false;
-
-  public Map<Object, Object> getUserData() {
-    return m_userData;
-  }
-
-  public boolean isStopped() {
-    return m_isStopped;
-  }
-
-  public void setStopped(boolean stopped) {
-    m_isStopped = stopped;
-  }
-
-}
diff --git a/src/org/testng/internal/DynamicGraph.java b/src/org/testng/internal/DynamicGraph.java
deleted file mode 100644
index db1c8cd..0000000
--- a/src/org/testng/internal/DynamicGraph.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package org.testng.internal;
-
-import org.testng.internal.annotations.Sets;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Representation of the graph of methods.
- */
-public class DynamicGraph<T> {
-  private static final boolean DEBUG = false;
-
-  private Set<T> m_nodesReady = Sets.newHashSet();
-  private Set<T> m_nodesRunning = Sets.newHashSet();
-  private Set<T> m_nodesFinished = Sets.newHashSet();
-
-  private MapList<T, T> m_dependedUpon = new MapList<T, T>();
-  private MapList<T, T> m_dependingOn = new MapList<T, T>();
-
-  public static enum Status {
-    READY, RUNNING, FINISHED
-  }
-
-  /**
-   * Add a node to the graph.
-   */
-  public void addNode(T node) {
-    m_nodesReady.add(node);
-  }
-
-  /**
-   * Add an edge between two nodes, which don't have to already be in the graph
-   * (they will be added by this method).
-   */
-  public void addEdge(T from, T to) {
-    addNode(from);
-    addNode(to);
-    m_dependingOn.put(to, from);
-    m_dependedUpon.put(from, to);
-  }
-
-  /**
-   * @return a set of all the nodes that don't depend on any other nodes.
-   */
-  public Set<T> getFreeNodes() {
-    Set<T> result = Sets.newHashSet();
-    for (T m : m_nodesReady) {
-      // A node is free if...
-
-      // - no other nodes depend on it
-      if (!m_dependedUpon.containsKey(m)) result.add(m);
-
-      // - or all the nodes that it depends on have already run 
-      else if (getUnfinishedNodes(m_dependedUpon.get(m)).size() == 0) result.add(m);
-    }
-    return result;
-  }
-
-  /**
-   * @return a list of all the nodes that have a status other than FINISHED.
-   */
-  private Collection<? extends T> getUnfinishedNodes(List<T> nodes) {
-    Set<T> result = Sets.newHashSet();
-    for (T node : nodes) {
-      if (m_nodesReady.contains(node) || m_nodesRunning.contains(node)) result.add(node);
-    }
-    return result;
-  }
-
-  /**
-   * Set the status for a set of nodes.
-   */
-  public void setStatus(Collection<T> nodes, Status status) {
-    for (T n : nodes) {
-      setStatus(n, status);
-    }
-  }
-
-  /**
-   * Set the status for a node.
-   */
-  public void setStatus(T node, Status status) {
-    removeNode(node);
-    switch(status) {
-      case READY: m_nodesReady.add(node); break;
-      case RUNNING: m_nodesRunning.add(node); break;
-      case FINISHED: m_nodesFinished.add(node); break;
-      default: throw new IllegalArgumentException();
-    }
-  }
-
-  private void removeNode(T node) {
-    if (!m_nodesReady.remove(node)) {
-      if (!m_nodesRunning.remove(node)) {
-        m_nodesFinished.remove(node);
-      }
-    }
-  }
-
-  /**
-   * @return the number of nodes in this graph.
-   */
-  public int getNodeCount() {
-    int result = m_nodesReady.size() + m_nodesRunning.size() + m_nodesFinished.size();
-    return result;
-  }
-
-  public int getNodeCountWithStatus(Status status) {
-    switch(status) {
-      case READY: return m_nodesReady.size();
-      case RUNNING: return m_nodesRunning.size();
-      case FINISHED: return m_nodesFinished.size();
-      default: throw new IllegalArgumentException();
-    }
-  }
-
-  private static void ppp(String string) {
-    if (DEBUG) {
-      System.out.println("   [GroupThreadPoolExecutor] " + Thread.currentThread().getId() + " "
-          + string);
-    }
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder result = new StringBuilder("[DynamicGraph ");
-    result.append("\n  Ready:" + m_nodesReady);
-    result.append("\n  Running:" + m_nodesRunning);
-    result.append("\n  Finished:" + m_nodesFinished);
-    result.append("\n  Edges:" + m_dependingOn);
-    result.append("]");
-    return result.toString();
-  }
-
-  private String getName(T t) {
-    String s = t.toString();
-    int n1 = s.lastIndexOf('.') + 1;
-    int n2 = s.indexOf('(');
-    return s.substring(n1, n2);
-  }
-
-  /**
-   * @return a .dot file (GraphViz) version of this graph.
-   */
-  public String toDot() {
-    String FREE = "[style=filled color=yellow]";
-    String RUNNING = "[style=filled color=green]";
-    String FINISHED = "[style=filled color=grey]";
-    StringBuilder result = new StringBuilder("digraph g {\n");
-    Set<T> freeNodes = getFreeNodes();
-    String color;
-    for (T n : m_nodesReady) {
-      color = freeNodes.contains(n) ? FREE : "";
-      result.append("  " + getName(n) + color + "\n");
-    }
-    for (T n : m_nodesRunning) {
-      color = freeNodes.contains(n) ? FREE : RUNNING; 
-      result.append("  " + getName(n) + color + "\n");
-    }
-    for (T n : m_nodesFinished) {
-      result.append("  " + getName(n) + FINISHED+ "\n");
-    }
-    result.append("\n");
-
-    for (T k : m_dependingOn.getKeys()) {
-      List<T> nodes = m_dependingOn.get(k);
-      for (T n : nodes) {
-        String dotted = m_nodesFinished.contains(k) ? "style=dotted" : "";
-        result.append("  " + getName(k) + " -> " + getName(n) + " [dir=back " + dotted + "]\n");
-      }
-    }
-    result.append("}\n");
-
-    return result.toString();
-  }
-}
diff --git a/src/org/testng/internal/ExpectedExceptionsHolder.java b/src/org/testng/internal/ExpectedExceptionsHolder.java
deleted file mode 100755
index 71ba629..0000000
--- a/src/org/testng/internal/ExpectedExceptionsHolder.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.testng.internal;
-
-/**
- * A class that contains the expected exceptions and the message regular expression.
- * @author cbeust
- */
-public class ExpectedExceptionsHolder {
-  Class<?>[] expectedClasses;
-  String messageRegExp;
-
-  public ExpectedExceptionsHolder(Class<?>[] expectedClasses, String messageRegExp) {
-    this.expectedClasses = expectedClasses;
-    this.messageRegExp = messageRegExp;
-  }
-
-}
diff --git a/src/org/testng/internal/ExtraOutput.java b/src/org/testng/internal/ExtraOutput.java
deleted file mode 100755
index 3cbe84d..0000000
--- a/src/org/testng/internal/ExtraOutput.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IExtraOutput;
-import org.testng.collections.Lists;
-
-import java.util.List;
-
-/**
- * This class is used by Reporter to store the extra output to be later
- * included in the HTML report:
- * - User-generated report
- * - Parameter info
- * 
- * Created on Feb 16, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class ExtraOutput implements IExtraOutput {
-  private List<String> m_parameterOutput = Lists.newArrayList();
-  
-  public List<String> getParameterOutput() {
-    return m_parameterOutput;
-  }
-}
diff --git a/src/org/testng/internal/FactoryMethod.java b/src/org/testng/internal/FactoryMethod.java
deleted file mode 100644
index ac22e4a..0000000
--- a/src/org/testng/internal/FactoryMethod.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class represents a method annotated with @Factory
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class FactoryMethod extends BaseTestMethod {
-  private Object m_instance = null;
-  private XmlTest m_xmlTest = null;
-  private ITestContext m_testContext = null;
-  
-  /**
-   * @param testClass
-   * @param method
-   */
-  public FactoryMethod(Method method, 
-                       Object instance,
-                       XmlTest xmlTest, 
-                       IAnnotationFinder annotationFinder,
-                       ITestContext testContext) 
-  {
-    super(method, annotationFinder);
-    if (! method.getDeclaringClass().isAssignableFrom(instance.getClass())) {
-      throw new TestNGException("Mismatch between instance/method classes:"
-          + instance.getClass() + " " + method.getDeclaringClass());
-    }
-    
-    m_instance = instance;
-    m_xmlTest = xmlTest;
-    m_testContext = testContext;
-    NoOpTestClass tc = new NoOpTestClass();
-    tc.setTestClass(method.getDeclaringClass());
-    m_testClass = tc;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryMethod] " + s);
-  }
-  
-  public Object[] invoke() {
-    List<Object> result = Lists.newArrayList();
-    
-    Map<String, String> allParameterNames = Maps.newHashMap();
-    Iterator<Object[]> parameterIterator =
-      Parameters.handleParameters(this, 
-          allParameterNames, 
-          m_instance,
-          new Parameters.MethodParameters(m_xmlTest.getParameters(), null, null, m_testContext,
-              null /* testResult */), 
-          m_xmlTest.getSuite(), 
-          m_annotationFinder,
-          null /* fedInstance */).parameters;
-    
-    try {
-      while (parameterIterator.hasNext()) {
-        Object[] parameters = parameterIterator.next();
-        Object[] testInstances = (Object[]) getMethod().invoke(m_instance, parameters);
-
-        for (Object testInstance : testInstances) {
-          result.add(testInstance);
-        }
-      }
-    }
-    catch (Throwable t) {
-      throw new TestNGException("The factory method "
-          + getMethod().getDeclaringClass() + "." + getMethod().getName()
-          + "() threw an exception", t);
-    }
-    
-    return result.toArray(new Object[result.size()]);
-  }
-  
-  public ITestNGMethod clone() {
-    throw new IllegalStateException("clone is not supported for FactoryMethod"); 
-  }
-}
diff --git a/src/org/testng/internal/Graph.java b/src/org/testng/internal/Graph.java
deleted file mode 100644
index 446ba65..0000000
--- a/src/org/testng/internal/Graph.java
+++ /dev/null
@@ -1,422 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestResult;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-/**
- * Simple graph class to implement topological sort (used to sort methods based on what groups
- * they depend on).
- *
- * @author Cedric Beust, Aug 19, 2004
- */
-public class Graph<T extends Object> {
-  private static boolean m_verbose = false;
-  private Map<T, Node<T>> m_nodes = Maps.newHashMap();
-  private List<T> m_strictlySortedNodes = null;
-  
-  //  A map of nodes that are not the predecessors of any node
-  // (not needed for the algorithm but convenient to calculate
-  // the parallel/sequential lists in TestNG).
-  private Map<T, Node<T>> m_independentNodes = null;
-
-  public void addNode(T tm) {
-    ppp("ADDING NODE " + tm + " " + tm.hashCode());
-    m_nodes.put(tm, new Node<T>(tm));
-    // Initially, all the nodes are put in the independent list as well
-  }
-  
-  public Set<T> getPredecessors(T node) {
-    return findNode(node).getPredecessors().keySet();
-  }
-  
-  /*private boolean hasBeenSorted() {
-    return null != m_strictlySortedNodes;
-  }*/
-  
-  public boolean isIndependent(T object) {
-    return m_independentNodes.containsKey(object);
-  }
-  
-  private Node<T> findNode(T object) {
-    return m_nodes.get(object);
-  }
-
-  public void addPredecessor(T tm, T predecessor) {
-    Node<T> node = findNode(tm);
-    if (null == node) {
-      throw new TestNGException("Non-existing node: " + tm);
-    }
-    else {
-      node.addPredecessor(predecessor);
-      addNeighbor(tm, predecessor);
-      // Remove these two nodes from the independent list
-      if (null == m_independentNodes) {
-        m_independentNodes = Maps.newHashMap();
-        for (T k : m_nodes.keySet()) {
-          m_independentNodes.put(k, m_nodes.get(k));
-        }
-      }
-      m_independentNodes.remove(predecessor);
-      m_independentNodes.remove(tm);
-      ppp("  REMOVED " + predecessor + " FROM INDEPENDENT OBJECTS");
-    }
-  }
-
-  private void addNeighbor(T tm, T predecessor) {
-    findNode(tm).addNeighbor(findNode(predecessor));
-  }
-  
-  public Set<T> getNeighbors(T t) {
-    Set<T> result = new HashSet<T>();
-    for (Node<T> n : findNode(t).getNeighbors()) {
-      result.add(n.getObject());
-    }
-    
-    return result;
-  }
-
-  private Collection<Node<T>> getNodes() {
-    return m_nodes.values();
-  }
-
-  public Collection<T> getNodeValues() {
-    return m_nodes.keySet();
-  }
-  
-  /**
-   * @return All the nodes that don't have any order with each other.
-   */
-  public Set<T> getIndependentNodes() {
-    return m_independentNodes.keySet();
-  }
-  
-  /**
-   * @return All the nodes that have an order with each other, sorted
-   * in one of the valid sorts.
-   */
-  public List<T> getStrictlySortedNodes() {
-    return m_strictlySortedNodes;
-  }
-  
-  public void topologicalSort() {
-    ppp("================ SORTING");
-    m_strictlySortedNodes = Lists.newArrayList();
-    if (null == m_independentNodes) {
-      m_independentNodes = Maps.newHashMap();
-    }
-    
-    //
-    // Clone the list of nodes but only keep those that are
-    // not independent.
-    //
-    List<Node<T>> nodes2 = Lists.newArrayList();
-    for (Node<T> n : getNodes()) {
-      if (! isIndependent((T) n.getObject())) {
-        ppp("ADDING FOR SORT: " + n.getObject());
-        nodes2.add(n.clone());
-      }
-      else {
-        ppp("SKIPPING INDEPENDENT NODE " + n);
-      }
-    }
-    
-    //
-    // Sort the nodes alphabetically to make sure that methods of the same class
-    // get run close to each other as much as possible
-    //
-    Collections.sort(nodes2);
-    
-    //
-    // Sort
-    //
-    while (! nodes2.isEmpty()) {
-      
-      //
-      // Find all the nodes that don't have any predecessors, add
-      // them to the result and mark them for removal
-      //
-      Node<T> node = findNodeWithNoPredecessors(nodes2);
-      if (null == node) {
-        List<T> cycle = new Tarjan<T>(this, nodes2.get(0).getObject()).getCycle();
-        StringBuffer sb = new StringBuffer();
-        sb.append("The following methods have cyclic dependencies:\n");
-        for (T m : cycle) {
-          sb.append(m).append("\n");
-        }
-        throw new TestNGException(sb.toString());
-      }
-      else {
-        m_strictlySortedNodes.add((T) node.getObject());
-        removeFromNodes(nodes2, node);
-      }
-    }
-
-    ppp("=============== DONE SORTING");
-    if (m_verbose) {
-      dumpSortedNodes();
-    }
-  }
-  
-  private void dumpSortedNodes() {
-    System.out.println("====== SORTED NODES");
-    for (T n : m_strictlySortedNodes) {
-      System.out.println("              " + n);
-    }
-    System.out.println("====== END SORTED NODES");
-  }
-
-  private void dumpGraph() {
-    System.out.println("====== GRAPH");
-    for (Node<T> n : m_nodes.values()) {
-      System.out.println("  " + n);
-    }
-  }
-  
-  /**
-   * Remove a node from a list of nodes and update the list of predecessors
-   * for all the remaining nodes.
-   */
-  private void removeFromNodes(List<Node<T>> nodes, Node<T> node) {
-    nodes.remove(node);
-    for (Node<T> n : nodes) {
-      n.removePredecessor(node.getObject());
-    }
-  }
-  
-  private static void ppp(String s) {
-    if (m_verbose) {
-      System.out.println("[Graph] " + s);
-    }
-  }
-  
-  private Node<T> findNodeWithNoPredecessors(List<Node<T>> nodes) {
-    for (Node<T> n : nodes) {
-      if (! n.hasPredecessors()) {
-        return n;
-      }
-    }
-    
-    return null;
-  }
-  
-  /**
-   * @param o
-   * @return A list of all the predecessors for o
-   */
-  public List<T> findPredecessors(T o) {
-    // Locate the node
-    Node<T> node = findNode(o);
-    if (null == node) {
-      // This can happen if an interceptor returned new methods
-      return Lists.newArrayList();
-    }
-
-    // If we found the node, use breadth first search to find all
-    // all of the predecessors of o.  "result" is the growing list
-    // of all predecessors.  "visited" is the set of items we've
-    // already encountered.  "queue" is the queue of items whose
-    // predecessors we haven't yet explored.
-
-    LinkedList<T> result = new LinkedList<T>();
-    Set<T> visited = new HashSet<T>();
-    LinkedList<T> queue = new LinkedList<T>();
-    visited.add(o);
-    queue.addLast(o);
-
-    while (! queue.isEmpty()) {
-      for (T obj : getPredecessors(queue.removeFirst())) {
-        if (! visited.contains(obj)) {
-          visited.add(obj);
-          queue.addLast(obj);
-          result.addFirst(obj);
-        }
-      }
-    }
-
-    return result;
-  }
-  
-  @Override
-  public String toString() {
-    StringBuffer result = new StringBuffer("[Graph ");
-    for (T node : m_nodes.keySet()) {
-      result.append(findNode(node)).append(" ");
-    }
-    result.append("]");
-    
-    return result.toString();
-  }
-  
-  
-  /////
-  // class Node
-  //
-  public static class Node<T> implements Comparable<Node<T>> {
-    private T m_object = null;
-    private Map<T, T> m_predecessors = Maps.newHashMap();
-    
-    public Node(T tm) {
-      m_object = tm;
-    }
-    
-    private Set<Node<T>> m_neighbors = new HashSet<Node<T>>();
-    public void addNeighbor(Node<T> neighbor) {
-      m_neighbors.add(neighbor);
-    }
-    
-    public Set<Node<T>> getNeighbors() {
-      return m_neighbors;
-    }
-        
-    @Override
-    public Node<T> clone() {
-      Node<T> result = new Node<T>(m_object);
-      for (T pred : m_predecessors.values()) {
-        result.addPredecessor(pred);
-      }
-      return result;
-    }
-    
-    public T getObject() {
-      return m_object;
-    }
-    
-    public Map<T, T> getPredecessors() {
-      return m_predecessors;
-    }
-    
-    /**
-     * 
-     * @return true if this predecessor was found and removed
-     */
-    public boolean removePredecessor(T o) {
-      boolean result = false;
-      
-//      dump();
-      T pred = m_predecessors.get(o);
-      if (null != pred) {
-        result = null != m_predecessors.remove(o);
-        if (result) {
-          ppp("  REMOVED PRED " + o + " FROM NODE " + m_object);
-        }
-        else {
-          ppp("  FAILED TO REMOVE PRED " + o + " FROM NODE " + m_object);        
-        }
-      }
-      
-      return result;
-    }
-    
-    private void dump() {
-      ppp(toString());
-    }
-    
-    @Override
-    public String toString() {
-      StringBuffer sb = new StringBuffer("[Node:" + m_object);
-      sb.append("  pred:");
-      for (T o : m_predecessors.values()) {
-        sb.append(" " + o.toString());
-      }
-      sb.append("]");
-      String result = sb.toString();
-      return result;
-    }
-    
-    public void addPredecessor(T tm) {
-      ppp("  ADDING PREDECESSOR FOR " + m_object + " ==> " + tm);
-      m_predecessors.put(tm, tm);
-    }
-    
-    public boolean hasPredecessors() {
-      return m_predecessors.size() > 0;
-    }
-    
-    public boolean hasPredecessor(T m) {
-      return m_predecessors.containsKey(m);
-    }
-
-    public int compareTo(Node<T> o) {
-      return getObject().toString().compareTo(o.getObject().toString());
-    }
-  } 
-  
-  //
-  // class Node
-  /////
-  
-  public static void main(String[] argv) {
-    Graph<String> g = new Graph<String>();
-    g.addNode("3");
-    g.addNode("1");
-    g.addNode("2.2");
-    g.addNode("independent");
-    g.addNode("2.1");
-    g.addNode("2.3");
-    
-    // 1 ->  2.1, 2.2, 2.3 --> 3
-    g.addPredecessor("3", "2.1");
-    g.addPredecessor("3", "2.1");
-    g.addPredecessor("3", "2.3");
-    g.addPredecessor("2.1", "1");
-    g.addPredecessor("2.2", "1");
-    g.addPredecessor("2.3", "1");
-    
-    g.topologicalSort();
-    
-    List<String> l = g.getStrictlySortedNodes();
-    for (String s : l) {
-      System.out.println("  " + s);
-    }
-    int i = 0;
-    assert "1".equals(l.get(i));
-    i++;
-    assert "2.1".equals(l.get(i)) || "2.1".equals(l.get(i)) || "2.2".equals(l.get(i));
-    i++;
-    assert "2.1".equals(l.get(i)) || "2.1".equals(l.get(i)) || "2.2".equals(l.get(i));
-    i++;
-    assert "2.1".equals(l.get(i)) || "2.1".equals(l.get(i)) || "2.2".equals(l.get(i));
-    i++;
-    assert "3".equals(l.get(i));
-    
-    assert 1 == g.getIndependentNodes().size();
-    
-    //
-    // Test findPredecessors
-    //
-    ppp("GRAPH:" + g);
-    {
-      List<String> predecessors = g.findPredecessors("2.1");
-      assert predecessors.size() == 1;
-      assert predecessors.get(0).equals("1");
-    }
-    
-    {
-      List<String> predecessors = g.findPredecessors("3");
-      assert predecessors.size() == 4;
-      assert predecessors.get(0).equals("1");
-      assert predecessors.get(1).equals("2.1") ||
-        predecessors.get(2).equals("2.2") ||
-        predecessors.get(2).equals("2");
-      assert predecessors.get(2).equals("2.1") ||
-      predecessors.get(2).equals("2.2") ||
-      predecessors.get(2).equals("2");
-      assert predecessors.get(3).equals("2.1") ||
-      predecessors.get(2).equals("2.2") ||
-      predecessors.get(2).equals("2");
-    }
-
-    ppp("TESTS PASSED");
-  }
-  
-}
diff --git a/src/org/testng/internal/IConfiguration.java b/src/org/testng/internal/IConfiguration.java
deleted file mode 100644
index 937f1a5..0000000
--- a/src/org/testng/internal/IConfiguration.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IObjectFactory;
-import org.testng.internal.annotations.IAnnotationFinder;
-
-public interface IConfiguration {
-  IAnnotationFinder getAnnotationFinder();
-
-  IObjectFactory getObjectFactory();
-}
diff --git a/src/org/testng/internal/IConfigurationListener.java b/src/org/testng/internal/IConfigurationListener.java
deleted file mode 100755
index a486332..0000000
--- a/src/org/testng/internal/IConfigurationListener.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestResult;
-
-
-/**
- * Listener interface for events related to results of @Configuration method invocations.
- * 
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface IConfigurationListener {
-  void onConfigurationSuccess(ITestResult itr);
-  
-  void onConfigurationFailure(ITestResult itr);
-  
-  void onConfigurationSkip(ITestResult itr);
-}
diff --git a/src/org/testng/internal/IInvoker.java b/src/org/testng/internal/IInvoker.java
deleted file mode 100755
index 5b15dc7..0000000
--- a/src/org/testng/internal/IInvoker.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.testng.internal;
-
-import java.util.List;
-import java.util.Map;
-
-import org.testng.IClass;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.xml.XmlSuite;
-
-/**
- * This class defines an invoker.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IInvoker {
-  
-  /**
-   * Invoke configuration methods if they belong to the same TestClass
-   * passed in parameter..
-   * 
-   * TODO:  Calculate ahead of time which methods should be
-   * invoked for each class.   Might speed things up for users who invoke the same
-   * test class with different parameters in the same suite run.
-   * 
-   * @param testClass the class whose configuration methods must be run
-   */
-  public  void invokeConfigurations(IClass testClass,
-                                    ITestNGMethod[] allMethods,
-                                    XmlSuite suite, 
-                                    Map<String, String> parameters,
-                                    Object[] parameterValues,
-                                    Object instance);
-  
-  /**
-   * Invoke the given method
-   * 
-   * @param testMethod
-   * @param allTestMethods The list of all the test methods
-   * @param methodIndex The index of testMethod in the allTestMethods array
-   * @param suite
-   * @param parameters
-   * @param groupMethods
-   * 
-   * @return a list containing the results of the test methods invocations
-   */
-  public List<ITestResult> invokeTestMethods(ITestNGMethod testMethod, 
-                                             ITestNGMethod[] allTestMethods,
-                                             int methodIndex,
-                                             XmlSuite suite, 
-                                             Map<String, String> parameters, 
-                                             ConfigurationGroupMethods groupMethods,
-                                             Object[] instances,
-                                             ITestContext testContext);
-
-}
diff --git a/src/org/testng/internal/IMethodWorker.java b/src/org/testng/internal/IMethodWorker.java
deleted file mode 100755
index 2d6dcbc..0000000
--- a/src/org/testng/internal/IMethodWorker.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-
-import java.util.List;
-
-
-/**
- * Requirements for a method runnable.
- */
-public interface IMethodWorker extends Runnable, Comparable<IMethodWorker> {
-  long getMaxTimeOut();
-  
-  List<ITestResult> getTestResults();
-
-  List<ITestNGMethod> getMethods();
-
-  int getPriority();
-}
diff --git a/src/org/testng/internal/IResultListener.java b/src/org/testng/internal/IResultListener.java
deleted file mode 100755
index fe25b87..0000000
--- a/src/org/testng/internal/IResultListener.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestListener;
-
-
-/**
- * A convenient interface to use when implementing listeners.
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>  
- */
-public interface IResultListener extends ITestListener, IConfigurationListener {
-
-}
diff --git a/src/org/testng/internal/ITestResultNotifier.java b/src/org/testng/internal/ITestResultNotifier.java
deleted file mode 100755
index 25c9de1..0000000
--- a/src/org/testng/internal/ITestResultNotifier.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.testng.internal;
-
-import java.util.List;
-import java.util.Set;
-
-import org.testng.ITestListener;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.xml.XmlTest;
-
-/**
- * An interface defining the notification for @Test results and also
- * @Configuration results.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface ITestResultNotifier {
-  
-  Set<ITestResult> getPassedTests(ITestNGMethod tm);
-  
-  void addPassedTest(ITestNGMethod tm, ITestResult tr);  
-  
-  void addSkippedTest(ITestNGMethod tm, ITestResult tr);
-  
-  void addFailedTest(ITestNGMethod tm, ITestResult tr);
-
-  void addFailedButWithinSuccessPercentageTest(ITestNGMethod tm, ITestResult tr);
-
-  void addInvokedMethod(InvokedMethod im);
-  
-  XmlTest getTest();
-  
-  List<ITestListener> getTestListeners();
-  
-  List<IConfigurationListener> getConfigurationListeners();
-}
diff --git a/src/org/testng/internal/IWorkerFactory.java b/src/org/testng/internal/IWorkerFactory.java
deleted file mode 100644
index a20d9df..0000000
--- a/src/org/testng/internal/IWorkerFactory.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestNGMethod;
-import org.testng.xml.XmlTest;
-
-import java.util.List;
-import java.util.Set;
-
-public interface IWorkerFactory {
-  List<IMethodWorker> createWorkers(XmlTest xmlTest, Set<ITestNGMethod> methods);
-}
diff --git a/src/org/testng/internal/InstanceInfo.java b/src/org/testng/internal/InstanceInfo.java
deleted file mode 100755
index 3d2064e..0000000
--- a/src/org/testng/internal/InstanceInfo.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IInstanceInfo;
-
-public class InstanceInfo implements IInstanceInfo {
-  private Class m_instanceClass = null;
-  private Object m_instance = null;
-  
-  public InstanceInfo(Class cls, Object instance) {
-    m_instanceClass = cls;
-    m_instance = instance;
-  }
-
-  public Object getInstance() {
-    return m_instance;
-  }
-
-  public Class getInstanceClass() {
-    return m_instanceClass;
-  }
-
-}
diff --git a/src/org/testng/internal/InvokeMethodRunnable.java b/src/org/testng/internal/InvokeMethodRunnable.java
deleted file mode 100644
index c625ea5..0000000
--- a/src/org/testng/internal/InvokeMethodRunnable.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.testng.internal;
-
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.ITestNGMethod;
-import org.testng.internal.thread.ICountDown;
-
-/**
- * A Runnable Method invoker.
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>the_mindstorm</a>
- */
-public class InvokeMethodRunnable implements Runnable {
-  private ITestNGMethod m_method = null;
-  private Object m_instance = null;
-  private Object[] m_parameters = null;
-
-  public InvokeMethodRunnable(ITestNGMethod thisMethod,
-                              Object instance,
-                              Object[] parameters) 
-  {
-    m_method = thisMethod;
-    m_instance = instance;
-    m_parameters = parameters;
-  }
-
-  public void run() throws TestNGRuntimeException {
-    // If there is an invocation time out, all the invocations need to be done within this
-    // Runnable
-    if (m_method.getInvocationTimeOut() > 0) {
-      for (int i = 0; i < m_method.getInvocationCount(); i++) {
-        runOne();
-      }
-    }
-    else {
-      runOne();
-    }
-  }
-  
-  private void runOne() {
-    try {
-      RuntimeException t = null;
-      try {
-        Method m = m_method.getMethod();
-        MethodHelper.invokeMethod(m, m_instance, m_parameters);
-      }
-      catch(InvocationTargetException e) {
-        t = new TestNGRuntimeException(e.getCause());
-      }
-      catch(IllegalAccessException e) {
-        t = new TestNGRuntimeException(e.getCause());
-      }
-      if(null != t) {
-        Thread.currentThread().interrupt();
-        throw t;
-      }
-    }
-    finally {
-      m_method.incrementCurrentInvocationCount();
-    }
-  }
-  
-  public static class TestNGRuntimeException extends RuntimeException {
-    public TestNGRuntimeException(Throwable rootCause) {
-      super(rootCause);
-    }
-  }
-}
diff --git a/src/org/testng/internal/InvokedMethod.java b/src/org/testng/internal/InvokedMethod.java
deleted file mode 100755
index 32b8236..0000000
--- a/src/org/testng/internal/InvokedMethod.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.testng.internal;
-
-import java.io.Serializable;
-
-import org.testng.IInvokedMethod;
-import org.testng.ITestNGMethod;
-
-public class InvokedMethod implements Serializable, IInvokedMethod {
-  transient private Object m_instance;
-  private ITestNGMethod m_testMethod;
-  private Object[] m_parameters;
-  private boolean m_isTest = true;
-  private boolean m_isConfigurationMethod = false;
-  private long m_date = System.currentTimeMillis();
-  
-  /**
-   * @param m_object
-   * @param m_method
-   * @param m_parameters
-   */
-  public InvokedMethod(Object instance, 
-                       ITestNGMethod method, 
-                       Object[] parameters,
-                       boolean isTest, 
-                       boolean isConfiguration, 
-                       long date) {
-    m_instance = instance;
-    m_testMethod = method;
-    m_parameters = parameters;
-    m_isTest = isTest;
-    m_isConfigurationMethod = isConfiguration;
-    m_date = date;
-  }
-  
-  /* (non-Javadoc)
-   * @see org.testng.internal.IInvokedMethod#isTestMethod()
-   */
-  public boolean isTestMethod() {
-    return m_isTest;
-  }
-
-  @Override
-  public String toString() {
-    StringBuffer result = new StringBuffer(m_testMethod.toString());
-    for (Object p : m_parameters) {
-      result.append(p).append(" ");
-    }
-    result.append(" ").append(m_instance.hashCode());
-    
-    return result.toString();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.testng.internal.IInvokedMethod#isConfigurationMethod()
-   */
-  public boolean isConfigurationMethod() {
-    return m_isConfigurationMethod;
-  }
-  
-  /* (non-Javadoc)
-   * @see org.testng.internal.IInvokedMethod#getTestMethod()
-   */
-  public ITestNGMethod getTestMethod() {
-    return m_testMethod;
-  }
-
-  /* (non-Javadoc)
-   * @see org.testng.internal.IInvokedMethod#getDate()
-   */
-  public long getDate() {
-    return m_date;
-  }
-
-}
diff --git a/src/org/testng/internal/Invoker.java b/src/org/testng/internal/Invoker.java
deleted file mode 100644
index 3ca23eb..0000000
--- a/src/org/testng/internal/Invoker.java
+++ /dev/null
@@ -1,1742 +0,0 @@
-package org.testng.internal;
-
-
-import org.testng.IClass;
-import org.testng.IHookable;
-import org.testng.IInvokedMethod;
-import org.testng.IInvokedMethodListener;
-import org.testng.IInvokedMethodListener2;
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestClass;
-import org.testng.ITestContext;
-import org.testng.ITestListener;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.Reporter;
-import org.testng.SkipException;
-import org.testng.SuiteRunState;
-import org.testng.TestException;
-import org.testng.TestNGException;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.InvokeMethodRunnable.TestNGRuntimeException;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.thread.ThreadExecutionException;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * This class is responsible for invoking methods:
- * - test methods
- * - configuration methods
- * - possibly in a separate thread
- * and then for notifying the result listeners.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class Invoker implements IInvoker {
-  private ITestContext m_testContext;
-  private ITestResultNotifier m_notifier;
-  private IAnnotationFinder m_annotationFinder;
-  private SuiteRunState m_suiteState;
-  private boolean m_skipFailedInvocationCounts;
-  private List<IInvokedMethodListener> m_invokedMethodListeners;
-
-  public Invoker(ITestContext testContext,
-                 ITestResultNotifier notifier,
-                 SuiteRunState state,
-                 IAnnotationFinder annotationFinder,
-                 boolean skipFailedInvocationCounts,
-                 List<IInvokedMethodListener> invokedMethodListeners) {
-    m_testContext= testContext;
-    m_suiteState= state;
-    m_notifier= notifier;
-    m_annotationFinder= annotationFinder;
-    m_skipFailedInvocationCounts = skipFailedInvocationCounts;
-    m_invokedMethodListeners = invokedMethodListeners;
-  }
-
-  /**
-   * Invoke configuration methods if they belong to the same TestClass passed
-   * in parameter.. <p/>TODO: Calculate ahead of time which methods should be
-   * invoked for each class. Might speed things up for users who invoke the
-   * same test class with different parameters in the same suite run.
-   *
-   * If instance is non-null, the configuration will be run on it.  If it is null,
-   * the configuration methods will be run on all the instances retrieved
-   * from the ITestClass.
-   */
-  public void invokeConfigurations(IClass testClass,
-                                   ITestNGMethod[] allMethods,
-                                   XmlSuite suite,
-                                   Map<String, String> params,
-                                   Object[] parameterValues,
-                                   Object instance)
-  {
-    invokeConfigurations(testClass, null, allMethods, suite, params, parameterValues, instance,
-        null);
-  }
-
-  private void invokeConfigurations(IClass testClass,
-                                   ITestNGMethod currentTestMethod,
-                                   ITestNGMethod[] allMethods,
-                                   XmlSuite suite,
-                                   Map<String, String> params,
-                                   Object[] parameterValues,
-                                   Object instance,
-                                   ITestResult testMethodResult)
-  {
-    if(null == allMethods) {
-      log(5, "No @Configuration methods found");
-
-      return;
-    }
-
-    ITestNGMethod[] methods= filterMethodsUnique(testClass, allMethods);
-
-    for(ITestNGMethod tm : methods) {
-      if(null == testClass) {
-        testClass= tm.getTestClass();
-      }
-
-      ITestResult testResult= new TestResult(testClass, 
-                                             instance,
-                                             tm,
-                                             null,
-                                             System.currentTimeMillis(),
-                                             System.currentTimeMillis());
-
-      IConfigurationAnnotation configurationAnnotation= null;
-      try {
-        Object[] instances= tm.getInstances();
-        if (instances == null || instances.length == 0) instances = new Object[] { instance };
-        Class<?> objectClass= instances[0].getClass();
-        Method method= tm.getMethod();
-
-        // Only run the configuration if
-        // - the test is enabled and
-        // - the Configuration method belongs to the same class or a parent
-        if(MethodHelper.isEnabled(objectClass, m_annotationFinder)) {
-          configurationAnnotation= (IConfigurationAnnotation) AnnotationHelper.findConfiguration(m_annotationFinder, method);
-
-          if (MethodHelper.isEnabled(configurationAnnotation)) {
-            boolean isClassConfiguration = isClassConfiguration(configurationAnnotation);
-            boolean isSuiteConfiguration = isSuiteConfiguration(configurationAnnotation); 
-            boolean alwaysRun= isAlwaysRun(configurationAnnotation);
-  
-            if(!confInvocationPassed(tm) && !alwaysRun) {
-              handleConfigurationSkip(tm, testResult, configurationAnnotation, suite);
-              continue;
-            }
-  
-            log(3, "Invoking " + Utils.detailedMethodName(tm, true));
-            
-            Object[] parameters = Parameters.createConfigurationParameters(tm.getMethod(),
-                params,
-                parameterValues,
-                currentTestMethod,
-                m_annotationFinder,
-                suite,
-                m_testContext,
-                testMethodResult);
-            testResult.setParameters(parameters);
-  
-            Object[] newInstances= (null != instance) ? new Object[] { instance } : instances;
-  
-            invokeConfigurationMethod(newInstances, tm,
-              parameters, isClassConfiguration, isSuiteConfiguration, testResult);
-            
-            // TODO: probably we should trigger the event for each instance???
-            testResult.setEndMillis(System.currentTimeMillis());
-            runConfigurationListeners(testResult);
-          }
-          else {
-            log(3,
-                "Skipping "
-                + Utils.detailedMethodName(tm, true)
-                + " because it is not enabled");
-          }
-        } // if is enabled
-        else {
-          log(3,
-              "Skipping "
-              + Utils.detailedMethodName(tm, true)
-              + " because "
-              + objectClass.getName()
-              + " is not enabled");
-        }
-      }
-      catch(InvocationTargetException ex) {
-        handleConfigurationFailure(ex, tm, testResult, configurationAnnotation, suite);
-      }
-      catch(TestNGException ex) {
-        // Don't wrap TestNGExceptions, it could be a missing parameter on a
-        // @Configuration method
-        handleConfigurationFailure(ex, tm, testResult, configurationAnnotation, suite);
-      }
-      catch(Throwable ex) { // covers the non-wrapper exceptions
-        handleConfigurationFailure(ex, tm, testResult, configurationAnnotation, suite);
-      }
-    } // for methods
-  }
-  
-  /**
-   * Marks the currect <code>TestResult</code> as skipped and invokes the listeners.
-   */
-  private void handleConfigurationSkip(ITestNGMethod tm, ITestResult testResult, IConfigurationAnnotation annotation, XmlSuite suite) {
-    recordConfigurationInvocationFailed(tm, annotation, suite);
-    testResult.setStatus(ITestResult.SKIP);
-    runConfigurationListeners(testResult);
-  }
-  
-  /**
-   * Is the current <code>IConfiguration</code> a class-level method.
-   */
-  private  boolean isClassConfiguration(IConfigurationAnnotation configurationAnnotation) {
-    if(null == configurationAnnotation) {
-      return false;
-    }
-    
-    boolean before= (null != configurationAnnotation)
-      ? configurationAnnotation.getBeforeTestClass()
-      : false;
-
-    boolean after= (null != configurationAnnotation)
-      ? configurationAnnotation.getAfterTestClass()
-      : false;
-
-    return (before || after);
-  }
-
-  /**
-   * Is the current <code>IConfiguration</code> a suite level method.
-   */
-  private  boolean isSuiteConfiguration(IConfigurationAnnotation configurationAnnotation) {
-    if(null == configurationAnnotation) {
-      return false;
-    }
-    
-    boolean before= (null != configurationAnnotation)
-      ? configurationAnnotation.getBeforeSuite()
-      : false;
-
-    boolean after= (null != configurationAnnotation)
-      ? configurationAnnotation.getAfterSuite()
-      : false;
-
-    return (before || after);
-  }
-
-  /**
-   * Is the <code>IConfiguration</code> marked as alwaysRun.
-   */
-  private boolean isAlwaysRun(IConfigurationAnnotation configurationAnnotation) {
-    if(null == configurationAnnotation) {
-      return false;
-    }
-    
-    boolean alwaysRun= false;
-    if ((configurationAnnotation.getAfterSuite()
-        || configurationAnnotation.getAfterTest()
-        || configurationAnnotation.getAfterTestClass()
-        || configurationAnnotation.getAfterTestMethod())
-        && configurationAnnotation.getAlwaysRun())
-    {
-        alwaysRun= true;
-    }
-    
-    return alwaysRun;
-  }
-  
-  private void handleConfigurationFailure(Throwable ite,
-                                          ITestNGMethod tm,
-                                          ITestResult testResult,
-                                          IConfigurationAnnotation annotation,
-                                          XmlSuite suite) 
-  {
-    Throwable cause= ite.getCause() != null ? ite.getCause() : ite;
-    
-    if(SkipException.class.isAssignableFrom(cause.getClass())) {
-      SkipException skipEx= (SkipException) cause;
-      if(skipEx.isSkip()) {
-        testResult.setThrowable(skipEx);
-        handleConfigurationSkip(tm, testResult, annotation, suite);
-        return;
-      }
-    }
-    Utils.log("", 3, "Failed to invoke @Configuration method " 
-        + tm.getRealClass().getName() + "." + tm.getMethodName() + ":" + cause.getMessage());
-    handleException(cause, tm, testResult, 1);
-    runConfigurationListeners(testResult);
-
-    // 
-    // If in TestNG mode, need to take a look at the annotation to figure out
-    // what kind of @Configuration method we're dealing with
-    //
-    if (null != annotation) {
-      recordConfigurationInvocationFailed(tm, annotation, suite);
-    }
-  }
-
-  /**
-   * @return All the classes that belong to the same <test> tag as @param cls
-   */
-  private XmlClass[] findClassesInSameTest(Class<?> cls, XmlSuite suite) {
-    Map<String, XmlClass> vResult= Maps.newHashMap();
-    String className= cls.getName();
-    for(XmlTest test : suite.getTests()) {
-      for(XmlClass testClass : test.getXmlClasses()) {
-        if(testClass.getName().equals(className)) {
-
-          // Found it, add all the classes in this test in the result
-          for(XmlClass thisClass : test.getXmlClasses()) {
-            vResult.put(thisClass.getName(), thisClass);
-          }
-          // Note:  we need to iterate through the entire suite since the same
-          // class might appear in several <test> tags
-        }
-      }
-    }
-
-    XmlClass[] result= vResult.values().toArray(new XmlClass[vResult.size()]);
-
-    return result;
-  }
-
-  /**
-   * Record internally the failure of a Configuration, so that we can determine
-   * later if @Test should be skipped.
-   */
-  private void recordConfigurationInvocationFailed(ITestNGMethod tm, IConfigurationAnnotation annotation, XmlSuite suite) {
-    // If beforeTestClass/beforeTestMethod or afterTestClass/afterTestMethod 
-    // failed, mark this entire class as failed, but only this class (the other 
-    // classes should keep running normally)
-    if (annotation.getBeforeTestClass()
-      || annotation.getAfterTestClass()
-      || annotation.getBeforeTestMethod()
-      || annotation.getAfterTestMethod()) 
-    {
-      setClassInvocationFailure(tm.getRealClass(), false);
-    }
-
-    // If beforeSuite or afterSuite failed, mark *all* the classes as failed
-    // for configurations.  At this point, the entire Suite is screwed
-    else if (annotation.getBeforeSuite() || annotation.getAfterSuite()) {
-      m_suiteState.failed();
-    }
-
-    // beforeTest or afterTest:  mark all the classes in the same
-    // <test> stanza as failed for configuration
-    else if (annotation.getBeforeTest() || annotation.getAfterTest()) {
-      setClassInvocationFailure(tm.getRealClass(), false);
-      XmlClass[] classes= findClassesInSameTest(tm.getRealClass(), suite);
-      for(XmlClass xmlClass : classes) {
-        setClassInvocationFailure(xmlClass.getSupportClass(), false);
-      }
-    }
-    String[] beforeGroups= annotation.getBeforeGroups();
-    if(null != beforeGroups && beforeGroups.length > 0) {
-      for(String group: beforeGroups) {
-        m_beforegroupsFailures.put(group, Boolean.FALSE);
-      }
-    }
-  }
-  
-  /**
-   * @return true if this class has successfully run all its @Configuration
-   * method or false if at least one of these methods failed.
-   */
-  private boolean confInvocationPassed(ITestNGMethod method) {
-    boolean result= true;
-
-    Class<?> cls= method.getMethod().getDeclaringClass();
-    
-    if(m_suiteState.isFailed()) {
-      result= false;
-    }
-    else {
-      if(m_classInvocationResults.containsKey(cls)) {
-        result= m_classInvocationResults.get(cls);
-      }
-      else {
-        for(Class<?> clazz: m_classInvocationResults.keySet()) {
-//          if (clazz == cls) {
-          if(clazz.isAssignableFrom(cls)) {
-            result= false;
-            break;
-          }
-        }
-      }
-    }
-
-    // check if there are failed @BeforeGroups
-    String[] groups= method.getGroups();
-    if(null != groups && groups.length > 0) {
-      for(String group: groups) {
-        if(m_beforegroupsFailures.containsKey(group)) {
-          result= false;
-          break;
-        }
-      }
-    }
-    return result;
-  }
-
-  /** Group failures must be synched as the Invoker is accessed concurrently */
-  private Map<String, Boolean> m_beforegroupsFailures= new Hashtable<String, Boolean>();
-  
-  /** Class failures must be synched as the Invoker is accessed concurrently */
-  private Map<Class<?>, Boolean> m_classInvocationResults= new Hashtable<Class<?>, Boolean>();
-
-  private void setClassInvocationFailure(Class<?> clazz, boolean flag) {
-    m_classInvocationResults.put(clazz, flag);
-  }
-
-  /**
-   * Effectively invokes a configuration method on all passed in instances.
-   * 
-   * @param instances the instances to invoke the configuration method on
-   * @param tm the configuration method
-   * @param params the parameters needed for method invocation
-   * @param isClass flag if the configuration method is a class level method // FIXME: this looks like a missusage
-   * @param testResult
-   * @throws InvocationTargetException
-   * @throws IllegalAccessException
-   */
-  private void invokeConfigurationMethod(Object[] instances,
-                                         ITestNGMethod tm,
-                                         Object[] params,
-                                         boolean isClass,
-                                         boolean isSuite,
-                                         ITestResult testResult)
-    throws InvocationTargetException, IllegalAccessException 
-  {
-    // Mark this method with the current thread id
-    tm.setId(ThreadUtil.currentThreadInfo());
-
-    for(Object targetInstance : instances) {
-      InvokedMethod im= new InvokedMethod(targetInstance,
-                                          tm,
-                                          params,
-                                          false, /* isTest */
-                                          isClass, /* ??? */
-                                          System.currentTimeMillis());
-
-      runInvokedMethodListeners(true /* before */, im, testResult);
-      m_notifier.addInvokedMethod(im);
-
-      try {
-        Reporter.setCurrentTestResult(testResult);
-        MethodHelper.invokeMethod(tm.getMethod(), targetInstance, params);
-        // Only run the method once if it's @BeforeSuite or @AfterSuite
-        if (isSuite) break;
-      } 
-      finally {
-        Reporter.setCurrentTestResult(testResult);
-        runInvokedMethodListeners(false /* after */, im, testResult);
-      }      
-    }
-  }
-
-  private void runInvokedMethodListeners(boolean before, IInvokedMethod method, 
-      ITestResult testResult)
-  {
-    if (m_invokedMethodListeners != null) {
-      if (before) {
-        for (IInvokedMethodListener l : m_invokedMethodListeners) {
-          if (l instanceof IInvokedMethodListener2) {
-            IInvokedMethodListener2 l2 = (IInvokedMethodListener2) l;
-            l2.beforeInvocation(method, testResult, m_testContext);
-          } else {
-            l.beforeInvocation(method, testResult);
-          }
-        }
-      }
-      else {
-        for (IInvokedMethodListener l : m_invokedMethodListeners) {
-          if (l instanceof IInvokedMethodListener2) {
-            IInvokedMethodListener2 l2 = (IInvokedMethodListener2) l;
-            l2.afterInvocation(method, testResult, m_testContext);
-          } else {
-            l.afterInvocation(method, testResult);
-          }
-        }
-      }
-    }
-  }
-
-  private ITestResult invokeMethod(Object[] instances,
-                                   int instanceIndex,
-                                   final ITestNGMethod tm,
-                                   Object[] parameterValues,
-                                   XmlSuite suite,
-                                   Map<String, String> params,
-                                   ITestClass testClass,
-                                   ITestNGMethod[] beforeMethods,
-                                   ITestNGMethod[] afterMethods,
-                                   ConfigurationGroupMethods groupMethods) {
-    TestResult testResult = new TestResult();
-
-    //
-    // Invoke beforeGroups configurations
-    //
-    invokeBeforeGroupsConfigurations(testClass, tm, groupMethods, suite, params,
-        instances[instanceIndex]);
-
-    //
-    // Invoke beforeMethods only if
-    // - firstTimeOnly is not set
-    // - firstTimeOnly is set, and we are reaching at the first invocationCount
-    //
-    invokeConfigurations(testClass, tm, 
-      filterConfigurationMethods(tm, beforeMethods, true /* beforeMethods */),
-      suite, params, parameterValues,
-      instances[instanceIndex], testResult);
-    
-    //
-    // Create the ExtraOutput for this method
-    //
-    InvokedMethod invokedMethod = null;
-    try {
-      testResult.init(testClass, instances[instanceIndex],
-                                 tm,
-                                 null,
-                                 System.currentTimeMillis(),
-                                 0);
-      testResult.setParameters(parameterValues);
-      testResult.setHost(m_testContext.getHost());
-      testResult.setStatus(ITestResult.STARTED);
-      runTestListeners(testResult);
-
-      invokedMethod= new InvokedMethod(instances[instanceIndex],
-          tm,
-          parameterValues,
-          true,
-          false,
-          System.currentTimeMillis());
-
-      runInvokedMethodListeners(true, invokedMethod, testResult);
-
-      m_notifier.addInvokedMethod(invokedMethod);
-      
-      Method thisMethod= tm.getMethod();
-      
-      if(confInvocationPassed(tm)) {
-        log(3, "Invoking " + thisMethod.getDeclaringClass().getName() + "." +
-            thisMethod.getName());
-
-        // If no timeOut, just invoke the method
-        if (MethodHelper.calculateTimeOut(tm) <= 0) {
-          try {
-            Reporter.setCurrentTestResult(testResult);
-            //
-            // If this method is a IHookable, invoke its run() method
-            //
-            if (IHookable.class.isAssignableFrom(thisMethod.getDeclaringClass())) {
-              MethodHelper.invokeHookable(instances[instanceIndex],
-                  parameterValues, testClass, thisMethod, testResult);
-            }
-            //
-            // Not a IHookable, invoke directly
-            //
-            else {
-              MethodHelper.invokeMethod(thisMethod, instances[instanceIndex],
-                  parameterValues);
-            } 
-            testResult.setStatus(ITestResult.SUCCESS);
-          }
-          finally {
-            Reporter.setCurrentTestResult(null);
-          }
-        }
-        else {
-          //
-          // Method with a timeout
-          //
-          try {
-            Reporter.setCurrentTestResult(testResult);
-            MethodHelper.invokeWithTimeout(tm, instances[instanceIndex],
-                parameterValues, testResult);
-          }
-          finally {
-            Reporter.setCurrentTestResult(null);
-          }
-        }
-      }
-      else {
-        testResult.setStatus(ITestResult.SKIP);
-      }
-    }
-    catch(InvocationTargetException ite) {
-      testResult.setThrowable(ite.getCause());
-    }
-    catch(ThreadExecutionException tee) { // wrapper for TestNGRuntimeException
-      Throwable cause= tee.getCause();
-      if(TestNGRuntimeException.class.equals(cause.getClass())) {
-        testResult.setThrowable(cause.getCause());
-      }
-      else {
-        testResult.setThrowable(cause);
-      }
-    }
-    catch(Throwable thr) { // covers the non-wrapper exceptions
-      testResult.setThrowable(thr);
-    }
-    finally {
-      
-      runInvokedMethodListeners(false, invokedMethod, testResult);
-      
-      ExpectedExceptionsHolder expectedExceptionClasses
-          = MethodHelper.findExpectedExceptions(m_annotationFinder, tm.getMethod());
-      List<ITestResult> results = Lists.newArrayList();
-      results.add(testResult);
-      handleInvocationResults(tm, results, null, 0, expectedExceptionClasses, false,
-          true /* collect results */);
-
-      // If this method has a data provider and just failed, memorize the number
-      // at which it failed.
-      // Note: we're not exactly testing that this method has a data provider, just
-      // that it has parameters, so might have to revisit this if bugs get reported
-      // for the case where this method has parameters that don't come from a data
-      // provider
-      if (testResult.getThrowable() != null && parameterValues.length > 0) {
-        tm.addFailedInvocationNumber(tm.getCurrentInvocationCount());
-      }
-
-      //
-      // Increment the invocation count for this method
-      //
-      tm.incrementCurrentInvocationCount();
-
-      if (testResult != null) {
-        testResult.setEndMillis(System.currentTimeMillis());
-      }
-      //
-      // Invoke afterMethods only if
-      // - lastTimeOnly is not set
-      // - lastTimeOnly is set, and we are reaching the last invocationCount
-      //
-      invokeConfigurations(testClass, tm, 
-          filterConfigurationMethods(tm, afterMethods, false /* beforeMethods */),
-          suite, params, parameterValues,
-          instances[instanceIndex],
-          testResult);
-      
-      //
-      // Invoke afterGroups configurations
-      //
-      invokeAfterGroupsConfigurations(testClass, tm, groupMethods, suite,
-          params, instances[instanceIndex]);
-    }
-
-    return testResult;
-  }
-  
-  /**
-   * The array of methods contains @BeforeMethods if isBefore if true, @AfterMethods
-   * otherwise.  This function removes all the methods that should not be run at this
-   * point because they are either firstTimeOnly or lastTimeOnly and we haven't reached
-   * the current invocationCount yet
-   */
-  private ITestNGMethod[] filterConfigurationMethods(ITestNGMethod tm,
-      ITestNGMethod[] methods, boolean isBefore)
-  {
-    List<ITestNGMethod> result = Lists.newArrayList();
-    for (ITestNGMethod m : methods) {
-      ConfigurationMethod cm = (ConfigurationMethod) m;
-      if (isBefore) {
-        if (! cm.isFirstTimeOnly() ||
-            (cm.isFirstTimeOnly() && tm.getCurrentInvocationCount() == 0))
-        {
-          result.add(m);
-        }
-      }
-      else {
-        int current = tm.getCurrentInvocationCount();
-        boolean isLast = false;
-        // If we have parameters, set the boolean if we are about to run
-        // the last invocation
-        if (tm.getParameterInvocationCount() > 0) {
-          isLast = current == tm.getParameterInvocationCount();
-        }
-        // If we have invocationCount > 1, set the boolean if we are about to
-        // run the last invocation
-        else if (tm.getInvocationCount() > 1) {
-          isLast = current == tm.getInvocationCount();
-        }
-        if (! cm.isLastTimeOnly() || (cm.isLastTimeOnly() && isLast)) {
-          result.add(m);
-        }
-      }
-    }
-
-    return result.toArray(new ITestNGMethod[result.size()]);
-  }
-
-  /**
-   * {@link #invokeTestMethods()} eventually converge here to invoke a single @Test method.  
-   * <p/>
-   * This method is responsible for actually invoking the method. It decides if the invocation
-   * must be done:
-   * <ul>
-   * <li>through an <code>IHookable</code></li> 
-   * <li>directly (through reflection)</li>
-   * <li>in a separate thread (in case it needs to timeout)
-   * </ul>
-   * 
-   * <p/>
-   * This method is also reponsible for invoking @BeforeGroup, @BeforeMethod, @AfterMethod, @AfterGroup
-   * if it is the case for the passed in @Test method.
-   */
-  public List<ITestResult> invokeTestMethod(Object[] instances,
-                                             final ITestNGMethod tm,
-                                             Object[] parameterValues,
-                                             XmlSuite suite,
-                                             Map<String, String> params,
-                                             ITestClass testClass,
-                                             ITestNGMethod[] beforeMethods,
-                                             ITestNGMethod[] afterMethods,
-                                             ConfigurationGroupMethods groupMethods)
-  {
-    List<ITestResult> results = Lists.newArrayList();
-
-    // Mark this method with the current thread id
-    tm.setId(ThreadUtil.currentThreadInfo());
-
-    for(int i= 0; i < instances.length; i++) {
-      results.add(invokeMethod(instances, i, tm, parameterValues, suite, params,
-          testClass, beforeMethods, afterMethods, groupMethods));
-    }
-
-    return results;
-  }
-
-  /**
-   * Filter all the beforeGroups methods and invoke only those that apply
-   * to the current test method
-   */
-  private void invokeBeforeGroupsConfigurations(ITestClass testClass, 
-                                                ITestNGMethod currentTestMethod, 
-                                                ConfigurationGroupMethods groupMethods, 
-                                                XmlSuite suite, 
-                                                Map<String, String> params, 
-                                                Object instance) 
-  {
-    synchronized(groupMethods) {
-      List<ITestNGMethod> filteredMethods = Lists.newArrayList();
-      String[] groups = currentTestMethod.getGroups();
-      Map<String, List<ITestNGMethod>> beforeGroupMap = groupMethods.getBeforeGroupsMap();
-      
-      for (String group : groups) {
-        List<ITestNGMethod> methods = beforeGroupMap.get(group);
-        if (methods != null) {
-          filteredMethods.addAll(methods);
-        }
-      }
-      
-      ITestNGMethod[] beforeMethodsArray = filteredMethods.toArray(new ITestNGMethod[filteredMethods.size()]);
-      //
-      // Invoke the right groups methods
-      //
-      if(beforeMethodsArray.length > 0) {
-        // don't pass the IClass or the instance as the method may be external
-        // the invocation must be similar to @BeforeTest/@BeforeSuite
-        invokeConfigurations(null, beforeMethodsArray, suite, params, 
-            null, /* no parameter values */
-            null);
-      }
-      
-      //
-      // Remove them so they don't get run again
-      //
-      groupMethods.removeBeforeGroups(groups);
-    }
-  }
-
-  private void invokeAfterGroupsConfigurations(ITestClass testClass, 
-                                               ITestNGMethod currentTestMethod,
-                                               ConfigurationGroupMethods groupMethods,
-                                               XmlSuite suite, 
-                                               Map<String, String> params, 
-                                               Object instance) 
-  {
-    // Skip this if the current method doesn't belong to any group
-    // (only a method that belongs to a group can trigger the invocation
-    // of afterGroups methods)
-    if (currentTestMethod.getGroups().length == 0) return;
-    
-    // See if the currentMethod is the last method in any of the groups
-    // it belongs to
-    Map<String, String> filteredGroups = Maps.newHashMap();
-    String[] groups = currentTestMethod.getGroups();
-    synchronized(groupMethods) {
-      for (String group : groups) {
-        if (groupMethods.isLastMethodForGroup(group, currentTestMethod)) {
-          filteredGroups.put(group, group);
-        }
-      }
-      
-      if(filteredGroups.isEmpty()) return;
-      
-      // The list of afterMethods to run
-      Map<ITestNGMethod, ITestNGMethod> afterMethods = Maps.newHashMap();
-      
-      // Now filteredGroups contains all the groups for which we need to run the afterGroups
-      // method.  Find all the methods that correspond to these groups and invoke them.
-      Map<String, List<ITestNGMethod>> map = groupMethods.getAfterGroupsMap();
-      for (String g : filteredGroups.values()) {
-        List<ITestNGMethod> methods = map.get(g);
-        // Note:  should put them in a map if we want to make sure the same afterGroups
-        // doesn't get run twice
-        if (methods != null) {
-          for (ITestNGMethod m : methods) {
-            afterMethods.put(m, m);
-          }
-        }
-      }
-      
-      // Got our afterMethods, invoke them
-      ITestNGMethod[] afterMethodsArray = afterMethods.keySet().toArray(new ITestNGMethod[afterMethods.size()]);
-      // don't pass the IClass or the instance as the method may be external
-      // the invocation must be similar to @BeforeTest/@BeforeSuite
-      invokeConfigurations(null, afterMethodsArray, suite, params, 
-          null, /* no parameter values */
-          null);
-
-      // Remove the groups so they don't get run again
-      groupMethods.removeAfterGroups(filteredGroups.keySet());      
-    }
-  }
-
-  private Object[] getParametersFromIndex(Iterator<Object[]> parametersValues, int index) {
-    while (parametersValues.hasNext()) {
-      Object[] parameters = parametersValues.next();
-
-      if (index == 0) {
-        return parameters;
-      }
-      index--;
-    }
-    return null;
-  }
-  
-  int retryFailed(Object[] instances,
-                           int instanceIndex,
-                           final ITestNGMethod tm,
-                           XmlSuite suite,
-                           ITestClass testClass,
-                           ITestNGMethod[] beforeMethods,
-                           ITestNGMethod[] afterMethods,
-                           ConfigurationGroupMethods groupMethods,
-                           List<ITestResult> result,
-                           int failureCount,
-                           ExpectedExceptionsHolder expectedExceptionHolder,
-                           ITestContext testContext,
-                           Map<String, String> parameters,
-                           int parametersIndex) {
-    List<Object> failedInstances;
-
-    do {
-      failedInstances = Lists.newArrayList();
-      Map<String, String> allParameters = Maps.newHashMap();
-      /**
-       * TODO: This recreates all the parameters every time when we only need
-       * one specific set. Should optimize it by only recreating the set needed.
-       */
-      ParameterBag bag = createParameters(testClass, tm, parameters,
-          allParameters, null, suite, testContext, null /* fedInstance */, null /* testResult */);
-      Object[] parameterValues =
-          getParametersFromIndex(bag.parameterHolder.parameters, parametersIndex);
-
-      result.add(invokeMethod(instances, instanceIndex, tm, parameterValues, suite, 
-          allParameters, testClass, beforeMethods, afterMethods, groupMethods));
-      failureCount = handleInvocationResults(tm, result, failedInstances,
-          failureCount, expectedExceptionHolder, true, true /* collect results */);
-    }
-    while (!failedInstances.isEmpty());
-    return failureCount;
-  }
-  
-  private ParameterBag createParameters(ITestClass testClass,
-                                        ITestNGMethod testMethod,
-                                        Map<String, String> parameters,
-                                        Map<String, String> allParameterNames,
-                                        Object[] parameterValues,
-                                        XmlSuite suite,
-                                        ITestContext testContext,
-                                        Object fedInstance,
-                                        ITestResult testResult)
-  {
-    Object instance;
-    if (fedInstance != null) {
-      instance = fedInstance;
-    }
-    else {
-      Object[] instances = testClass.getInstances(true);
-      instance = instances[0];
-    }
-    
-    ParameterBag bag= handleParameters(testMethod, 
-        instance, allParameterNames, parameters, parameterValues, suite, testContext, fedInstance,
-        testResult);
-
-    return bag;
-  }
-  
-  /**
-   * Invoke all the test methods.  Note the plural:  the method passed in
-   * parameter might be invoked several times if the test class it belongs
-   * to has more than one instance (i.e., if an @Factory method has been
-   * declared somewhere that returns several instances of this TestClass).
-   * If no @Factory method was specified, testMethod will only be invoked
-   * once.
-   * <p/>
-   * Note that this method also takes care of invoking the beforeTestMethod
-   * and afterTestMethod, if any.
-   * 
-   * Note (alex): this method can be refactored to use a SingleTestMethodWorker that 
-   * directly invokes 
-   * {@link #invokeTestMethod(Object[], ITestNGMethod, Object[], XmlSuite, Map, ITestClass, ITestNGMethod[], ITestNGMethod[], ConfigurationGroupMethods)}
-   * and this would simplify the implementation (see how DataTestMethodWorker is used)
-   */
-  public List<ITestResult> invokeTestMethods(ITestNGMethod testMethod,
-                                             ITestNGMethod[] allTestMethods,
-                                             int testMethodIndex,
-                                             XmlSuite suite,
-                                             Map<String, String> parameters,
-                                             ConfigurationGroupMethods groupMethods,
-                                             Object[] instances,
-                                             ITestContext testContext)
-  {
-    // Potential bug here if the test method was declared on a parent class
-    assert null != testMethod.getTestClass() 
-    : "COULDN'T FIND TESTCLASS FOR " + testMethod.getMethod().getDeclaringClass();
-    
-    List<ITestResult> result = Lists.newArrayList();
-    
-    ITestClass testClass= testMethod.getTestClass();
-    long start= System.currentTimeMillis();
-
-    //
-    // TODO:
-    // - [DONE] revisit invocationCount, threadPoolSize values
-    // - try to remove the isWithinThreadedMethod: still needed to determine the @BeforeMethod + @AfterMethod
-    // - [DONE] solve the results different approaches: assignment and addAll
-    //
-    // For invocationCount>1 and threadPoolSize>1 the method will be invoked on a thread pool
-    long timeOutInvocationCount = testMethod.getInvocationTimeOut();
-    boolean onlyOne = testMethod.getThreadPoolSize() > 1 ||
-      timeOutInvocationCount > 0;
-      
-    int invocationCount = onlyOne ? 1 : testMethod.getInvocationCount();
-    
-    int failureCount = 0;
-
-    ExpectedExceptionsHolder expectedExceptionHolder = 
-        MethodHelper.findExpectedExceptions(m_annotationFinder, testMethod.getMethod());
-    while(invocationCount-- > 0) {
-      boolean okToProceed = checkDependencies(testMethod, testClass, allTestMethods);
-
-      if (okToProceed) {
-        //
-        // Invoke the test method if it's enabled
-        //
-        if (MethodHelper.isEnabled(testMethod.getMethod(), m_annotationFinder)) {
-          //
-          // If threadPoolSize specified, run this method in its own pool thread.
-          //
-          if (testMethod.getThreadPoolSize() > 1 && testMethod.getInvocationCount() > 1) {
-              return invokePooledTestMethods(testMethod, allTestMethods, suite, 
-                  parameters, groupMethods, testContext);
-          }
-          
-          //
-          // No threads, regular invocation
-          //
-          else {
-            ITestNGMethod[] beforeMethods = filterMethods(testClass, testClass.getBeforeTestMethods());
-            ITestNGMethod[] afterMethods = filterMethods(testClass, testClass.getAfterTestMethods());
-
-
-            Map<String, String> allParameterNames = Maps.newHashMap();
-            ParameterBag bag = createParameters(testClass, testMethod,
-                parameters, allParameterNames, null, suite, testContext, instances[0],
-                null);
-
-            if(bag.hasErrors()) {
-              failureCount = handleInvocationResults(testMethod, 
-                  bag.errorResults, null, failureCount, expectedExceptionHolder, true,
-                  true /* collect results */);
-              // there is nothing we can do more
-              continue;
-            }
-            
-            Iterator<Object[]> allParameterValues= bag.parameterHolder.parameters;
-            
-            int parametersIndex = 0;
-            
-            try {
-//                if (true) { // @@
-              List<TestMethodWithDataProviderMethodWorker> workers = Lists.newArrayList();
-
-//                  if (false) { // bag.parameterHolder.origin == ParameterHolder.ORIGIN_DATA_PROVIDER) {
-              if (bag.parameterHolder.origin == ParameterHolder.ORIGIN_DATA_PROVIDER &&
-                  bag.parameterHolder.dataProviderHolder.annotation.isParallel()) {
-                while (allParameterValues.hasNext()) {
-                  Object[] parameterValues= allParameterValues.next();
-                  TestMethodWithDataProviderMethodWorker w =
-                    new TestMethodWithDataProviderMethodWorker(this,
-                        testMethod, parametersIndex,
-                        parameterValues, instances, suite, parameters, testClass,
-                        beforeMethods, afterMethods, groupMethods,
-                        expectedExceptionHolder, testContext, m_skipFailedInvocationCounts,
-                        invocationCount, failureCount, m_notifier);
-                  workers.add(w);
-                }
-                PoolService ps = PoolService.getInstance();
-                List<ITestResult> r = ps.submitTasksAndWait(testMethod, workers);
-                result.addAll(r);
-
-              } else {
-                while (allParameterValues.hasNext()) {
-                  Object[] rawParameterValues= allParameterValues.next();
-
-                  Object[] parameterValues = injectParameters(rawParameterValues,
-                      testMethod.getMethod(), testContext, null /* test result */);
-//                  Object[] parameterValues = rawParameterValues;
-
-                  List<ITestResult> tmpResults = Lists.newArrayList();
-
-                  try {
-                    tmpResults.addAll(invokeTestMethod(instances,
-                                                       testMethod,
-                                                       parameterValues,
-                                                       suite,
-                                                       parameters,
-                                                       testClass,
-                                                       beforeMethods,
-                                                       afterMethods,
-                                                       groupMethods));
-                  }
-                  finally {
-                    List<Object> failedInstances = Lists.newArrayList();
-
-                    failureCount = handleInvocationResults(testMethod, tmpResults,
-                        failedInstances, failureCount, expectedExceptionHolder, true,
-                        false /* don't collect results */);
-                    if (failedInstances.isEmpty()) {
-                      result.addAll(tmpResults);
-                    } else {
-                      for (int i = 0; i < failedInstances.size(); i++) {
-                        List<ITestResult> retryResults = Lists.newArrayList();
-
-                        failureCount = 
-                         retryFailed(failedInstances.toArray(),
-                         i, testMethod, suite, testClass, beforeMethods,
-                         afterMethods, groupMethods, retryResults,
-                         failureCount, expectedExceptionHolder,
-                         testContext, parameters, parametersIndex);
-                      result.addAll(retryResults);
-                      }
-                    }
-                    
-                    //
-                    // If we have a failure, skip all the
-                    // other invocationCounts
-                    //
-                    
-                    // If not specified globally, use the attribute
-                    // on the annotation
-                    //
-                    if (! m_skipFailedInvocationCounts) {
-                      m_skipFailedInvocationCounts = testMethod.skipFailedInvocations();
-                    }
-                    if (failureCount > 0 && m_skipFailedInvocationCounts) {
-                      while (invocationCount-- > 0) {
-                        ITestResult r = 
-                          new TestResult(testMethod.getTestClass(),
-                            instances[0],
-                            testMethod,
-                            null,
-                            start,
-                            System.currentTimeMillis());
-                        r.setStatus(TestResult.SKIP);
-                        result.add(r);
-                        runTestListeners(r);
-                        m_notifier.addSkippedTest(testMethod, r);
-                      }
-                      break;
-                    }
-                  }// end
-                parametersIndex++;
-              }
-            }
-          }
-          catch (Throwable cause) {
-            ITestResult r = 
-                new TestResult(testMethod.getTestClass(),
-                  instances[0],
-                  testMethod,
-                  cause,
-                  start,
-                  System.currentTimeMillis());
-              r.setStatus(TestResult.FAILURE);
-              result.add(r);
-              runTestListeners(r);
-              m_notifier.addFailedTest(testMethod, r);
-            } // catch
-          }
-        } // isTestMethodEnabled 
-
-      } // okToProceed
-      else {
-        //
-        // Test is being skipped
-        //
-        ITestResult testResult= new TestResult(testClass, null,
-                                               testMethod,
-                                               null,
-                                               start,
-                                               System.currentTimeMillis());
-        testResult.setEndMillis(System.currentTimeMillis());
-        String missingGroup = testMethod.getMissingGroup();
-        if (missingGroup != null) {
-          testResult.setThrowable(new Throwable("Method " + testMethod 
-              + " depends on nonexistent group \"" + missingGroup + "\""));
-        }
-
-        testResult.setStatus(ITestResult.SKIP);
-        result.add(testResult);
-        m_notifier.addSkippedTest(testMethod, testResult);
-        runTestListeners(testResult);
-      }
-    }
-    
-    return result;
-    
-  } // invokeTestMethod
-
-  private Object[] injectParameters(Object[] parameterValues, Method method,
-      ITestContext context, ITestResult testResult) {
-    List<Object> vResult = Lists.newArrayList();
-    int i = 0;
-    for (Class<?> cls : method.getParameterTypes()) {
-      Object injected = Parameters.getInjectedParameter(cls, method, context, testResult);
-      if (injected != null) {
-        vResult.add(injected);
-      } else {
-        vResult.add(parameterValues[i++]);
-      }
-    }
-    return vResult.toArray(new Object[vResult.size()]);
-  }
-
-  private ParameterBag handleParameters(ITestNGMethod testMethod,
-      Object instance,
-      Map<String, String> allParameterNames,
-      Map<String, String> parameters,
-      Object[] parameterValues,
-      XmlSuite suite,
-      ITestContext testContext,
-      Object fedInstance,
-      ITestResult testResult)
-  {
-    try {
-      return new ParameterBag(
-          Parameters.handleParameters(testMethod,
-            allParameterNames, 
-            instance, 
-            new Parameters.MethodParameters(parameters, parameterValues,
-                testMethod.getMethod(), testContext, testResult), 
-            suite, 
-            m_annotationFinder,
-            fedInstance), 
-          null);
-    }
-    catch(Throwable cause) {
-      return new ParameterBag(null, 
-          new TestResult(
-              testMethod.getTestClass(), 
-              instance, 
-              testMethod, 
-              cause, 
-              System.currentTimeMillis(),
-              System.currentTimeMillis()));
-    }
-    
-  }
-  
-  /**
-   * Invokes a method that has a specified threadPoolSize. 
-   */
-  private List<ITestResult> invokePooledTestMethods(ITestNGMethod testMethod, 
-                                                    ITestNGMethod[] allTestMethods, 
-                                                    XmlSuite suite, 
-                                                    Map<String, String> parameters, 
-                                                    ConfigurationGroupMethods groupMethods,
-                                                    ITestContext testContext) 
-  {
-    //
-    // Create the workers
-    //
-    List<IMethodWorker> workers = Lists.newArrayList();
-    
-    for (int i = 0; i < testMethod.getInvocationCount(); i++) {
-      // we use clones for reporting purposes
-      ITestNGMethod clonedMethod= testMethod.clone();
-      clonedMethod.setInvocationCount(1);
-      clonedMethod.setThreadPoolSize(1);
-
-      MethodInstance mi = new MethodInstance(clonedMethod, clonedMethod.getTestClass().getInstances(true));
-      workers.add(new SingleTestMethodWorker(this,
-          mi,
-          suite, 
-          parameters,
-          allTestMethods,
-          testContext));
-    }
-
-    return runWorkers(testMethod, workers, testMethod.getThreadPoolSize(), groupMethods, suite, parameters);
-  }
-  
-  /**
-   * @param testMethod
-   * @param result
-   * @param failureCount
-   * @param expectedExceptionsHolder
-   * @return
-   */
-  int handleInvocationResults(ITestNGMethod testMethod, 
-                                      List<ITestResult> result,
-                                      List<Object> failedInstances,
-                                      int failureCount, 
-                                      ExpectedExceptionsHolder expectedExceptionsHolder,
-                                      boolean triggerListeners,
-                                      boolean collectResults)
-  {
-    //
-    // Go through all the results and create a TestResult for each of them
-    //
-    List<ITestResult> resultsToRetry = Lists.newArrayList();
-
-    for (int i = 0; i < result.size(); i++) {
-      ITestResult testResult = result.get(i);
-      Throwable ite= testResult.getThrowable();
-      int status= testResult.getStatus();
-
-      // Exception thrown?
-      if (ite != null) {
-
-        //  Invocation caused an exception, see if the method was annotated with @ExpectedException
-        if (isExpectedException(ite, expectedExceptionsHolder)) {
-          if (messageRegExpMatches(expectedExceptionsHolder.messageRegExp, ite)) {
-            testResult.setStatus(ITestResult.SUCCESS);
-            status= ITestResult.SUCCESS;
-          }
-          else {
-            testResult.setThrowable(
-                new TestException("The exception was thrown with the wrong message:" +
-                		" expected \"" + expectedExceptionsHolder.messageRegExp + "\"" + 
-                		" but got \"" + ite.getMessage() + "\""));
-            status= ITestResult.FAILURE;
-          }
-        } else if (ite != null && expectedExceptionsHolder != null) {
-          testResult.setThrowable(
-              new TestException("Expected exception "
-                 + expectedExceptionsHolder.expectedClasses[0].getName()
-                 + " but got " + ite));
-          status= ITestResult.FAILURE;
-        }
-        else if (SkipException.class.isAssignableFrom(ite.getClass())){
-          SkipException skipEx= (SkipException) ite;
-          if(skipEx.isSkip()) {
-            status = ITestResult.SKIP;
-          }
-          else {
-            handleException(ite, testMethod, testResult, failureCount++);
-            status = ITestResult.FAILURE;
-          }
-        }
-        else {
-          handleException(ite, testMethod, testResult, failureCount++);
-          status= testResult.getStatus();
-        }
-      }
-
-      // No exception thrown, make sure we weren't expecting one
-      else if(status != ITestResult.SKIP && expectedExceptionsHolder != null) {
-        Class<?>[] classes = expectedExceptionsHolder.expectedClasses;
-        if (classes != null && classes.length > 0) {
-          testResult.setThrowable(
-              new TestException("Method " + testMethod + " should have thrown an exception of "
-                  + expectedExceptionsHolder.expectedClasses[0]));
-          status= ITestResult.FAILURE;
-        }
-      }
-
-      testResult.setStatus(status);
-
-      boolean retry = false;
-      
-      if (testResult.getStatus() == ITestResult.FAILURE) {
-        IRetryAnalyzer retryAnalyzer = testMethod.getRetryAnalyzer();
-
-        if (retryAnalyzer != null) {
-          retry = retryAnalyzer.retry(testResult);
-        }
-
-        if (retry) {
-          resultsToRetry.add(testResult);
-          if (failedInstances != null) {
-            failedInstances.add(testResult.getMethod().getInstances()[i]);
-          }
-        }
-      } 
-      if (!retry || collectResults) {
-        // Collect the results
-        if(ITestResult.SUCCESS == status) {
-          m_notifier.addPassedTest(testMethod, testResult);
-        }
-        else if(ITestResult.SKIP == status) {
-          m_notifier.addSkippedTest(testMethod, testResult);
-        }
-        else if(ITestResult.FAILURE == status) {
-          m_notifier.addFailedTest(testMethod, testResult);
-        }
-        else if(ITestResult.SUCCESS_PERCENTAGE_FAILURE == status) {
-          m_notifier.addFailedButWithinSuccessPercentageTest(testMethod, testResult);
-        }
-        else {
-          assert false : "UNKNOWN STATUS:" + status;
-        }
-
-        if (triggerListeners) {
-          runTestListeners(testResult);
-        }
-      }
-    } // for results
-    
-    return removeResultsToRetryFromResult(resultsToRetry, result, failureCount);
-  }
-  
-  /**
-   *   message / regEx  .*      other
-   *   null             true    false
-   *   non-null         true    match
-   */
-  private boolean messageRegExpMatches(String messageRegExp, Throwable ite) {
-    if (".*".equals(messageRegExp)) {
-      return true;
-    } else {
-      if (ite.getMessage() == null) return false;
-      else return Pattern.matches(messageRegExp, ite.getMessage());
-    }
-  }
-
-  private int removeResultsToRetryFromResult(List<ITestResult> resultsToRetry,
-      List<ITestResult> result, int failureCount) {
-    if (resultsToRetry != null) {
-      for (ITestResult res : resultsToRetry) {
-        result.remove(res);
-        failureCount--;
-      }
-    }
-    return failureCount;
-  }
-  
-  /**
-   * To reduce thread contention and also to correctly handle thread-confinement
-   * this method invokes the @BeforeGroups and @AfterGroups corresponding to the current @Test method.
-   */
-  private List<ITestResult> runWorkers(ITestNGMethod testMethod, 
-      List<IMethodWorker> workers, 
-      int threadPoolSize, 
-      ConfigurationGroupMethods groupMethods, 
-      XmlSuite suite, 
-      Map<String, String> parameters)
-  {
-    // Invoke @BeforeGroups on the original method (reduce thread contention, 
-    // and also solve thread confinement)
-    ITestClass testClass= testMethod.getTestClass();
-    Object[] instances = testClass.getInstances(true);
-    for(Object instance: instances) {
-      invokeBeforeGroupsConfigurations(testClass, testMethod, groupMethods, suite, parameters, instance);
-    }
-    
-    
-    long maxTimeOut= -1; // 10 seconds
-
-    for(IMethodWorker tmw : workers) {
-      long mt= tmw.getMaxTimeOut();
-      if(mt > maxTimeOut) {
-        maxTimeOut= mt;
-      }
-    }
-    
-    ThreadUtil.execute(workers, threadPoolSize, maxTimeOut, true);
-
-    //
-    // Collect all the TestResults
-    //
-    List<ITestResult> result = Lists.newArrayList();
-    for (IMethodWorker tmw : workers) {
-      result.addAll(tmw.getTestResults());
-    }
-    
-    for(Object instance: instances) {
-      invokeAfterGroupsConfigurations(testClass, testMethod, groupMethods, suite, parameters, instance);
-    }
-    
-    return result;
-  }
-
-  /**
-   * @param testMethod
-   * @param testClass
-   * @return dependencies have been run successfully
-   */
-  private boolean checkDependencies(ITestNGMethod testMethod, ITestClass testClass,
-      ITestNGMethod[] allTestMethods)
-  {
-    boolean result= true;
-
-    // If this method is marked alwaysRun, no need to check for its
-    // dependencies
-    if (testMethod.isAlwaysRun()) {
-      return true;
-    }
-    
-    // Any missing group?
-    if (testMethod.getMissingGroup() != null) {
-      if (!testMethod.ignoreMissingDependencies()) return false;
-    }
-
-    // If this method depends on groups, collect all the methods that
-    // belong to these groups and make sure they have been run successfully
-    if(dependsOnGroups(testMethod)) {
-      String[] groupsDependedUpon= testMethod.getGroupsDependedUpon();
-
-      // Get all the methods that belong to the group depended upon
-      for(int i= 0; i < groupsDependedUpon.length; i++) {
-        ITestNGMethod[] methods = 
-          MethodHelper.findMethodsThatBelongToGroup(testMethod, 
-              m_testContext.getAllTestMethods(),
-              groupsDependedUpon[i]);
-
-        result = result && haveBeenRunSuccessfully(methods);
-      }
-    } // depends on groups
-
-    // If this method depends on other methods, make sure all these other
-    // methods have been run successfully
-    if(dependsOnMethods(testMethod)) {
-      ITestNGMethod[] methods = 
-        MethodHelper.findMethodsNamed(testMethod, allTestMethods, testMethod.getMethodsDependedUpon());
-
-      result= result && haveBeenRunSuccessfully(methods);
-    }
-
-    return result;
-  }
-
-  /**
-   * @return true if all the methods have been run successfully
-   */
-  private boolean haveBeenRunSuccessfully(ITestNGMethod[] methods) {
-    // Make sure the method has been run successfully
-    for(int j= 0; j < methods.length; j++) {
-      Set<ITestResult> results= m_notifier.getPassedTests(methods[j]);
-      
-      // If no results were returned, then these tests didn't pass
-      if (results == null || results.size() == 0) return false;
-      
-      for (ITestResult result : results) {
-        if(!result.isSuccess()) {
-          return false;
-        }
-      }
-    }
-
-    return true;
-  }
-
-  /**
-   * An exception was thrown by the test, determine if this method
-   * should be marked as a failure or as failure_but_within_successPercentage
-   */
-  private void handleException(Throwable throwable,
-                               ITestNGMethod testMethod,
-                               ITestResult testResult,
-                               int failureCount) {
-    testResult.setThrowable(throwable);
-    int successPercentage= testMethod.getSuccessPercentage();
-    int invocationCount= testMethod.getInvocationCount();
-    float numberOfTestsThatCanFail= ((100 - successPercentage) * invocationCount) / 100;
-
-    if(failureCount < numberOfTestsThatCanFail) {
-      testResult.setStatus(ITestResult.SUCCESS_PERCENTAGE_FAILURE);
-    }
-    else {
-      testResult.setStatus(ITestResult.FAILURE);
-    }
-
-  }
-
-  /**
-   * @param ite The exception that was just thrown
-   * @param expectedExceptions The list of expected exceptions for this
-   * test method
-   * @return true if the exception that was just thrown is part of the
-   * expected exceptions
-   */
-  private boolean isExpectedException(Throwable ite, ExpectedExceptionsHolder exceptionHolder) {
-    if (exceptionHolder == null) {
-      return false;
-    }
-
-    // TestException is the wrapper exception that TestNG will be throwing when an exception was
-    // expected but not thrown
-    if (ite.getClass() == TestException.class) {
-      return false;
-    }
-
-    Class<?>[] exceptions = exceptionHolder.expectedClasses;
-    String messageRegExp = exceptionHolder.messageRegExp;
-
-    Class<?> realExceptionClass= ite.getClass();
-
-    for(int i= 0; i < exceptions.length; i++) {
-      if (exceptions[i].isAssignableFrom(realExceptionClass)) {
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-  /**
-   * @return Only the ITestNGMethods applicable for this testClass
-   */
-  private ITestNGMethod[] filterMethods(IClass testClass, ITestNGMethod[] methods) {
-    List<ITestNGMethod> vResult= Lists.newArrayList();
-
-    for(ITestNGMethod tm : methods) {
-      if(tm.canRunFromClass(testClass)) {
-        log(9, "Keeping method " + tm + " for class " + testClass);
-        vResult.add(tm);
-      }
-      else {
-        log(9, "Filtering out method " + tm + " for class " + testClass);
-      }
-    }
-
-    ITestNGMethod[] result= vResult.toArray(new ITestNGMethod[vResult.size()]);
-
-    return result;
-  }
-
-  private ITestNGMethod[] filterMethodsUnique(IClass testClass, ITestNGMethod[] methods) {
-    if(null == testClass) {
-      return methods;
-    }
-
-    List<ITestNGMethod> vResult= Lists.newArrayList();
-
-    for(ITestNGMethod tm : methods) {
-      if(null == testClass) {
-        testClass= tm.getTestClass();
-      }
-
-      if(tm.getTestClass().getName().equals(testClass.getName())) {
-        log(9, "        Keeping method " + tm + " for class " + testClass);
-
-        vResult.add(tm);
-      }
-      else {
-        log(9, "        Filtering out method " + tm + " for class " + testClass);
-      }
-    }
-
-    ITestNGMethod[] result= vResult.toArray(new ITestNGMethod[vResult.size()]);
-
-    return result;
-  }
-
-  /**
-   * @return true if this method depends on certain groups.
-   */
-  private boolean dependsOnGroups(ITestNGMethod tm) {
-    String[] groups= tm.getGroupsDependedUpon();
-    boolean result= (null != groups) && (groups.length > 0);
-
-    return result;
-  }
-
-  /**
-   * @return true if this method depends on certain groups.
-   */
-  private boolean dependsOnMethods(ITestNGMethod tm) {
-    String[] methods= tm.getMethodsDependedUpon();
-    boolean result= (null != methods) && (methods.length > 0);
-
-    return result;
-  }
-
-  private void runConfigurationListeners(ITestResult tr) {
-    for(IConfigurationListener icl: m_notifier.getConfigurationListeners()) {
-      switch(tr.getStatus()) {
-        case ITestResult.SKIP:
-          icl.onConfigurationSkip(tr);
-          break;
-        case ITestResult.FAILURE:
-          icl.onConfigurationFailure(tr);
-          break;
-        case ITestResult.SUCCESS:
-          icl.onConfigurationSuccess(tr);
-          break;
-      }
-    }
-  }
-  
-  void runTestListeners(ITestResult tr) {
-    runTestListeners(tr, m_notifier.getTestListeners());
-  }
-  
-  // TODO: move this from here as it is directly called from TestNG
-  public static void runTestListeners(ITestResult tr, List<ITestListener> listeners) {
-    for (ITestListener itl : listeners) {
-      switch(tr.getStatus()) {
-        case ITestResult.SKIP: {
-          itl.onTestSkipped(tr);
-          break;
-        }
-        case ITestResult.SUCCESS_PERCENTAGE_FAILURE: {
-          itl.onTestFailedButWithinSuccessPercentage(tr);
-          break;
-        }
-        case ITestResult.FAILURE: {
-          itl.onTestFailure(tr);
-          break;
-        }
-        case ITestResult.SUCCESS: {
-          itl.onTestSuccess(tr);
-          break;
-        }
-
-        case ITestResult.STARTED: {
-          itl.onTestStart(tr);
-          break;
-        }
-
-        default: {
-          assert false : "UNKNOWN STATUS:" + tr;
-        }
-      }
-    }
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[Invoker]" + s);
-  }
-
-  private void log(int level, String s) {
-    Utils.log("Invoker " + Thread.currentThread().hashCode(), level, s);
-  }
-  
-//  private class DataTestMethodWorker implements IMethodWorker {
-//    final Object[] m_instances;
-//    final ITestNGMethod m_testMethod;
-//    final ITestNGMethod[] m_beforeMethods;
-//    final ITestNGMethod[] m_afterMethods;
-//    final ConfigurationGroupMethods m_groupMethods;
-//    final Object[] m_parameters;
-//    final XmlSuite m_suite;
-//    final Map<String, String> m_allParameterNames;
-//    
-//    List<ITestResult> m_results;
-//    
-//    public DataTestMethodWorker(Object[] instances, 
-//        ITestNGMethod testMethod, 
-//        Object[] params,
-//        ITestNGMethod[] befores, 
-//        ITestNGMethod[] afters, 
-//        ConfigurationGroupMethods groupMethods, 
-//        XmlSuite suite, 
-//        Map<String, String> paramNames) {
-//      m_instances= instances;
-//      m_testMethod= testMethod;
-//      m_parameters= params;
-//      m_beforeMethods= befores;
-//      m_afterMethods= afters;
-//      m_groupMethods= groupMethods;
-//      m_suite= suite;
-//      m_allParameterNames= paramNames;
-//    }
-//    
-//    public long getMaxTimeOut() {
-//      return 0;
-//    }
-//
-//    public void run() {
-//      m_results= invokeTestMethod(m_instances,
-//          m_testMethod,
-//          m_parameters,
-//          m_suite,
-//          m_allParameterNames,
-//          m_testMethod.getTestClass(),
-//          m_beforeMethods,
-//          m_afterMethods,
-//          m_groupMethods);
-//    }
-//
-//    public List<ITestResult> getTestResults() {
-//      return m_results;
-//    }
-//
-//    public List<ITestNGMethod> getMethods() {
-//      return Arrays.asList(m_testMethod);
-//    }
-//
-//    public int getPriority() {
-//      return 1;
-//    }
-//
-//    public int compareTo(IMethodWorker other) {
-//      return getPriority() - other.getPriority();
-//    }
-//
-//  } // DataTestMethodWorker
-  
-  private static class ParameterBag {
-    final ParameterHolder parameterHolder;
-    final List<ITestResult> errorResults= Lists.newArrayList();
-    
-    public ParameterBag(ParameterHolder params, TestResult tr) {
-      parameterHolder = params;
-      if(tr != null) {
-        errorResults.add(tr);
-      }
-    }
-    
-    public boolean hasErrors() {
-      return !errorResults.isEmpty();
-    }
-  }
-
-}
diff --git a/src/org/testng/internal/MapList.java b/src/org/testng/internal/MapList.java
deleted file mode 100644
index 65ce040..0000000
--- a/src/org/testng/internal/MapList.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.testng.internal;
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A container to hold lists indexed by a key.
- */
-public class MapList<K, V> {
-  private Map<K, List<V>> m_objects = Maps.newHashMap();
-
-  public void put(K key, V method) {
-    List<V> l = m_objects.get(key);
-    if (l == null) {
-      l = Lists.newArrayList();
-      m_objects.put(key, l);
-    }
-    l.add(method);
-  }
-
-  public List<V> get(K key) {
-    return m_objects.get(key);
-  }
-
-  public List<K> getKeys() {
-    return new ArrayList(m_objects.keySet());
-//    List<K> result = new ArrayList<K>();
-//    for (K k : m_objects.keySet()) {
-//      result.add(k);
-//    }
-//    Collections.sort(result);
-//    return result;
-  }
-
-  public boolean containsKey(K k) {
-    return m_objects.containsKey(k);
-  }
-
-  @Override
-  public String toString() {
-    StringBuilder result = new StringBuilder();
-    List<K> indices = getKeys();
-//    Collections.sort(indices);
-    for (K i : indices) {
-      result.append("\n    ").append(i).append(" <-- ");
-      for (Object o : m_objects.get(i)) {
-        result.append(o).append(" ");
-      }
-    }
-    return result.toString();
-  }
-
-  public boolean isEmpty() {
-    return m_objects.size() == 0;
-  }
-
-  public int getSize() {
-    return m_objects.size();
-  }
-
-  public List<V> remove(K key) {
-    return m_objects.remove(key);
-  }
-}
diff --git a/src/org/testng/internal/MethodHelper.java b/src/org/testng/internal/MethodHelper.java
deleted file mode 100644
index ac6ed9c..0000000
--- a/src/org/testng/internal/MethodHelper.java
+++ /dev/null
@@ -1,852 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IHookCallBack;
-import org.testng.ITestClass;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.TestNGException;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IExpectedExceptionsAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.annotations.ITestOrConfiguration;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.thread.IExecutor;
-import org.testng.internal.thread.IFutureResult;
-import org.testng.internal.thread.ThreadExecutionException;
-import org.testng.internal.thread.ThreadTimeoutException;
-import org.testng.internal.thread.ThreadUtil;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * Collection of helper methods to help sort and arrange methods.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class MethodHelper {
-//  static private boolean m_quiet = true;
-
-  // ///
-  // public methods
-  //
-
-  public static ITestNGMethod[] collectAndOrderMethods(List<ITestNGMethod> methods, 
-      RunInfo runInfo, IAnnotationFinder finder, List<ITestNGMethod> outExcludedMethods) 
-  {
-    return internalCollectAndOrderMethods(methods.toArray(new ITestNGMethod[methods.size()]), 
-        true /* forTest */, runInfo, finder, false /* unique */, outExcludedMethods);
-  }
-
-  /**
-   * @param methods
-   * @return All the methods that match the filtered groups. If a method belongs
-   *         to an excluded group, it is automatically excluded.
-   */
-  public static ITestNGMethod[] collectAndOrderConfigurationMethods(List<ITestNGMethod> methods, 
-      RunInfo runInfo, IAnnotationFinder finder, boolean unique, List<ITestNGMethod> outExcludedMethods) 
-  {
-    return internalCollectAndOrderMethods(methods.toArray(new ITestNGMethod[methods.size()]), 
-          false /* forTests */, runInfo, finder, unique, outExcludedMethods);      
-  }
-
-  private static ITestNGMethod[] internalCollectAndOrderMethods(ITestNGMethod[] methods,
-      boolean forTests, RunInfo runInfo, IAnnotationFinder finder,
-      boolean unique, List<ITestNGMethod> outExcludedMethods) 
-  {
-    List<ITestNGMethod> includedMethods = Lists.newArrayList();
-    collectMethodsByGroup(methods, 
-        forTests, 
-        includedMethods, 
-        outExcludedMethods, 
-        runInfo, 
-        finder, 
-        unique);
-    List<ITestNGMethod> vResult = sortMethods(forTests, includedMethods, finder);
-
-    ITestNGMethod[] result = vResult.toArray(new ITestNGMethod[vResult.size()]);
-
-    return result;
-  }
-
-
-  /**
-   * @return all the methods that belong to the group specified by the regular
-   * expression groupRegExp.  methods[] is the list of all the methods we
-   * are choosing from and method is the method that owns the dependsOnGroups
-   * statement (only used if a group is missing to flag an error on that method).
-   */
-  public static ITestNGMethod[] findMethodsThatBelongToGroup(
-      ITestNGMethod method,
-      ITestNGMethod[] methods, String groupRegexp) 
-  {
-    boolean foundGroup = false;
-    List<ITestNGMethod> vResult = Lists.newArrayList();
-    for (ITestNGMethod tm : methods) {
-      String[] groups = tm.getGroups();
-      for (String group : groups) {
-        if (Pattern.matches(groupRegexp, group)) {
-          vResult.add(tm);
-          foundGroup = true;
-        }
-      }
-    }
-    
-    if (! foundGroup) {
-      method.setMissingGroup(groupRegexp);
-    }
-
-    ITestNGMethod[] result = vResult.toArray(new ITestNGMethod[vResult.size()]);
-    return result;
-  }
-
-  public static ITestNGMethod[] findMethodsNamed(ITestNGMethod m,
-      ITestNGMethod[] methods, String[] regexps) 
-  {
-    String mainMethod = calculateMethodCanonicalName(m);
-    List<ITestNGMethod> vResult = Lists.newArrayList();
-    String currentRegexp = null;
-    for (String fullyQualifiedRegexp : regexps) {
-      boolean foundAtLeastAMethod = false;
-      
-      if(null != fullyQualifiedRegexp) {
-        String regexp = escapeRegexp(fullyQualifiedRegexp);
-        currentRegexp = regexp;
-        boolean usePackage = regexp.indexOf(".") != -1;
-  
-        for (ITestNGMethod method : methods) {
-          Method thisMethod = method.getMethod();
-          String thisMethodName = thisMethod.getName();
-          String methodName = usePackage ?
-              calculateMethodCanonicalName(thisMethod)
-              : thisMethodName;
-//            ppp("COMPARING\n" + regexp + "\n" + methodName);
-          if (Pattern.matches(regexp, methodName)) {
-            vResult.add(method);
-            foundAtLeastAMethod = true;
-          }
-        }
-      }
-      
-      if (!foundAtLeastAMethod) {
-        if (m.ignoreMissingDependencies()) continue;
-        if (m.isAlwaysRun()) continue;
-        Method maybeReferringTo = findMethodByName(m, currentRegexp);
-        if (maybeReferringTo != null) {
-          throw new TestNGException(mainMethod + "() is not allowed to depend on " + maybeReferringTo);
-        }
-        throw new TestNGException(mainMethod
-            + "() is depending on nonexistent method " + currentRegexp);
-      }
-    }
-
-    ITestNGMethod[] result = vResult.toArray(new ITestNGMethod[vResult.size()]);
-
-    return result;
-  }
-  
-  private static Method findMethodByName(ITestNGMethod mainMethod, String regExp) {
-    if (regExp == null) return null;
-    int lastDot = regExp.lastIndexOf('.');
-    String className, methodName;
-    if (lastDot == -1) {
-      className = mainMethod.getMethod().getDeclaringClass().getCanonicalName();
-      methodName = regExp;
-    } else {
-      methodName = regExp.substring(lastDot+1);
-      className = regExp.substring(0, lastDot);
-    }
-    
-    try {
-      Class<?> c = Class.forName(className);
-      for (Method m : c.getDeclaredMethods()) {
-        if (methodName.equals(m.getName())) return m;
-      }
-    } catch (Exception e) {} // ignore
-    return null;
-  }
-
-  /**
-   * Escapes $ in regexps as it is not meant for end-line matching, but inner class matches.
-   * Impl.is weird as the String methods are not available in 1.4
-   */
-  private static String escapeRegexp(String regex) {
-    if(regex.indexOf('$') == -1) return regex;
-    String[] fragments= regex.split("\\$");
-    StringBuffer result= new StringBuffer();
-    for(int i= 0; i < fragments.length - 1; i++) {
-      result.append(fragments[i]).append("\\$");
-    }
-    result.append(fragments[fragments.length - 1]);
-    if(regex.endsWith("$")) result.append("\\$");
-    
-    return result.toString();
-  }
-  
-  /**
-   * Read the expected exceptions, if any (need to handle both the old and new
-   * syntax)
-   */
-  public static ExpectedExceptionsHolder findExpectedExceptions(IAnnotationFinder finder,
-      Method method) {
-    ExpectedExceptionsHolder result = null;
-    IExpectedExceptionsAnnotation expectedExceptions= 
-      (IExpectedExceptionsAnnotation) finder.findAnnotation(method,
-        IExpectedExceptionsAnnotation.class);
-    // Old syntax
-    if (expectedExceptions != null) {
-      result = new ExpectedExceptionsHolder(expectedExceptions.getValue(), ".*");
-    }
-    else {
-      // New syntax
-      ITestAnnotation testAnnotation = 
-        (ITestAnnotation) finder.findAnnotation(method, ITestAnnotation.class);
-      if (testAnnotation != null) {
-        Class<?>[] ee = testAnnotation.getExpectedExceptions();
-        if (testAnnotation != null && ee.length > 0) {
-          result = new ExpectedExceptionsHolder(ee,
-              testAnnotation.getExpectedExceptionsMessageRegExp());
-        }
-      }
-    }
-    
-    return result;
-  }
-  
-  //
-  // End of public methods
-  // ///
-
-  public static boolean isEnabled(Class<?> objectClass, IAnnotationFinder finder) {
-    ITestAnnotation testClassAnnotation= AnnotationHelper.findTest(finder, objectClass);
-
-    return isEnabled(testClassAnnotation);
-  }
-  
-  public static boolean isEnabled(Method m, IAnnotationFinder finder) {
-    ITestAnnotation annotation = AnnotationHelper.findTest(finder, m);
-    
-    // If no method annotation, look for one on the class
-    if (null == annotation) {
-      annotation = AnnotationHelper.findTest(finder, m.getDeclaringClass());
-    }
-
-    return isEnabled(annotation);   
-  }
-  
-  public static boolean isEnabled(ITestOrConfiguration test) {
-    return null == test || (null != test && test.getEnabled());
-  }
-  
-  public static ITestNGMethod[] findMethodsThatBelongToGroup(
-      ITestNGMethod method,
-      List<ITestNGMethod> methods, String groupRegexp) 
-  {
-    ITestNGMethod[] allMethods = methods.toArray(new ITestNGMethod[methods
-        .size()]);
-    return findMethodsThatBelongToGroup(method, allMethods, groupRegexp);
-  }
-  
-  /**
-   * @return The transitive closure of all the groups/methods included.
-   */
-  public static void findGroupTransitiveClosure(XmlMethodSelector xms,
-      List<ITestNGMethod> includedMethods,
-      List<ITestNGMethod> allMethods,
-      String[] includedGroups,
-      Set<String> outGroups, Set<ITestNGMethod> outMethods)
-  {
-    Map<ITestNGMethod, ITestNGMethod> runningMethods = Maps.newHashMap();
-    for (ITestNGMethod m : includedMethods) {
-      runningMethods.put(m, m);
-    }
-    
-    Map<String, String> runningGroups = Maps.newHashMap();
-    for (String thisGroup : includedGroups) {
-      runningGroups.put(thisGroup, thisGroup);
-    }
-    
-    boolean keepGoing = true;
-    
-    Map<ITestNGMethod, ITestNGMethod> newMethods = Maps.newHashMap();
-    while (keepGoing) {
-      for (ITestNGMethod m : includedMethods) {
-        
-        //
-        // Depends on groups?
-        // Adds all included methods to runningMethods
-        //
-        String[] ig = m.getGroupsDependedUpon();
-        for (String g : ig) {
-          if (! runningGroups.containsKey(g)) {
-            // Found a new included group, add all the methods it contains to
-            // our outMethod closure
-            runningGroups.put(g, g);
-            ITestNGMethod[] im = 
-              findMethodsThatBelongToGroup(m, allMethods, g);
-            for (ITestNGMethod thisMethod : im) {
-              if (! runningMethods.containsKey(thisMethod)) {
-                runningMethods.put(thisMethod, thisMethod);
-                newMethods.put(thisMethod, thisMethod);
-              }
-            }
-          }
-        } // groups
-          
-        //
-        // Depends on methods?
-        // Adds all depended methods to runningMethods
-        //
-        String[] mdu = m.getMethodsDependedUpon();
-        for (String tm : mdu) {
-          ITestNGMethod thisMethod = findMethodNamed(tm, allMethods);
-          if (thisMethod != null && ! runningMethods.containsKey(thisMethod)) {
-            runningMethods.put(thisMethod, thisMethod);
-            newMethods.put(thisMethod, thisMethod);
-          }
-        }
-          
-      } // methods
-      
-      //
-      // Only keep going if new methods have been added
-      //
-      keepGoing = newMethods.size() > 0;
-      includedMethods = Lists.newArrayList();
-      includedMethods.addAll(newMethods.keySet());
-      newMethods = Maps.newHashMap();
-    } // while keepGoing
-    
-    outMethods.addAll(runningMethods.keySet());
-    outGroups.addAll(runningGroups.keySet());
-  }
-  
-  /**
-   * Extracts the map of groups and their corresponding methods from the <code>classes</code>.
-   */
-  public static Map<String, List<ITestNGMethod>> findGroupsMethods(Collection<ITestClass> classes, boolean before) {
-    Map<String, List<ITestNGMethod>> result = Maps.newHashMap();
-    for (ITestClass cls : classes) {
-      ITestNGMethod[] methods = before ? cls.getBeforeGroupsMethods() : cls.getAfterGroupsMethods();
-      for (ITestNGMethod method : methods) {
-        for (String group : before ? method.getBeforeGroups() : method.getAfterGroups()) {
-          List<ITestNGMethod> methodList = result.get(group);
-          if (methodList == null) {
-            methodList = Lists.newArrayList();
-            result.put(group, methodList);
-          }
-          // NOTE(cbeust, 2007/01/23)
-          // BeforeGroups/AfterGroups methods should only be invoked once.
-          // I should probably use a map instead of a list for a contains(), but 
-          // this list should usually be fairly short
-          if (! methodList.contains(method)) {
-            methodList.add(method);
-          }
-        }
-      }
-    }
-    
-    return result;
-  }
-  
-  /**
-   * Extracts the unique list of <code>ITestNGMethod</code>s.
-   */
-  public static List<ITestNGMethod> uniqueMethodList(Collection<List<ITestNGMethod>> methods) {
-    Map<ITestNGMethod, ITestNGMethod> uniq = Maps.newHashMap();
-    
-    for (List<ITestNGMethod> l : methods) {
-      for (ITestNGMethod m : l) {
-        uniq.put(m, m);
-      }
-    }
-    
-    List<ITestNGMethod> result = Lists.newArrayList();
-    result.addAll(uniq.values());
-    
-    return result;
-  }
-  
-  private static ITestNGMethod findMethodNamed(String tm, List<ITestNGMethod> allMethods) {
-    for (ITestNGMethod m : allMethods) {
-      // TODO(cbeust):  account for package
-      String methodName = 
-        m.getMethod().getDeclaringClass().getName() + "." + m.getMethodName();
-      if (methodName.equals(tm)) return m;
-    }
-    
-    return null;
-  }
-  
-  private static boolean includeMethod(ITestOrConfiguration annotation,
-      RunInfo runInfo, ITestNGMethod tm, boolean forTests, boolean unique, List<ITestNGMethod> outIncludedMethods)
-  {
-    boolean result = false;
-    
-    if (isEnabled(annotation)) {
-      if (runInfo.includeMethod(tm, forTests)) {
-        if (unique) {
-          if (!isMethodAlreadyPresent(outIncludedMethods, tm)) {
-            result = true;
-          }
-        }
-        else {
-          result = true;
-        }
-      }
-    }
-    
-    return result;
-  }
-
-  /**
-   * Collect all the methods that belong to the included groups and exclude all
-   * the methods that belong to an excluded group.
-   */
-  private static void collectMethodsByGroup(ITestNGMethod[] methods,
-      boolean forTests, 
-      List<ITestNGMethod> outIncludedMethods, 
-      List<ITestNGMethod> outExcludedMethods, 
-      RunInfo runInfo,
-      IAnnotationFinder finder, boolean unique) 
-  {
-    for (ITestNGMethod tm : methods) {
-      boolean in = false;
-      Method m = tm.getMethod();
-      //
-      // @Test method
-      //
-      if (forTests) {
-        in = includeMethod(AnnotationHelper.findTest(finder, m),
-            runInfo, tm, forTests, unique, outIncludedMethods);
-      }
-      
-      //
-      // @Configuration method
-      //
-      else {
-        IConfigurationAnnotation annotation = AnnotationHelper.findConfiguration(finder, m);
-        if (annotation.getAlwaysRun()) {
-          in = true;
-        }
-        else {
-          in = includeMethod(AnnotationHelper.findTest(finder, m),
-              runInfo, tm, forTests, unique, outIncludedMethods);
-        }
-      }
-      if (in) {
-        outIncludedMethods.add(tm);
-      }
-      else {
-        outExcludedMethods.add(tm);
-      }
-    }
-  }
-
-  /**
-   * @param result
-   * @param tm
-   * @return true if a method by a similar name (and same hierarchy) already
-   *         exists
-   */
-  private static boolean isMethodAlreadyPresent(List<ITestNGMethod> result,
-      ITestNGMethod tm) {
-    for (ITestNGMethod m : result) {
-      Method jm1 = m.getMethod();
-      Method jm2 = tm.getMethod();
-      if (jm1.getName().equals(jm2.getName())) {
-        // Same names, see if they are in the same hierarchy
-        Class<?> c1 = jm1.getDeclaringClass();
-        Class<?> c2 = jm2.getDeclaringClass();
-        if (c1.isAssignableFrom(c2) || c2.isAssignableFrom(c1)) {
-          return true;
-        }
-      }
-    }
-
-    return false;
-  }
-
-  static public Graph<ITestNGMethod> topologicalSort(ITestNGMethod[] methods,
-      List<ITestNGMethod> sequentialList, List<ITestNGMethod> parallelList) {
-    Graph<ITestNGMethod> result = new Graph<ITestNGMethod>();
-
-    if (methods.length == 0) return result;
-    
-    //
-    // Create the graph
-    //
-    for (ITestNGMethod m : methods) {
-      result.addNode(m);
-
-      Map<ITestNGMethod, ITestNGMethod> predecessors = Maps.newHashMap();
-
-      String[] methodsDependedUpon = m.getMethodsDependedUpon();
-      String[] groupsDependedUpon = m.getGroupsDependedUpon();
-      if (methodsDependedUpon.length > 0) {
-        ITestNGMethod[] methodsNamed = 
-          MethodHelper.findMethodsNamed(m, methods, methodsDependedUpon);
-        for (ITestNGMethod pred : methodsNamed) {
-          predecessors.put(pred, pred);
-        }
-      }
-      if (groupsDependedUpon.length > 0) {
-        for (String group : groupsDependedUpon) {
-          ITestNGMethod[] methodsThatBelongToGroup = 
-            MethodHelper.findMethodsThatBelongToGroup(m, methods, group);
-          for (ITestNGMethod pred : methodsThatBelongToGroup) {
-            predecessors.put(pred, pred);
-          }
-        }
-      }
-
-      for (ITestNGMethod predecessor : predecessors.values()) {
-        // ppp("METHOD:" + m + " ADDED PREDECESSOR:" + predecessor);
-        result.addPredecessor(m, predecessor);
-      }
-    }
-
-    result.topologicalSort();
-    sequentialList.addAll(result.getStrictlySortedNodes());
-    parallelList.addAll(result.getIndependentNodes());
-
-    return result;
-  }
-
-  public static String calculateMethodCanonicalName(ITestNGMethod m) {
-    return calculateMethodCanonicalName(m.getMethod());
-  }
-  
-  private static String calculateMethodCanonicalName(Method m) {
-    String packageName = m.getDeclaringClass().getName() + "." + m.getName(); 
-    
-    // Try to find the method on this class or parents
-    Class<?> cls = m.getDeclaringClass();
-    while (cls != Object.class) {
-      try {
-        if (cls.getDeclaredMethod(m.getName(), m.getParameterTypes()) != null) {
-          packageName = cls.getName();
-          break;
-        }
-      }
-      catch (Exception e) {
-        // ignore
-      }    
-      cls = cls.getSuperclass();
-    }
-    
-    String result = packageName + "." + m.getName();
-    return result;
-  }
-
-  private static List<ITestNGMethod> sortMethods(boolean forTests, 
-      List<ITestNGMethod> allMethods, IAnnotationFinder finder) {
-    List<ITestNGMethod> sl = Lists.newArrayList();
-    List<ITestNGMethod> pl = Lists.newArrayList();
-    ITestNGMethod[] allMethodsArray = allMethods.toArray(new ITestNGMethod[allMethods.size()]);
-
-    // Fix the method inheritance if these are @Configuration methods to make
-    // sure base classes are invoked before child classes if 'before' and the
-    // other way around if they are 'after'
-    if (!forTests && allMethodsArray.length > 0) {
-      ITestNGMethod m = allMethodsArray[0];
-      boolean before = m.isBeforeClassConfiguration()
-          || m.isBeforeMethodConfiguration() || m.isBeforeSuiteConfiguration()
-          || m.isBeforeTestConfiguration();
-      MethodInheritance.fixMethodInheritance(allMethodsArray, before);
-    }
-
-    topologicalSort(allMethodsArray, sl, pl);
-
-    List<ITestNGMethod> result = Lists.newArrayList();
-    result.addAll(sl);
-    result.addAll(pl);
-    return result;
-  }
-
-  public static void ppp(String s) {
-    System.out.println("[MethodHelper] " + s);
-  }
-
-  /**
-   * @param method
-   * @param allTestMethods
-   * @return A sorted array containing all the methods 'method' depends on
-   */
-  public static List<ITestNGMethod> getMethodsDependedUpon(ITestNGMethod method, ITestNGMethod[] methods) {
-    List<ITestNGMethod> parallelList = Lists.newArrayList();
-    List<ITestNGMethod> sequentialList = Lists.newArrayList();
-    Graph<ITestNGMethod> g = topologicalSort(methods, sequentialList, parallelList);
-
-    List<ITestNGMethod> result = g.findPredecessors(method);
-    return result;
-  }
-
-  public static Object invokeMethod(Method thisMethod, Object instance, Object[] parameters) 
-  throws InvocationTargetException, IllegalAccessException 
-  {
-    Object result = null;
-    // TESTNG-326, allow IObjectFactory to load from non-standard classloader
-    // If the instance has a different classloader, its class won't match the method's class
-    if (!thisMethod.getDeclaringClass().isAssignableFrom(instance.getClass())) {
-      // for some reason, we can't call this method on this class
-      // is it static?
-      boolean isStatic = Modifier.isStatic(thisMethod.getModifiers());
-      if (!isStatic) {
-        // not static, so grab a method with the same name and signature in this case
-        Class<?> clazz = instance.getClass();
-        try {
-          thisMethod = clazz.getMethod(thisMethod.getName(), thisMethod.getParameterTypes());
-        } catch (Exception e) {
-          // ignore, the method may be private
-          boolean found = false;
-          for (; clazz != null; clazz = clazz.getSuperclass()) {
-            try {
-              thisMethod = clazz.getDeclaredMethod(thisMethod.getName(), thisMethod.getParameterTypes());
-              found = true;
-              break;
-            } catch (Exception e2) {}
-          }
-          if (!found) {
-            //should we assert here?  Or just allow it to fail on invocation?
-            if (thisMethod.getDeclaringClass().getName().equals(instance.getClass().getName())) {
-              throw new RuntimeException("Can't invoke method " + thisMethod + ", probably due to classloader mismatch");
-            }
-            throw new RuntimeException("Can't invoke method " + thisMethod + " on this instance of " + instance.getClass()+ " due to class mismatch");
-          }
-        }
-      }
-      
-      
-      
-    }
-
-    boolean isPublic = Modifier.isPublic(thisMethod.getModifiers());
-
-    try {
-      if (!isPublic) {
-        thisMethod.setAccessible(true);
-      }
-      result = thisMethod.invoke(instance, parameters);
-    }
-    finally {
-      if (!isPublic) {
-        thisMethod.setAccessible(false);
-      }
-    }
-
-    return result;
-  }
-
-  public static Iterator<Object[]> createArrayIterator(final Object[][] objects) {
-    ArrayIterator result = new ArrayIterator(objects);
-    return result;
-  }
-
-  public static Iterator<Object[]> invokeDataProvider(Object instance, 
-      Method dataProvider, ITestNGMethod method, ITestContext testContext,
-      Object fedInstance, IAnnotationFinder annotationFinder)
-  {
-    Iterator<Object[]> result = null;
-    Method testMethod = method.getMethod();
-
-    // If it returns an Object[][], convert it to an Iterable<Object[]>
-    try {
-      List<Object> lParameters = Lists.newArrayList();
-
-      // Go through all the parameters declared on this Data Provider and
-      // make sure we have at most one Method and one ITestContext.
-      // Anything else is an error
-      Class<?>[] parameterTypes = dataProvider.getParameterTypes();
-      if (parameterTypes.length > 2) {
-        throw new TestNGException("DataProvider " + dataProvider + " cannot have more than two parameters");
-      }
-      
-      int i = 0;
-      for (Class<?> cls : parameterTypes) {
-        boolean isTestInstance = annotationFinder.hasTestInstance(dataProvider, i++); 
-        if (cls.equals(Method.class)) {
-          lParameters.add(testMethod);
-        }
-        else if (cls.equals(ITestContext.class)) {
-          lParameters.add(testContext);
-        }
-        else if (isTestInstance) {
-          lParameters.add(fedInstance);
-        }
-      }
-      Object[] parameters = lParameters.toArray(new Object[lParameters.size()]);
-      
-      Class< ? > returnType = dataProvider.getReturnType();
-      if (Object[][].class.isAssignableFrom(returnType)) {
-        Object[][] oResult = (Object[][]) MethodHelper.invokeMethod(
-            dataProvider, instance, parameters);
-        method.setParameterInvocationCount(oResult.length);
-        result = MethodHelper.createArrayIterator(oResult);
-      }
-      else if (Iterator.class.isAssignableFrom(returnType)) {
-        // Already an Iterable<Object[]>, assign it directly
-        result = (Iterator<Object[]>) MethodHelper.invokeMethod(dataProvider,
-            instance, parameters);
-      }
-      else {
-        throw new TestNGException("Data Provider " + dataProvider
-            + " must return" + " either Object[][] or Iterator<Object>[], not "
-            + returnType);
-      }
-    }
-    catch (InvocationTargetException e) {
-      throw new TestNGException(e);
-    }
-    catch (IllegalAccessException e) {
-      throw new TestNGException(e);
-    }
-
-    return result;
-  }
-
-  public static String calculateMethodCanonicalName(Class<?> methodClass, String methodName) {
-    Set<Method> methods = ClassHelper.getAvailableMethods(methodClass); // TESTNG-139
-    Method result = null;
-    for (Method m : methods) {
-      if (methodName.equals(m.getName())) {
-        result = m;
-        break;
-      }
-    }
-    
-    return result != null ? calculateMethodCanonicalName(result) : null;
-  }
-
-  /**
-   * Invokes the <code>run</code> method of the <code>IHookable</code>.
-   * 
-   * @param instance the instance to invoke the method in
-   * @param parameters the parameters to be passed to <code>IHookCallBack</code>
-   * @param testClass the test class
-   * @param thisMethod the method to be invoked through the <code>IHookCallBack</code>
-   * @param testResult the current <code>ITestResult</code> passed to <code>IHookable.run</code>
-   * @throws NoSuchMethodException
-   * @throws IllegalAccessException
-   * @throws InvocationTargetException
-   * @throws Throwable thrown if the reflective call to <tt>thisMethod</code> results in an exception
-   */
-  public static void invokeHookable(final Object instance, 
-                                    final Object[] parameters, 
-                                    ITestClass testClass, 
-                                    final Method thisMethod, 
-                                    TestResult testResult) 
-  throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, Throwable 
-  {
-    Method runMethod = testClass.getRealClass().getMethod("run", 
-        new Class[] { IHookCallBack.class, ITestResult.class });
-    final Throwable[] error = new Throwable[1];
-    
-    IHookCallBack callback = new IHookCallBack() {
-      public void runTestMethod(ITestResult tr) {
-        try {
-          invokeMethod(thisMethod, instance, parameters);
-         }
-         catch(Throwable t) {
-           error[0] = t;
-           tr.setThrowable( t ); // make Throwable available to IHookable
-         }
-       }
-    };
-    runMethod.invoke(instance, new Object[]{callback, testResult});
-    if (error[0] != null) {
-      throw error[0];
-    }
-  }
-  
-  public static long calculateTimeOut(ITestNGMethod tm) {
-    long result = tm.getTimeOut() > 0 ? tm.getTimeOut() : tm.getInvocationTimeOut();
-    return result;
-  }
-
-  /**
-   * Invokes a method on a separate thread in order to allow us to timeout the invocation.
-   * It uses as implementation an <code>Executor</code> and a <code>CountDownLatch</code>.
-   * @param tm the 
-   * @param instance
-   * @param parameterValues
-   * @param testResult
-   * @throws InterruptedException
-   * @throws ThreadExecutionException
-   */
-  public static void invokeWithTimeout(ITestNGMethod tm, Object instance, Object[] parameterValues, 
-      ITestResult testResult) 
-  throws InterruptedException, ThreadExecutionException {
-//    ICountDown done= ThreadUtil.createCountDown(1);
-//    IThreadFactory factory= ThreadUtil.createFactory();
-    IExecutor exec= ThreadUtil.createExecutor(1, tm.getMethod().getName());
-  
-    InvokeMethodRunnable imr = new InvokeMethodRunnable(tm, instance, parameterValues);
-    IFutureResult future= exec.submitRunnable(imr);
-    exec.shutdown();
-    long realTimeOut = calculateTimeOut(tm);
-    boolean finished= exec.awaitTermination(realTimeOut);
-  
-    if(!finished) {
-      exec.stopNow();
-      ThreadTimeoutException exception = new ThreadTimeoutException("Method "
-        + tm.getMethod()
-        + " didn't finish within the time-out "
-        + realTimeOut);
-      exception.setStackTrace(exec.getStackTraces()[0]);
-      testResult.setThrowable(exception);
-      testResult.setStatus(ITestResult.FAILURE);
-    }
-    else {
-      Utils.log("Invoker " + Thread.currentThread().hashCode(), 3, 
-          "Method " + tm.getMethod() + " completed within the time-out " + tm.getTimeOut());
-      
-      // We don't need the result from the future but invoking get() on it
-      // will trigger the exception that was thrown, if any
-      future.get();
-//      done.await();
-  
-      testResult.setStatus(ITestResult.SUCCESS); // if no exception till here than SUCCESS
-    }
-  }
-}
-
-// ///
-
-class ArrayIterator implements Iterator {
-  private Object[][] m_objects;
-
-  private int m_count;
-
-  public ArrayIterator(Object[][] objects) {
-    m_objects = objects;
-    m_count = 0;
-  }
-
-  public boolean hasNext() {
-    return m_count < m_objects.length;
-  }
-
-  public Object next() {
-    return m_objects[m_count++];
-  }
-
-  public void remove() {
-    // TODO Auto-generated method stub
-
-  }
-
-}
diff --git a/src/org/testng/internal/MethodInheritance.java b/src/org/testng/internal/MethodInheritance.java
deleted file mode 100755
index 6172e44..0000000
--- a/src/org/testng/internal/MethodInheritance.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestNGMethod;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-public class MethodInheritance {
-  /**
-   * Look in map for a class that is a superclass of methodClass
-   * @param map
-   * @param methodClass
-   * @return
-   */
-  private static List<ITestNGMethod> findMethodListSuperClass(Map<Class, List<ITestNGMethod>> map, 
-      Class< ? extends ITestNGMethod> methodClass)
-  {
-    for (Class cls : map.keySet()) {
-      if (cls.isAssignableFrom(methodClass)) {
-        return map.get(cls);
-      }
-    }
-    
-    return null;
-  }
-  
-  /**
-   * Look in map for a class that is a subclass of methodClass
-   * @param map
-   * @param methodClass
-   * @return
-   */
-  private static Class findSubClass(Map<Class, List<ITestNGMethod>> map, 
-      Class< ? extends ITestNGMethod> methodClass)
-  {
-    for (Class cls : map.keySet()) {
-      if (methodClass.isAssignableFrom(cls)) {
-        return cls; 
-      }
-    }
-    
-    return null;
-  }
-
-  /**
-   * Fix the methodsDependedUpon to make sure that @Configuration methods
-   * respect inheritance (before methods are invoked in the order Base first
-   * and after methods are invoked in the order Child first)
-   * 
-   * @param methods
-   * @param baseClassToChild
-   */
-  public static void fixMethodInheritance(ITestNGMethod[] methods, boolean baseClassToChild) {
-    // Map of classes -> List of methods that belong to this class or same hierarchy
-    Map<Class, List<ITestNGMethod>> map = Maps.newHashMap();
-    
-    //
-    // First, make sure that none of these methods define a dependency of its own
-    //
-    for (ITestNGMethod m : methods) {
-      String[] mdu = m.getMethodsDependedUpon();
-      String[] groups = m.getGroupsDependedUpon();
-      if ((mdu != null && mdu.length > 0) || (groups != null && groups.length > 0)) {
-        return;
-      }
-    }
-    
-    //
-    // Put the list of methods in their hierarchy buckets
-    //
-    for (ITestNGMethod method : methods) {
-      Class< ? extends ITestNGMethod> methodClass = method.getRealClass();
-      List<ITestNGMethod> l = findMethodListSuperClass(map, methodClass);
-      if (null != l) {
-        l.add(method);
-      }
-      else {
-        Class subClass = findSubClass(map, methodClass);
-        if (null != subClass) {
-          l = map.get(subClass);
-          l.add(method);
-          map.remove(subClass);
-          map.put(methodClass, l);
-        }
-        else {
-          l = Lists.newArrayList();
-          l.add(method);
-          map.put(methodClass, l);
-        }
-      }
-    }
-    
-    //
-    // Each bucket that has a list bigger than one element gets sorted
-    //
-    for (List<ITestNGMethod> l : map.values()) {
-      if (l.size() > 1) {
-        // Sort them
-        sortMethodsByInheritance(l, baseClassToChild);
-        
-        // Set methodDependedUpon accordingly
-        if (baseClassToChild) {
-          for (int i = 1; i < l.size(); i++) {
-            ITestNGMethod m1 = l.get(i - 1);
-            ITestNGMethod m2 = l.get(i);
-            if (! equalsEffectiveClass(m1, m2)) {
-              Utils.log("MethodInheritance", 4, m2 + " DEPENDS ON " + m1);
-              m2.addMethodDependedUpon(MethodHelper.calculateMethodCanonicalName(m1));
-            }
-          }
-        }
-        else {
-          for (int i = 0; i < l.size() - 1; i++) {
-            ITestNGMethod m1 = l.get(i);
-            ITestNGMethod m2 = l.get(i + 1);
-            if (! equalsEffectiveClass(m1, m2)) {
-              m2.addMethodDependedUpon(MethodHelper.calculateMethodCanonicalName(m1));
-              Utils.log("MethodInheritance", 4, m2 + " DEPENDS ON " + m1);
-            }
-          }          
-        }
-      }
-    }
-  }
-  
-  private static boolean equalsEffectiveClass(ITestNGMethod m1, ITestNGMethod m2) {
-    try {
-      Class c1 = m1.getRealClass();
-      Class c2 = m2.getRealClass();
-      
-      boolean isEqual = c1 == null ? c2 == null : c1.equals(c2);
-      
-      return isEqual; // && m1.getMethod().equals(m2.getMethod());
-    }
-    catch(Exception ex) {
-      return false;
-    }
-  }
-
-  
-  /**
-   * Given a list of methods belonging to the same class hierarchy, orders them
-   * from the base class to the child (if true) or from child to base class (if false)
-   * @param methods
-   */
-  private static void sortMethodsByInheritance(List<ITestNGMethod> methods, 
-      boolean baseClassToChild)
-  {
-    Collections.sort(methods);
-    if (! baseClassToChild) {
-      Collections.reverse(methods);
-    }
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[MethodInheritance] " + s);
-  }
-}
diff --git a/src/org/testng/internal/MethodInstance.java b/src/org/testng/internal/MethodInstance.java
deleted file mode 100755
index f9d692b..0000000
--- a/src/org/testng/internal/MethodInstance.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IMethodInstance;
-import org.testng.ITestNGMethod;
-
-import java.util.Comparator;
-
-public class MethodInstance implements IMethodInstance {
-  private ITestNGMethod m_method;
-  private Object[] m_instances;
-
-  public MethodInstance(ITestNGMethod method, Object[] instances) {
-    m_method = method;
-    m_instances = instances;
-  }
-
-  public ITestNGMethod getMethod() {
-    return m_method;
-  }
-
-  public Object[] getInstances() {
-    return m_instances;
-  }
-  
-  public String toString() {
-    return "[MethodInstance m:" + m_method + " i:" + m_instances[0];
-  }
-
-  public static final Comparator<IMethodInstance> SORT_BY_CLASS 
-    = new Comparator<IMethodInstance>() {
-    public int compare(IMethodInstance o1, IMethodInstance o2) {
-      int result= o1.getMethod().getTestClass().getName()
-        .compareTo(o2.getMethod().getTestClass().getName());
-//      if(result == 0) {
-//        // if they have a single instance try to use it while performing the order 
-//        Object[] i1= o1.getInstances();
-//        Object[] i2= o2.getInstances();
-//        if(i1.length == 1 && i1.length == i2.length) {
-//            int h1= i1[0].hashCode();
-//            int h2= i2[0].hashCode();
-//            if(h1 != h2) {
-//              return h1 > h2 ? 1 : -1;
-//            } 
-//        }
-//      }
-
-      return result;
-    }
-  };
-
-}
diff --git a/src/org/testng/internal/MethodSelectorDescriptor.java b/src/org/testng/internal/MethodSelectorDescriptor.java
deleted file mode 100755
index 561f55f..0000000
--- a/src/org/testng/internal/MethodSelectorDescriptor.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.testng.internal;
-
-import java.util.List;
-
-import org.testng.IMethodSelector;
-import org.testng.ITestNGMethod;
-
-/**
- * This class describes a method selector: 
- * - The class that implements it
- * - Its priority
- * 
- * Created on Sep 26, 2005
- * @author cbeust
- */
-public class MethodSelectorDescriptor implements Comparable {
-  private IMethodSelector m_methodSelector;
-  private int m_priority;
-  
-  public int getPriority() {
-    return m_priority;
-  }
-
-  public IMethodSelector getMethodSelector() {
-    return m_methodSelector;
-  }
-
-  public MethodSelectorDescriptor(IMethodSelector selector, int priority) {
-    m_methodSelector = selector;
-    m_priority = priority;
-  }
-
-  public int compareTo(Object o) {
-    int result = 0;
-    
-    try {
-      MethodSelectorDescriptor other = (MethodSelectorDescriptor) o;
-      int p1 = getPriority();
-      int p2 = other.getPriority();
-      result = p1 - p2;
-    }
-    catch(Exception ex) {
-      // ignore
-    }
-    
-    return result;
-  }
-
-  public void setTestMethods(List<ITestNGMethod> testMethods) {
-    m_methodSelector.setTestMethods(testMethods);
-    
-  }
-}
diff --git a/src/org/testng/internal/NoOpTestClass.java b/src/org/testng/internal/NoOpTestClass.java
deleted file mode 100755
index e20bc6d..0000000
--- a/src/org/testng/internal/NoOpTestClass.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package org.testng.internal;
-
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.IClass;
-import org.testng.ITestClass;
-import org.testng.ITestNGMethod;
-
-/**
- * This class/interface
- */
-public class NoOpTestClass implements ITestClass {
-  protected Class m_testClass= null;
-
-  // Information about this test run
-  protected String m_testName= null;
-
-  // Test methods
-  protected ITestNGMethod[] m_beforeClassMethods= null;
-  protected ITestNGMethod[] m_beforeTestMethods= null;
-  protected ITestNGMethod[] m_testMethods= null;
-  protected ITestNGMethod[] m_afterClassMethods= null;
-  protected ITestNGMethod[] m_afterTestMethods= null;
-  protected ITestNGMethod[] m_beforeSuiteMethods= null;
-  protected ITestNGMethod[] m_afterSuiteMethods= null;
-  protected ITestNGMethod[] m_beforeTestConfMethods= null;
-  protected ITestNGMethod[] m_afterTestConfMethods= null;
-  protected ITestNGMethod[] m_beforeGroupsMethods= null;
-  protected ITestNGMethod[] m_afterGroupsMethods= null;
-
-  private Object[] m_instances;
-  private long[] m_instanceHashes;
-
-  protected NoOpTestClass() {
-  }
-
-  public NoOpTestClass(ITestClass testClass) {
-    m_testClass= testClass.getRealClass();
-    m_testName= testClass.getName();
-    m_beforeSuiteMethods= testClass.getBeforeSuiteMethods();
-    m_beforeTestConfMethods= testClass.getBeforeTestConfigurationMethods();
-    m_beforeGroupsMethods= testClass.getBeforeGroupsMethods();
-    m_beforeClassMethods= testClass.getBeforeClassMethods();
-    m_beforeTestMethods= testClass.getBeforeTestMethods();
-    m_afterSuiteMethods= testClass.getAfterSuiteMethods();
-    m_afterTestConfMethods= testClass.getAfterTestConfigurationMethods();
-    m_afterGroupsMethods= testClass.getAfterGroupsMethods();
-    m_afterClassMethods= testClass.getAfterClassMethods();
-    m_afterTestMethods= testClass.getAfterTestMethods();
-    m_instances= testClass.getInstances(true);
-    m_instanceHashes= testClass.getInstanceHashCodes();
-  }
-
-  public void setBeforeTestMethods(ITestNGMethod[] beforeTestMethods) {
-    m_beforeTestMethods= beforeTestMethods;
-  }
-
-  public void setAfterTestMethod(ITestNGMethod[] afterTestMethods) {
-    m_afterTestMethods= afterTestMethods;
-  }
-
-  /**
-   * @return Returns the afterClassMethods.
-   */
-  public ITestNGMethod[] getAfterClassMethods() {
-    return m_afterClassMethods;
-  }
-
-  /**
-   * @return Returns the afterTestMethods.
-   */
-  public ITestNGMethod[] getAfterTestMethods() {
-    return m_afterTestMethods;
-  }
-
-  /**
-   * @return Returns the beforeClassMethods.
-   */
-  public ITestNGMethod[] getBeforeClassMethods() {
-    return m_beforeClassMethods;
-  }
-
-  /**
-   * @return Returns the beforeTestMethods.
-   */
-  public ITestNGMethod[] getBeforeTestMethods() {
-    return m_beforeTestMethods;
-  }
-
-  /**
-   * @return Returns the testMethods.
-   */
-  public ITestNGMethod[] getTestMethods() {
-    return m_testMethods;
-  }
-
-  public ITestNGMethod[] getBeforeSuiteMethods() {
-    return m_beforeSuiteMethods;
-  }
-
-  public ITestNGMethod[] getAfterSuiteMethods() {
-    return m_afterSuiteMethods;
-  }
-
-  public ITestNGMethod[] getBeforeTestConfigurationMethods() {
-    return m_beforeTestConfMethods;
-  }
-
-  public ITestNGMethod[] getAfterTestConfigurationMethods() {
-    return m_afterTestConfMethods;
-  }
-
-  /**
-   * @return all @Configuration methods that should be invoked before certain groups
-   */
-  public ITestNGMethod[] getBeforeGroupsMethods() {
-    return m_beforeGroupsMethods;
-  }
-
-  /**
-   * @return all @Configuration methods that should be invoked after certain groups
-   */
-  public ITestNGMethod[] getAfterGroupsMethods() {
-    return m_afterGroupsMethods;
-  }
-
-  /**
-   * @see org.testng.ITestClass#getInstanceCount()
-   */
-  public int getInstanceCount() {
-    return m_instances.length;
-  }
-
-  /**
-   * @see org.testng.ITestClass#getInstanceHashCodes()
-   */
-  public long[] getInstanceHashCodes() {
-    return m_instanceHashes;
-  }
-
-  /**
-   * @see org.testng.ITestClass#getInstances(boolean)
-   */
-  public Object[] getInstances(boolean reuse) {
-    return m_instances;
-  }
-
-  public String getName() {
-    return m_testClass.getName();
-  }
-
-  public Class getRealClass() {
-    return m_testClass;
-  }
-
-  /**
-   * @see org.testng.IClass#addInstance(java.lang.Object)
-   */
-  public void addInstance(Object instance) {
-  }
-
-  public void setTestClass(Class< ? > declaringClass) {
-    m_testClass = declaringClass;
-  }
-
-  public String getTestName() {
-    // TODO Auto-generated method stub
-    return null;
-  }
-}
diff --git a/src/org/testng/internal/ObjectFactoryImpl.java b/src/org/testng/internal/ObjectFactoryImpl.java
deleted file mode 100755
index 63a3519..0000000
--- a/src/org/testng/internal/ObjectFactoryImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.testng.internal;
-
-import java.lang.reflect.Constructor;
-
-import org.testng.IObjectFactory;
-import org.testng.TestNGException;
-
-/**
- * Default factory for test creation.
- * Note that if no constructor is found matching the specified parameters,
- * this factory will try to invoke a constructor that takes in a string object
- * 
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 12:00:27 PM
- * @since 5.6
- */
-public class ObjectFactoryImpl implements IObjectFactory {
-  
-  public Object newInstance(Constructor constructor, Object... params) {
-    Class[] paramClasses = new Class[params.length];
-    for(int i = 0; i < params.length; i++) {
-      paramClasses[i] = params[i].getClass();
-    }
-    try {
-      return constructor.newInstance(params);
-    }
-    catch (IllegalAccessException ex) {
-      return ClassHelper.tryOtherConstructor(constructor.getDeclaringClass());
-    }
-    catch (InstantiationException ex) {
-      return ClassHelper.tryOtherConstructor(constructor.getDeclaringClass());
-    }
-    catch(Exception ex) {
-      throw new TestNGException("Cannot instantiate class " + constructor.getDeclaringClass().getName(), ex);
-    }
-  }
-}
diff --git a/src/org/testng/internal/PackageUtils.java b/src/org/testng/internal/PackageUtils.java
deleted file mode 100644
index 8bfcc29..0000000
--- a/src/org/testng/internal/PackageUtils.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package org.testng.internal;
-
-import org.testng.TestNGCommandLineArgs;
-import org.testng.collections.Lists;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.regex.Pattern;
-
-/**
- * Utility class that finds all the classes in a given package.
- * 
- * Created on Feb 24, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class PackageUtils {
-  private static String[] s_testClassPaths;
-  
-  /**
-   *
-   * @param packageName
-   * @return The list of all the classes inside this package
-   * @throws IOException
-   */
-  public static String[] findClassesInPackage(String packageName, 
-      List<String> included, List<String> excluded)
-    throws IOException 
-  {
-    String packageOnly = packageName;
-    boolean recursive = false;
-    if (packageName.endsWith(".*")) {
-      packageOnly = packageName.substring(0, packageName.lastIndexOf(".*"));
-      recursive = true;
-    }
-  
-    List<String> vResult = Lists.newArrayList();
-    String packageDirName = packageOnly.replace('.', '/');
-    Enumeration<URL> dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);
-    while (dirs.hasMoreElements()) {
-      URL url = dirs.nextElement();
-      String protocol = url.getProtocol();
-      if(!matchTestClasspath(url, packageDirName, recursive)) {
-        continue;
-      }
-      
-      if ("file".equals(protocol)) {
-        findClassesInDirPackage(packageOnly, included, excluded,
-                                URLDecoder.decode(url.getFile(), "UTF-8"),
-                                recursive,
-                                vResult);
-      }
-      else if ("jar".equals(protocol)) {
-        JarFile jar = ((JarURLConnection) url.openConnection()).getJarFile();
-        Enumeration<JarEntry> entries = jar.entries();
-        while (entries.hasMoreElements()) {
-          JarEntry entry = entries.nextElement();
-          String name = entry.getName();
-          if (name.charAt(0) == '/') {
-            name = name.substring(1);
-          }
-          if (name.startsWith(packageDirName)) {
-            int idx = name.lastIndexOf('/');
-            if (idx != -1) {
-              packageName = name.substring(0, idx).replace('/', '.');
-            }
-  
-            Utils.log("PackageUtils", 4, "Package name is " + packageName);
-            if ((idx != -1) || recursive) {
-              //it's not inside a deeper dir
-              if (name.endsWith(".class") && !entry.isDirectory()) {
-                String className = name.substring(packageName.length() + 1, name.length() - 6);
-                Utils.log("PackageUtils", 4, "Found class " + className + ", seeing it if it's included or excluded");
-                includeOrExcludeClass(packageName, className, included, excluded, vResult);
-              }
-            }
-          }
-        }
-      }
-    }
-  
-    String[] result = vResult.toArray(new String[vResult.size()]); 
-    return result;
-  }
-
-  private static String[] getTestClasspath() {
-    if(null != s_testClassPaths) {
-      return s_testClassPaths;
-    }
-    
-    String testClasspath= System.getProperty(TestNGCommandLineArgs.TEST_CLASSPATH);
-    if(null == testClasspath) {
-      return null;
-    }
-    
-    String[] classpathFragments= Utils.split(testClasspath, File.pathSeparator);
-    s_testClassPaths= new String[classpathFragments.length];
-    
-    for(int i= 0; i < classpathFragments.length; i++)  {
-      String path= null;
-      if(classpathFragments[i].toLowerCase().endsWith(".jar") || classpathFragments[i].toLowerCase().endsWith(".zip")) {
-        path= classpathFragments[i] + "!/";
-      }
-      else {
-        if(classpathFragments[i].endsWith(File.separator)) {
-          path= classpathFragments[i];
-        }
-        else {
-          path= classpathFragments[i] + "/";
-        }
-      }
-      
-      s_testClassPaths[i]= path.replace('\\', '/');
-    }
-    
-    return s_testClassPaths;
-  }
-  
-  /**
-   * @param url
-   * @return
-   */
-  private static boolean matchTestClasspath(URL url, String lastFragment, boolean recursive) {
-    String[] classpathFragments= getTestClasspath();
-    if(null == classpathFragments) {
-      return true;
-    }
-    
-    String protocol = url.getProtocol();
-    String fileName= null;
-    try {
-      fileName= URLDecoder.decode(url.getFile(), "UTF-8");
-    }
-    catch(UnsupportedEncodingException ueex) {
-      ; // ignore. should never happen
-    }
-    
-    for(String classpathFrag: classpathFragments) {
-      String path=  classpathFrag + lastFragment;
-      int idx= fileName.indexOf(path);
-      if((idx == -1) || (idx > 0 && fileName.charAt(idx-1) != '/')) {
-        continue;
-      }
-      
-      if(fileName.endsWith(classpathFrag + lastFragment) 
-          || (recursive && fileName.charAt(idx + path.length()) == '/')) {
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-  private static void findClassesInDirPackage(String packageName,
-                                              List<String> included,
-                                              List<String> excluded,
-                                              String packagePath,
-                                              final boolean recursive,
-                                              List<String> classes) {
-    File dir = new File(packagePath);
-  
-    if (!dir.exists() || !dir.isDirectory()) {
-      return;
-    }
-  
-    File[] dirfiles = dir.listFiles(new FileFilter() {
-          public boolean accept(File file) {
-            return (recursive && file.isDirectory())
-              || (file.getName().endsWith(".class"))
-              || (file.getName().endsWith(".groovy"));
-          }
-        });
-  
-    Utils.log("PackageUtils", 4, "Looking for test classes in the directory: " + dir);
-    for (File file : dirfiles) {
-      if (file.isDirectory()) {
-        findClassesInDirPackage(makeFullClassName(packageName, file.getName()),
-                                included,
-                                excluded,
-                                file.getAbsolutePath(),
-                                recursive,
-                                classes);
-      }
-      else {
-        String className = file.getName().substring(0, file.getName().lastIndexOf("."));
-        Utils.log("PackageUtils", 4, "Found class " + className
-            + ", seeing it if it's included or excluded");
-        includeOrExcludeClass(packageName, className, included, excluded, classes);
-      }
-    }
-  }
-
-  private static String makeFullClassName(String pkg, String cls) {
-    return pkg.length() > 0 ? pkg + "." + cls : cls;
-  }
-
-  private static void includeOrExcludeClass(String packageName, String className,  
-      List<String> included, List<String> excluded, List<String> classes) 
-  {
-    if (isIncluded(className, included, excluded)) {
-      Utils.log("PackageUtils", 4, "... Including class " + className);
-      classes.add(makeFullClassName(packageName, className));
-    }
-    else {
-      Utils.log("PackageUtils", 4, "... Excluding class " + className);
-    }
-  }
-
-  /**
-   * @return true if name should be included.
-   */
-  private static boolean isIncluded(String name, 
-      List<String> included, List<String> excluded)
-  {
-    boolean result = false;
-    
-    //
-    // If no includes nor excludes were specified, return true.
-    //
-    if (included.size() == 0 && excluded.size() == 0) {
-      result = true;
-    } 
-    else {
-      boolean isIncluded = PackageUtils.find(name, included);
-      boolean isExcluded = PackageUtils.find(name, excluded);
-      if (isIncluded && !isExcluded) {
-        result = true;
-      }
-      else if (isExcluded) {
-        result = false;
-      }
-      else {
-        result = included.size() == 0;
-      }
-    }
-    return result;
-  }
-
-  private static boolean find(String name, List<String> list) {
-    for (String regexpStr : list) {
-      if (Pattern.matches(regexpStr, name)) return true;
-    }
-    return false;
-  }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/ParameterHolder.java b/src/org/testng/internal/ParameterHolder.java
deleted file mode 100755
index 37352ec..0000000
--- a/src/org/testng/internal/ParameterHolder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.testng.internal;
-
-import java.util.Iterator;
-
-/**
- * A simple holder for parameters that contains the parameters and where these came from
- * (data provider or testng.xml)
- * @author cbeust
- *
- */
-public class ParameterHolder {
-  public static final int ORIGIN_DATA_PROVIDER = 1;
-  public static final int ORIGIN_XML = 2;
-  public static final int ORIGIN_NO_PARAMETERS = 2;
-
-  public DataProviderHolder dataProviderHolder;
-  public Iterator<Object[]> parameters;
-  public int origin;
-
-  public ParameterHolder(Iterator<Object[]> parameters, int origin, DataProviderHolder dph) {
-    super();
-    this.parameters = parameters;
-    this.origin = origin;
-    this.dataProviderHolder = dph;
-  }
-
-}
diff --git a/src/org/testng/internal/Parameters.java b/src/org/testng/internal/Parameters.java
deleted file mode 100755
index 6d9c7ab..0000000
--- a/src/org/testng/internal/Parameters.java
+++ /dev/null
@@ -1,472 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.TestNGException;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.IParameterizable;
-import org.testng.annotations.IParametersAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.collections.Lists;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.Sets;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Methods that bind parameters declared in testng.xml to actual values
- * used to invoke methods.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- *  
- * @@ANNOTATIONS@@
- */
-public class Parameters {
-  public static final String NULL_VALUE= "null";
-  
-  /**
-   * Creates the parameters needed for constructing a test class instance.
-   * @param finder TODO
-   */
-  public static Object[] createInstantiationParameters(Constructor ctor, 
-      String methodAnnotation, 
-      IAnnotationFinder finder, 
-      String[] parameterNames, 
-      Map<String, String> params, XmlSuite xmlSuite)
-  {
-    return createParameters(ctor.toString(), ctor.getParameterTypes(),
-        finder.findOptionalValues(ctor), methodAnnotation, finder, parameterNames, new MethodParameters(params), xmlSuite);
-  }
-
-  /**
-   * Creates the parameters needed for the specified <tt>@Configuration</tt> <code>Method</code>.
-   * 
-   * @param m the configuraton method
-   * @param params 
-   * @param currentTestMethod the current @Test method or <code>null</code> if no @Test is available (this is not
-   *    only in case the configuration method is a @Before/@AfterMethod
-   * @param finder the annotation finder
-   * @param xmlSuite
-   * @return
-   */
-  public static Object[] createConfigurationParameters(Method m, 
-      Map<String, String> params, 
-      Object[] parameterValues,
-      ITestNGMethod currentTestMethod,
-      IAnnotationFinder finder, 
-      XmlSuite xmlSuite,
-      ITestContext ctx,
-      ITestResult testResult) 
-  {
-    Method currentTestMeth= currentTestMethod != null ? 
-        currentTestMethod.getMethod() : null;
-    return createParameters(m,
-        new MethodParameters(params, parameterValues, currentTestMeth, ctx, testResult), 
-        finder, xmlSuite, IConfigurationAnnotation.class, "@Configuration");
-  }
-
-  ////////////////////////////////////////////////////////
-
-  public static Object getInjectedParameter(Class<?> c, Method method, ITestContext context,
-      ITestResult testResult) {
-    Object result = null;
-    if (Method.class.equals(c)) {
-      result = method;
-    }
-    else if (ITestContext.class.equals(c)) {
-      result = context;
-    }
-    else if (XmlTest.class.equals(c)) {
-      result = context.getCurrentXmlTest();
-    }
-    else if (ITestResult.class.equals(c)) {
-      result = testResult;
-    }
-    return result;
-  }
-
-  /**
-   * @param optionalValues TODO
-   * @param finder TODO
-   * @param parameterAnnotations TODO
-   * @param m
-   * @param instance
-   * @return An array of parameters suitable to invoke this method, possibly
-   * picked from the property file
-   */
-  private static Object[] createParameters(String methodName,
-      Class[] parameterTypes,
-      String[] optionalValues,
-      String methodAnnotation,
-      IAnnotationFinder finder,
-      String[] parameterNames, MethodParameters params, XmlSuite xmlSuite)
-  {
-    Object[] result = new Object[0];
-    if(parameterTypes.length > 0) {
-      List<Object> vResult = Lists.newArrayList();
-  
-      checkParameterTypes(methodName, parameterTypes, methodAnnotation, parameterNames);
-  
-      for(int i = 0, j = 0; i < parameterTypes.length; i++) {
-        Object inject = getInjectedParameter(parameterTypes[i], params.currentTestMethod,
-            params.context, params.testResult);
-        if (inject != null) {
-          vResult.add(inject);
-        }
-        else {
-          if (j < parameterNames.length) {
-            String p = parameterNames[j];
-            String value = params.xmlParameters.get(p);
-            if(null == value) {
-              // try SysEnv entries
-              value= System.getProperty(p);
-            }
-            if (null == value) {
-              if (optionalValues != null) {
-                value = optionalValues[i];
-              }
-              if (null == value) {
-              throw new TestNGException("Parameter '" + p + "' is required by " 
-                  + methodAnnotation
-                  + " on method " 
-                  + methodName
-                  + "\nbut has not been marked @Optional or defined "
-                  + (xmlSuite.getFileName() != null ? "in "
-                  + xmlSuite.getFileName() : ""));
-              }
-            }
-              
-            vResult.add(convertType(parameterTypes[i], value, p));
-            j++;
-          }
-        }
-      }
-            
-      result = (Object[]) vResult.toArray(new Object[vResult.size()]);
-    }
-  
-    return result;
-  }
-
-  // FIXME
-  private static void checkParameterTypes(String methodName, 
-      Class[] parameterTypes, String methodAnnotation, String[] parameterNames) 
-  {
-    if(parameterNames.length == parameterTypes.length) return;
-    
-    for(int i= parameterTypes.length - 1; i >= parameterNames.length; i--) {
-      Class type = parameterTypes[i];
-      if(!ITestContext.class.equals(type)
-          && !ITestResult.class.equals(type)
-          && !XmlTest.class.equals(type)
-          && !Method.class.equals(type)
-          && !Object[].class.equals(type)) {
-        throw new TestNGException( "Method " + methodName + " requires " 
-            + parameterTypes.length + " parameters but " 
-            + parameterNames.length
-            + " were supplied in the "
-            + methodAnnotation
-            + " annotation.");        
-      }
-    }
-  }
-
-  //TODO: Cosmin - making this public is not the best solution
-  public static Object convertType(Class type, String value, String paramName) {
-    Object result = null;
-    
-    if(NULL_VALUE.equals(value.toLowerCase())) {
-      if(type.isPrimitive()) {
-        Utils.log("Parameters", 2, "Attempt to pass null value to primitive type parameter '" + paramName + "'");
-      }
-      
-      return null; // null value must be used
-    }
-    
-    if(type == String.class) {
-      result = value;
-    } 
-    else if(type == int.class || type == Integer.class) {
-      result = new Integer(Integer.parseInt(value));
-    }
-    else if(type == boolean.class || type == Boolean.class) {
-      result = Boolean.valueOf(value);          
-    }
-    else if(type == byte.class || type == Byte.class) {
-      result = new Byte(Byte.parseByte(value));                    
-    }
-    else if(type == char.class || type == Character.class) {
-      result = new Character(value.charAt(0));                              
-    }
-    else if(type == double.class || type == Double.class) {
-      result = new Double(Double.parseDouble(value));
-    }
-    else if(type == float.class || type == Float.class) {
-      result = new Float(Float.parseFloat(value));          
-    }
-    else if(type == long.class || type == Long.class) {
-      result = new Long(Long.parseLong(value));
-    }
-    else if(type == short.class || type == Short.class) {
-      result = new Short(Short.parseShort(value));
-    }
-    else {
-      assert false : "Unsupported type parameter : " + type;
-    }
-    
-    return result;
-  }
-  
-  private static DataProviderHolder findDataProvider(Class clazz, Method m,
-      IAnnotationFinder finder) {
-    DataProviderHolder result = null;
-    String dataProviderName = null;
-    Class dataProviderClass = null;
-    
-    ITestAnnotation annotation = AnnotationHelper.findTest(finder, m);
-    if (annotation == null) {
-      annotation = AnnotationHelper.findTest(finder, clazz);
-    }
-    if (annotation != null) {
-      dataProviderName = annotation.getDataProvider();
-      dataProviderClass = annotation.getDataProviderClass();
-    }
-    
-    if (dataProviderName == null) {
-      IFactoryAnnotation factory = AnnotationHelper.findFactory(finder, m);
-      if (factory != null) {
-        dataProviderName = factory.getDataProvider();
-        dataProviderClass = null;
-      }
-    }
-    
-    if (null != dataProviderName && ! "".equals(dataProviderName)) {
-      result = findDataProvider(clazz, finder, dataProviderName, dataProviderClass);
-      
-      if(null == result) {
-        throw new TestNGException("Method " + m + " requires a @DataProvider named : " 
-            + dataProviderName + (dataProviderClass != null ? " in class " + dataProviderClass.getName() : "") 
-            );
-      }
-    }
-
-    return result;
-  }
-  
-  /**
-   * Find a method that has a @DataProvider(name=name)
-   */
-  private static DataProviderHolder findDataProvider(Class cls, IAnnotationFinder finder,
-      String name, Class dataProviderClass) 
-  {
-    boolean shouldBeStatic = false;
-    if (dataProviderClass != null) {
-      cls = dataProviderClass;
-      shouldBeStatic = true;
-    }
-
-    for (Method m : ClassHelper.getAvailableMethods(cls)) {
-      IDataProviderAnnotation dp = (IDataProviderAnnotation)
-          finder.findAnnotation(m, IDataProviderAnnotation.class);
-      if (null != dp && (name.equals(dp.getName()) || name.equals(m.getName()))) {
-        if (shouldBeStatic && (m.getModifiers() & Modifier.STATIC) == 0) {
-          throw new TestNGException("DataProvider should be static: " + m); 
-        }
-        
-        return new DataProviderHolder(dp, m);
-      }
-    }
-    
-    return null;
-  }
-
-  @SuppressWarnings({"deprecation"})
-  private static Object[] createParameters(Method m, MethodParameters params,
-      IAnnotationFinder finder, XmlSuite xmlSuite, Class annotationClass, String atName) 
-  {
-    List<Object> result = Lists.newArrayList();
-    
-    Object[] extraParameters = new Object[0];
-    //
-    // Try to find an @Parameters annotation
-    //
-    IParametersAnnotation annotation = (IParametersAnnotation) finder.findAnnotation(m, IParametersAnnotation.class);
-    Class<?>[] types = m.getParameterTypes();
-    if(null != annotation) {
-      String[] parameterNames = annotation.getValue();
-      extraParameters = createParameters(m.getName(), types, 
-          finder.findOptionalValues(m), atName, finder, parameterNames, params, xmlSuite);
-    }  
-    
-    //
-    // Else, use the deprecated syntax
-    //
-    else {    
-      IParameterizable a = (IParameterizable) finder.findAnnotation(m, annotationClass);
-      if(null != a && a.getParameters().length > 0) {
-        String[] parameterNames = a.getParameters();
-        extraParameters = createParameters(m.getName(), types, 
-            finder.findOptionalValues(m), atName, finder, parameterNames, params, xmlSuite);
-      }
-      else {
-        extraParameters = createParameters(m.getName(), types, 
-            finder.findOptionalValues(m), atName, finder, new String[0], params, xmlSuite);
-      }
-    }
-    
-    // If the method declared an Object[] parameter and we have parameter values, inject them
-    for (int i = 0; i < types.length; i++) {
-        Class<?> type = types[i];
-        if (Object[].class.equals(type)) {
-            result.add(params.parameterValues);
-        }
-    }
-    
-    //
-    // Add the extra parameters we found
-    //
-    for (Object p : extraParameters) {
-      result.add(p);
-    }
-    
-    return result.toArray(new Object[result.size()]);
-  }
-  
-  /**
-   * If the method has parameters, fill them in.  Either by using a @DataProvider
-   * if any was provided, or by looking up <parameters> in testng.xml
-   * @return An Iterator over the values for each parameter of this
-   * method.
-   */
-  public static ParameterHolder handleParameters(ITestNGMethod testMethod, 
-      Map<String, String> allParameterNames,
-      Object instance,
-      MethodParameters methodParams, 
-      XmlSuite xmlSuite, 
-      IAnnotationFinder annotationFinder,
-      Object fedInstance)
-  {
-    ParameterHolder result;
-
-    Iterator<Object[]> parameters = null;
-    
-    //
-    // Do we have a @DataProvider?  If yes, then we have several
-    // sets of parameters for this method
-    //
-    DataProviderHolder dataProviderHolder =
-        findDataProvider(testMethod.getTestClass().getRealClass(),
-        testMethod.getMethod(), annotationFinder);
-
-    if (null != dataProviderHolder) {
-      int parameterCount = testMethod.getMethod().getParameterTypes().length;
-  
-      for (int i = 0; i < parameterCount; i++) {
-        String n = "param" + i;
-        allParameterNames.put(n, n);
-      }
-
-      parameters  = MethodHelper.invokeDataProvider(
-          instance, /* a test instance or null if the dataprovider is static*/
-          dataProviderHolder.method, 
-          testMethod,
-          methodParams.context,
-          fedInstance,
-          annotationFinder);
-
-      Iterator<Object[]> filteredParameters = filterParameters(parameters,
-          testMethod.getInvocationNumbers()); 
-
-      result = new ParameterHolder(filteredParameters, ParameterHolder.ORIGIN_DATA_PROVIDER,
-          dataProviderHolder);
-    }
-    else {
-      //
-      // Normal case:  we have only one set of parameters coming from testng.xml
-      //
-      allParameterNames.putAll(methodParams.xmlParameters);
-      // Create an Object[][] containing just one row of parameters
-      Object[][] allParameterValuesArray = new Object[1][];
-      allParameterValuesArray[0] = createParameters(testMethod.getMethod(), 
-          methodParams, annotationFinder, xmlSuite, ITestAnnotation.class, "@Test");
-      
-      // Mark that this method needs to have at least a certain
-      // number of invocations (needed later to call AfterGroups
-      // at the right time).
-      testMethod.setParameterInvocationCount(allParameterValuesArray.length);
-      // Turn it into an Iterable
-      parameters  = MethodHelper.createArrayIterator(allParameterValuesArray);
-
-      result = new ParameterHolder(parameters,
-          allParameterValuesArray.length == 0 
-              ? ParameterHolder.ORIGIN_DATA_PROVIDER : ParameterHolder.ORIGIN_XML,
-          dataProviderHolder);
-    }
-    
-    return result;
-  }
-
-  /**
-   * If numbers is empty, return parameters, otherwise, return a subset of parameters
-   * whose ordinal number match these found in numbers.
-   */
-  static private Iterator<Object[]> filterParameters(Iterator<Object[]> parameters,
-      List<Integer> list) {
-    if (list.isEmpty()) {
-      return parameters;
-    } else {
-      List<Object[]> result = Lists.newArrayList();
-      int i = 0;
-      while (parameters.hasNext()) {
-        Object[] next = parameters.next();
-        if (list.contains(i)) result.add(next);
-        i++;
-      }
-      return new ArrayIterator(result.toArray(new Object[list.size()][]));
-    }
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[Parameters] " + s);
-  }
-
-  /** A parameter passing helper class. */
-  public static class MethodParameters {
-    private final Map<String, String> xmlParameters;
-    private final Method currentTestMethod;
-    private final ITestContext context;
-    private Object[] parameterValues;
-    public ITestResult testResult;
-    
-    public MethodParameters(Map<String, String> params) {
-      this(params, null, null, null, null);
-    }
-    
-    public MethodParameters(Map<String, String> params, Method m) {
-      this(params, null, m, null, null);
-    }
-    
-    public MethodParameters(Map<String, String> params, Object[] pv, Method m, ITestContext ctx,
-        ITestResult tr) {
-      xmlParameters = params;
-      currentTestMethod = m;
-      context = ctx;
-      parameterValues = pv;
-      testResult = tr;
-    }
-  }
-}
diff --git a/src/org/testng/internal/PoolService.java b/src/org/testng/internal/PoolService.java
deleted file mode 100755
index 1175cab..0000000
--- a/src/org/testng/internal/PoolService.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package org.testng.internal;
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-/**
- * This class allows a caller to pass a list of Callable workers that will be run in threads
- * taken from the thread pool.  Each list of callables is indexed with a key, and when they
- * have all completed, the listener passed in @code{submitTask} will be invoked with all
- * the futures.  Additional workers can be submitted to this pool while it is in existence
- * and the caller can either block while waiting for the results (@code{submitTasksAndWait})
- * or submit them asynchronously (@code{submitTasks}) and supply listeners to notify when
- * the callers are done.
- *  
- * @author cbeust
- *
- * @param <KeyType> The type of the key to index each list of Callables
- * @param <FutureType> The type of the result returned by the futures
- */
-public class PoolService<KeyType, FutureType> {
-  private static PoolService m_instance;
-
-  private ExecutorService m_service;
-  private HashMap<KeyType, List<Future<FutureType>>> m_futureMap;
-  private Thread m_listenerThread;
-  private Map<KeyType, PoolListener<KeyType, FutureType>> m_listeners;
-
-  /**
-   * One pool is created per XmlSuite object.
-   * 
-   * @param threadPoolSize the size of the thread pool
-   */
-  private PoolService(int threadPoolSize) {
-    m_instance = this;
-    m_service = Executors.newFixedThreadPool(threadPoolSize);
-    m_futureMap = new HashMap<KeyType, List<Future<FutureType>>>();
-    m_listeners = Maps.newHashMap();
-
-    m_listenerThread = new Thread() {
-      public void run() {
-        System.out.println("Listener thread starting, futures:" + m_futureMap.size());
-        while (m_futureMap.size() > 0) {
-          List<KeyType> doneFutures = Lists.newArrayList();
-          for (KeyType key : m_futureMap.keySet()) {
-            List<Future<FutureType>> futures = m_futureMap.get(key);
-            if (isFinished(futures)) {
-              PoolListener<KeyType, FutureType> listener = m_listeners.get(key);
-              if (listener != null) {
-                listener.onFinish(key, futures);
-              }
-              m_listeners.remove(key);
-              doneFutures.add(key);
-            }
-          }
-          for (KeyType key : doneFutures) {
-            m_futureMap.remove(key);
-          }
-          try {
-            Thread.sleep(1000);
-          } catch (InterruptedException e) {
-            e.printStackTrace();
-          }
-        }
-        System.out.println("Listener thread ending");
-      }
-    };
-  }
-
-  public static void initialize(int threadCount) {
-    m_instance = new PoolService(threadCount);
-  }
-
-  public static PoolService getInstance() {
-    if (m_instance == null) {
-      throw new RuntimeException("The Service Pool was not created, should never happen");
-    }
-
-    return m_instance;
-  }
-
-  /**
-   * This listener will be invoked as soon as all the Callables in a given list have completed.
-   */
-  public static interface PoolListener<KeyType, FutureType> {
-    public void onFinish(KeyType key, List<Future<FutureType>> results);
-  }
-
-  /**
-   * Submit the tasks to the thread pool.
-   */
-  public List<FutureType> submitTasksAndWait(KeyType key, List<Callable<FutureType>> tasks) {
-    submitTasks(key, tasks, null);
-    List<Future<FutureType>> futures = m_futureMap.get(key);
-    while (!isFinished(futures)) {
-      try {
-        Thread.sleep(1000);
-      } catch (InterruptedException e) {
-        e.printStackTrace();
-      }
-    }
-
-    List<FutureType> result = Lists.newArrayList();
-    for (Future<FutureType> future : futures) {
-      try {
-        result.add(future.get());
-      } catch (InterruptedException e) {
-        e.printStackTrace();
-      } catch (ExecutionException e) {
-        e.printStackTrace();
-      }
-    }
-    return result;
-  }
-
-  public void submitTasks(KeyType key, List<Callable<FutureType>> tasks,
-      PoolListener<KeyType, FutureType> listener) {
-
-    for (Callable<FutureType> task : tasks) {
-      Future<FutureType> future = m_service.submit(task);
-      List<Future<FutureType>> list = m_futureMap.get(key);
-      if (list == null) {
-        list = Lists.newArrayList();
-        m_futureMap.put(key, list);
-      }
-      list.add(future);
-    }
-
-    if (listener != null) {
-      m_listeners.put(key, listener);
-
-      if (!m_listenerThread.isAlive()) {
-        m_listenerThread.start();
-      }
-    }
-  }
-
-  private boolean isFinished(List<Future<FutureType>> futures) {
-    for (Future<FutureType> f : futures) {
-      if (!f.isDone())
-        return false;
-    }
-    return true;
-  }
-
-  /**
-   * Shut down the service.
-   */
-  public void shutdown() {
-    Utils.log(getClass().getName(), 2, "Shutting down poolservice " + this + " terminated:"
-        + m_service.isTerminated());
-    //      if (m_service.isTerminated()) {
-    m_service.shutdown();
-    //      }
-  }
-
-}
diff --git a/src/org/testng/internal/PropertiesFile.java b/src/org/testng/internal/PropertiesFile.java
deleted file mode 100755
index 9044c90..0000000
--- a/src/org/testng/internal/PropertiesFile.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.testng.internal;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-/**
- * This class loads and abstracts remote.properties
- * 
- * @author cbeust
- * @author Guy Korland
- * @date April 13, 2006
- */
-public class PropertiesFile {
-
-  private Properties m_properties = new Properties();
-  
-  /**
-   * Loads a Properties file.
-   *  
-   * @param fileName properties file path
-   * @throws IOException if an error occurred when reading from the Properties file.
-   */
-  public PropertiesFile(String fileName) throws IOException 
-  {
-	  FileInputStream fis = null;
-	  //
-	  // Parse the Properties file
-	  //
-	  try {
-		  fis = new FileInputStream(new File(fileName));
-		  m_properties.load(fis);
-	  }
-	  finally
-	  {
-		  if( fis != null)
-			  fis.close();
-	  }
-  }
-  
-  /**
-   * Returns the properties loaded.
-   * @return loaded properties.
-   */
-  public Properties getProperties()
-  {
-	  return m_properties;
-  }
-}
diff --git a/src/org/testng/internal/PropertyUtils.java b/src/org/testng/internal/PropertyUtils.java
deleted file mode 100755
index 5275232..0000000
--- a/src/org/testng/internal/PropertyUtils.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package org.testng.internal;
-
-import org.testng.log4testng.Logger;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * Utility class for setting JavaBeans-style properties on instances.
- *
- * @author Cosmin Marginean, Apr 12, 2007
- */
-public class PropertyUtils {
-
-  private static final Logger LOGGER = Logger.getLogger(PropertyUtils.class);
-
-  public static void setProperty(Object instance, String name, String value) {
-    if (instance == null) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". The target instance is null");
-      return;
-    }
-
-    Class propClass = getPropertyType(instance.getClass(), name);
-    if (propClass == null) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". Property class could not be found");
-      return;
-    }
-
-    Object realValue = Parameters.convertType(propClass, value, name);
-    //TODO: Here the property desc is serched again
-    setPropertyRealValue(instance, name, realValue);
-  }
-
-  public static Class getPropertyType(Class instanceClass, String propertyName) {
-    if (instanceClass == null) {
-      LOGGER.warn("Cannot retrieve property class for " + propertyName + ". Target instance class is null");
-    }
-    PropertyDescriptor propDesc = getPropertyDescriptor(instanceClass, propertyName);
-    return propDesc.getPropertyType();
-  }
-
-  private static PropertyDescriptor getPropertyDescriptor(Class targetClass, String propertyName) {
-    PropertyDescriptor result = null;
-    if (targetClass == null) {
-      LOGGER.warn("Cannot retrieve property " + propertyName + ". Class is null");
-    } else {
-      try {
-        BeanInfo beanInfo = Introspector.getBeanInfo(targetClass);
-        PropertyDescriptor[] propDescriptors = beanInfo.getPropertyDescriptors();
-        for (PropertyDescriptor propDesc : propDescriptors) {
-          if (propDesc.getName().equals(propertyName)) {
-            result = propDesc;
-            break;
-          }
-        }
-      } catch (IntrospectionException ie) {
-        LOGGER.warn("Cannot retrieve property " + propertyName + ". Cause is: " + ie);
-      }
-    }
-    return result;
-  }
-
-  public static void setPropertyRealValue(Object instance, String name, Object value) {
-    if (instance == null) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". Targe instance is null");
-      return;
-    }
-
-    PropertyDescriptor propDesc = getPropertyDescriptor(instance.getClass(), name);
-    if (propDesc == null) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". Property does not exist");
-      return;
-    }
-
-    Method method = propDesc.getWriteMethod();
-    try {
-      method.invoke(instance, new Object[]{value});
-    } catch (IllegalAccessException iae) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". Cause " + iae);
-    } catch (InvocationTargetException ite) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". Cause " + ite);
-    }
-  }
-
-}
diff --git a/src/org/testng/internal/ResultMap.java b/src/org/testng/internal/ResultMap.java
deleted file mode 100755
index 91a41d1..0000000
--- a/src/org/testng/internal/ResultMap.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IResultMap;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class ResultMap implements IResultMap {
-  private Map<ITestResult, ITestNGMethod> m_map = new ConcurrentHashMap<ITestResult, ITestNGMethod>();
-
-  public void addResult(ITestResult result, ITestNGMethod method) {
-    m_map.put(result, method);
-  }
-
-  public Set<ITestResult> getResults(ITestNGMethod method) {
-    Set<ITestResult> result = new HashSet<ITestResult>();
-    
-    for (ITestResult tr : m_map.keySet()) {
-      if (m_map.get(tr).equals(method)) {
-        result.add(tr);
-      }
-    }
-    
-    return result;
-  }
-
-  public void removeResult(ITestNGMethod m) {
-    for (Entry<ITestResult, ITestNGMethod> entry : m_map.entrySet()) {
-      if (entry.getValue().equals(m)) {
-        m_map.remove(entry.getKey());
-        return;
-      }
-    }
-  }
-
-  public Set<ITestResult> getAllResults() {
-    return m_map.keySet();
-  }
-
-  public int size() {
-    return m_map.size();
-  }
-
-  public Collection<ITestNGMethod> getAllMethods() {
-    return m_map.values();
-  }
-
-}
diff --git a/src/org/testng/internal/RunInfo.java b/src/org/testng/internal/RunInfo.java
deleted file mode 100755
index 52c9929..0000000
--- a/src/org/testng/internal/RunInfo.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.testng.internal;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.testng.IMethodSelector;
-import org.testng.IMethodSelectorContext;
-import org.testng.ITestNGMethod;
-import org.testng.collections.Lists;
-
-/**
- * This class contains all the information needed to determine
- * what methods should be run.  It gets invoked by the TestRunner
- * and then goes through its list of method selectors to decide what methods
- * need to be run.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class RunInfo implements Serializable {
-  transient private List<MethodSelectorDescriptor>
-    m_methodSelectors = Lists.newArrayList();
-  
-  public void addMethodSelector(IMethodSelector selector, int priority) {
-    Utils.log("RunInfo", 3, "Adding method selector: " + selector + " priority: " + priority);
-    MethodSelectorDescriptor md = new MethodSelectorDescriptor(selector, priority);
-    m_methodSelectors.add(md);
-  }
-  
-  /**
-   * @return true as soon as we fond a Method Selector that returns
-   * true for the method "tm".
-   */
-  public boolean includeMethod(ITestNGMethod tm, boolean isTestMethod) {
-    Collections.sort(m_methodSelectors);
-    boolean foundNegative = false;
-    IMethodSelectorContext context = new DefaultMethodSelectorContext();
-    
-    boolean result = false;
-    for (MethodSelectorDescriptor mds : m_methodSelectors) {
-      // If we found any negative priority, we break as soon as we encounter
-      // a selector with a positive priority
-      if (! foundNegative) foundNegative = mds.getPriority() < 0;
-      if (foundNegative && mds.getPriority() >= 0) break;
-      
-      // Proceeed normally
-      IMethodSelector md = mds.getMethodSelector();
-      result = md.includeMethod(context, tm, isTestMethod);
-      if (context.isStopped()) {
-        return result;
-      }
-      
-      // This selector returned false, move on to the next
-    }
-    
-    return result;
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[RunInfo] " + s);
-  }
-
-  public void setTestMethods(List<ITestNGMethod> testMethods) {
-    for (MethodSelectorDescriptor mds : m_methodSelectors) {
-      mds.setTestMethods(testMethods);
-    }
-  }
-}
diff --git a/src/org/testng/internal/Tarjan.java b/src/org/testng/internal/Tarjan.java
deleted file mode 100755
index 04ccdad..0000000
--- a/src/org/testng/internal/Tarjan.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.testng.internal;
-
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-
-/**
- * Implementation of the Tarjan algorithm to find and display a cycle in a graph.
- * @author cbeust
- */
-public class Tarjan<T> {
-  int m_index = 0;
-  private Stack<T> m_s;
-  Map<T, Integer> m_indices = Maps.newHashMap();
-  Map<T, Integer> m_lowlinks = Maps.newHashMap();
-  private List<T> m_cycle;
-
-  public Tarjan(Graph<T> graph, T start) {
-    m_s = new Stack<T>();
-    run(graph, start);
-  }
-
-  private void run(Graph<T> graph, T v) {
-    m_indices.put(v, m_index);
-    m_lowlinks.put(v, m_index);
-    m_index++;
-    m_s.push(v);
-    
-    for (T vprime : graph.getPredecessors(v)) {
-      if (! m_indices.containsKey(vprime)) {
-        run(graph, vprime);
-        int min = Math.min(m_lowlinks.get(v), m_lowlinks.get(vprime));
-        m_lowlinks.put(v, min);
-      }
-      else if (m_s.contains(vprime)) {
-        m_lowlinks.put(v, Math.min(m_lowlinks.get(v), m_indices.get(vprime)));
-      }
-    }
-    
-    if (m_lowlinks.get(v) == m_indices.get(v)) {
-      m_cycle = Lists.newArrayList();
-      T n;
-      do {
-        n = m_s.pop();
-        m_cycle.add(n);
-      } while (! n.equals(v));
-    }
-    
-  }
-
-  public static void main(String[] args) {
-    Graph<String> g = new Graph<String>();
-    g.addNode("a");
-    g.addNode("b");
-    g.addNode("c");
-    g.addNode("d");
-    
-    String[] edges = new String[] {
-        "a", "b",
-        "b", "a",
-        "c", "d",
-        "d", "a",
-        "a", "c",
-    };
-    
-    for (int i = 0; i < edges.length; i += 2) {
-      g.addPredecessor(edges[i], edges[i+1]);
-    }
-    
-    new Tarjan<String>(g, "a");
-  }
-
-  public List<T> getCycle() {
-    return m_cycle;
-  }
-    
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/TestMethodWithDataProviderMethodWorker.java b/src/org/testng/internal/TestMethodWithDataProviderMethodWorker.java
deleted file mode 100755
index dc29928..0000000
--- a/src/org/testng/internal/TestMethodWithDataProviderMethodWorker.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ITestClass;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.collections.Lists;
-import org.testng.xml.XmlSuite;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-
-public class TestMethodWithDataProviderMethodWorker implements Callable<List<ITestResult>> {
-  
-  private ITestNGMethod m_testMethod;
-  private Object[] m_parameterValues;
-  private Object[] m_instances;
-  private XmlSuite m_xmlSuite;
-  private Map<String, String> m_parameters;
-  private ITestClass m_testClass;
-  private ITestNGMethod[] m_beforeMethods;
-  private ITestNGMethod[] m_afterMethods;
-  private ConfigurationGroupMethods m_groupMethods;
-  private Invoker m_invoker;
-  private ExpectedExceptionsHolder m_expectedExceptionHolder;
-  private ITestContext m_testContext;
-  private int m_parameterIndex;
-  private boolean m_skipFailedInvocationCounts;
-  private int m_invocationCount;
-  private ITestResultNotifier m_notifier;
-
-  private List<ITestResult> m_testResults = Lists.newArrayList();
-  private int m_failureCount;
-
-  public TestMethodWithDataProviderMethodWorker(Invoker invoker, ITestNGMethod testMethod,
-      int parameterIndex,
-      Object[] parameterValues, Object[] instances, XmlSuite suite,
-      Map<String, String> parameters, ITestClass testClass,
-      ITestNGMethod[] beforeMethods, ITestNGMethod[] afterMethods,
-      ConfigurationGroupMethods groupMethods, ExpectedExceptionsHolder expectedExceptionHolder,
-      ITestContext testContext, boolean skipFailedInvocationCounts,
-      int invocationCount, int failureCount, ITestResultNotifier notifier) {
-    m_invoker = invoker;
-    m_testMethod = testMethod;
-    m_parameterIndex = parameterIndex;
-    m_parameterValues = parameterValues;
-    m_instances = instances;
-    m_xmlSuite = suite;
-    m_parameters = parameters;
-    m_testClass = testClass;
-    m_beforeMethods = beforeMethods;
-    m_afterMethods = afterMethods;
-    m_groupMethods = groupMethods;
-    m_expectedExceptionHolder = expectedExceptionHolder;
-    m_skipFailedInvocationCounts = skipFailedInvocationCounts;
-    m_testContext = testContext;
-    m_invocationCount = invocationCount;
-    m_failureCount = failureCount;
-    m_notifier = notifier;
-  }
-      
-  public long getMaxTimeOut() {
-    return 500;
-  }
-
-  public List<ITestResult> call() {
-    List<ITestResult> tmpResults = Lists.newArrayList();
-    long start = System.currentTimeMillis();
-
-    try {
-      tmpResults.addAll(m_invoker.invokeTestMethod(m_instances,
-           m_testMethod,
-           m_parameterValues,
-           m_xmlSuite,
-           m_parameters,
-           m_testClass,
-           m_beforeMethods,
-           m_afterMethods,
-           m_groupMethods));
-    }
-    finally {
-      List<Object> failedInstances = Lists.newArrayList();
-
-      m_failureCount = m_invoker.handleInvocationResults(m_testMethod, tmpResults,
-          failedInstances, m_failureCount, m_expectedExceptionHolder, true,
-          false /* don't collect results */);
-      if (failedInstances.isEmpty()) {
-        m_testResults.addAll(tmpResults);
-      } else {
-        for (int i = 0; i < failedInstances.size(); i++) {
-          List<ITestResult> retryResults = Lists.newArrayList();
-
-          m_failureCount = 
-             m_invoker.retryFailed(failedInstances.toArray(),
-                 i, m_testMethod, m_xmlSuite, m_testClass, m_beforeMethods,
-                 m_afterMethods, m_groupMethods, retryResults,
-                 m_failureCount, m_expectedExceptionHolder,
-                 m_testContext, m_parameters, m_parameterIndex);
-          m_testResults.addAll(retryResults);
-        }
-      }
-      
-      //
-      // If we have a failure, skip all the
-      // other invocationCounts
-      //
-      
-      // If not specified globally, use the attribute
-      // on the annotation
-      //
-      if (! m_skipFailedInvocationCounts) {
-        m_skipFailedInvocationCounts = m_testMethod.skipFailedInvocations();
-      }
-      if (m_failureCount > 0 && m_skipFailedInvocationCounts) {
-        while (m_invocationCount-- > 0) {
-          ITestResult r = 
-            new TestResult(m_testMethod.getTestClass(),
-              m_instances[0],
-              m_testMethod,
-              null,
-              start,
-              System.currentTimeMillis());
-          r.setStatus(TestResult.SKIP);
-          m_testResults.add(r);
-          m_invoker.runTestListeners(r);
-          m_notifier.addSkippedTest(m_testMethod, r);
-        }
-      }
-    }
-    m_parameterIndex++;
-    
-    return m_testResults;
-  }
-
-  public List<ITestResult> getTestResults() {
-    return m_testResults;
-  }
-
-  public int getInvocationCount() {
-    return m_invocationCount;
-  }
-
-  public int getFailureCount() {
-    return m_failureCount;
-  }
-}
diff --git a/src/org/testng/internal/TestMethodWorker.java b/src/org/testng/internal/TestMethodWorker.java
deleted file mode 100644
index d26ce24..0000000
--- a/src/org/testng/internal/TestMethodWorker.java
+++ /dev/null
@@ -1,301 +0,0 @@
-package org.testng.internal;
-
-import org.testng.ClassMethodMap;
-import org.testng.IMethodInstance;
-import org.testng.ITestClass;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.collections.Lists;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.xml.XmlSuite;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * FIXME: reduce contention when this class is used through parallel invocation due to
- * invocationCount and threadPoolSize by not invoking the @BeforeClass and @AfterClass
- * which are already invoked on the original method.
- * 
- * This class implements Runnable and will invoke the ITestMethod passed in its
- * constructor on its run() method.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class TestMethodWorker implements IMethodWorker {
-  // Map of the test methods and their associated instances
-  // It has to be a set because the same method can be passed several times
-  // and associated to a different instance
-  protected IMethodInstance[] m_testMethods;
-  protected IInvoker m_invoker = null;
-  protected Map<String, String> m_parameters = null;
-  protected XmlSuite m_suite = null;
-//  protected Map<ITestClass, Set<Object>> m_invokedBeforeClassMethods = null;
-//  protected Map<ITestClass, Set<Object>> m_invokedAfterClassMethods = null;
-  protected ITestNGMethod[] m_allTestMethods;
-  protected List<ITestResult> m_testResults = Lists.newArrayList();
-  protected ConfigurationGroupMethods m_groupMethods = null;
-  protected ClassMethodMap m_classMethodMap = null;
-  private ITestContext m_testContext = null;
-  
-  public TestMethodWorker(IInvoker invoker, 
-                          IMethodInstance[] testMethods,
-                          XmlSuite suite,
-                          Map<String, String> parameters,
-                          ITestNGMethod[] allTestMethods,
-                          ConfigurationGroupMethods groupMethods,
-                          ClassMethodMap classMethodMap,
-                          ITestContext testContext)
-  {
-    m_invoker = invoker;
-    m_testMethods = testMethods;
-    m_suite = suite;
-    m_parameters = parameters;
-//    m_invokedBeforeClassMethods = invokedBeforeClassMethods;
-//    m_invokedAfterClassMethods = invokedAfterClassMethods;
-    m_allTestMethods = allTestMethods;
-    m_groupMethods = groupMethods;
-    m_classMethodMap = classMethodMap;
-    m_testContext = testContext;
-  }
-  
-  /**
-   * Retrieves the maximum specified timeout of all ITestNGMethods to
-   * be run.
-   * 
-   * @return the max timeout or 0 if no timeout was specified
-   */
-  public long getMaxTimeOut() {
-    long result = 0;
-    for (IMethodInstance mi : m_testMethods) {
-      ITestNGMethod tm = mi.getMethod();
-      if (tm.getTimeOut() > result) {
-        result = tm.getTimeOut();
-      }
-    }
-    
-    return result;
-  }
-  
-  @Override
-  public String toString() {
-    StringBuilder result = new StringBuilder("[Worker thread:" + Thread.currentThread().getId()
-        + " priority:" + getPriority() + " ");
-
-    result.append(m_testMethods[0].getMethod());
-//    result.append(" instances[0]:").append(m_testMethods[0].getInstances()[0]).append(" methods:");
-//
-//    for (IMethodInstance m : m_testMethods) {
-//      result.append(m.getMethod()).append(" ");
-//    }
-    result.append("]");
-
-    return result.toString();
-  }
-  
-  /**
-   * Run all the ITestNGMethods passed in through the constructor.
-   * 
-   * @see java.lang.Runnable#run()
-   */
-  public void run() {
-    // Using an index here because we need to tell the invoker
-    // the index of the current method
-    for (int indexMethod = 0; indexMethod < m_testMethods.length; indexMethod++) {
-      ITestNGMethod tm = m_testMethods[indexMethod].getMethod();
-  
-      ITestClass testClass = tm.getTestClass();
-
-      invokeBeforeClassMethods(testClass, m_testMethods[indexMethod]);
-      
-      //
-      // Invoke test method
-      //
-      try {
-        invokeTestMethods(tm, m_testMethods[indexMethod].getInstances(), m_testContext);
-      }
-      finally {
-        invokeAfterClassMethods(testClass, m_testMethods[indexMethod]);
-      }
-    }
-  }
-  
-  protected void invokeTestMethods(ITestNGMethod tm, Object[] instances,
-      ITestContext testContext) 
-  {
-    // Potential bug here:  we look up the method index of tm among all
-    // the test methods (not very efficient) but if this method appears
-    // several times and these methods are run in parallel, the results
-    // are unpredictable...  Need to think about this more (and make it
-    // more efficient)
-    List<ITestResult> testResults = 
-        m_invoker.invokeTestMethods(tm, 
-            m_allTestMethods, 
-            indexOf(tm, m_allTestMethods), 
-            m_suite, 
-            m_parameters, 
-            m_groupMethods,
-            instances,
-            testContext);
-    
-    if (testResults != null) {
-      m_testResults.addAll(testResults);        
-    }
-  }
-  
-  //
-  // Invoke the before class methods if not done already
-  //
-  protected void invokeBeforeClassMethods(ITestClass testClass, IMethodInstance mi) {
-    // if no BeforeClass than return immediately
-    // used for parallel case when BeforeClass were already invoked
-    if( (null == m_classMethodMap) || (null == m_classMethodMap.getInvokedBeforeClassMethods())) {
-      return;
-    }
-    ITestNGMethod[] classMethods= testClass.getBeforeClassMethods();
-    if(null == classMethods || classMethods.length == 0) {
-      return;
-    }
-    
-    // the whole invocation must be synchronized as other threads must
-    // get a full initialized test object (not the same for @After)
-    Map<ITestClass, Set<Object>> invokedBeforeClassMethods =
-        m_classMethodMap.getInvokedBeforeClassMethods();
-//    System.out.println("SYNCHRONIZING ON " + testClass
-//        + " thread:" + Thread.currentThread().getId()
-//        + " invokedMap:" + invokedBeforeClassMethods.hashCode() + " "
-//        + invokedBeforeClassMethods);
-    synchronized(testClass) {
-      Set<Object> instances= invokedBeforeClassMethods.get(testClass);
-      if(null == instances) {
-        instances= new HashSet<Object>();
-        invokedBeforeClassMethods.put(testClass, instances);
-      }
-      for(Object instance: mi.getInstances()) {
-        if (! instances.contains(instance)) {  
-          instances.add(instance);
-          m_invoker.invokeConfigurations(testClass,
-                                         testClass.getBeforeClassMethods(),
-                                         m_suite,
-                                         m_parameters,
-                                         null, /* no parameter values */
-                                         instance);
-        }
-      }
-    }
-  }
-  
-  protected void invokeAfterClassMethods(ITestClass testClass, IMethodInstance mi) {
-    // if no BeforeClass than return immediately
-    // used for parallel case when BeforeClass were already invoked
-    if( (null == m_classMethodMap) || (null == m_classMethodMap.getInvokedAfterClassMethods()) ) {
-      return;
-    }
-    ITestNGMethod[] afterClassMethods= testClass.getAfterClassMethods();
-    
-    if(null == afterClassMethods || afterClassMethods.length == 0) {
-      return;
-    }
-    
-    //
-    // Invoke after class methods if this test method is the last one
-    //
-    List<Object> invokeInstances= Lists.newArrayList();
-    ITestNGMethod tm= mi.getMethod();
-    if (m_classMethodMap.removeAndCheckIfLast(tm, mi.getInstances()[0])) {
-      Map<ITestClass, Set<Object>> invokedAfterClassMethods= m_classMethodMap.getInvokedAfterClassMethods();
-      synchronized(invokedAfterClassMethods) {
-        Set<Object> instances = invokedAfterClassMethods.get(testClass);
-        if(null == instances) {
-          instances= new HashSet<Object>();
-          invokedAfterClassMethods.put(testClass, instances);
-        }
-        for(Object inst: mi.getInstances()) {
-          if(! instances.contains(inst)) {
-            invokeInstances.add(inst);
-          }
-        }
-      }
-      
-      for(Object inst: invokeInstances) {
-        m_invoker.invokeConfigurations(testClass,
-                                       afterClassMethods,
-                                       m_suite,
-                                       m_parameters,
-                                       null, /* no parameter values */
-                                       inst);
-      }
-    }
-  }
-  
-  
-  protected int indexOf(ITestNGMethod tm, ITestNGMethod[] allTestMethods) {
-    for (int i = 0; i < allTestMethods.length; i++) {
-      if (allTestMethods[i] == tm) return i;
-    }
-    return -1;
-  }
-
-  public List<ITestResult> getTestResults() {
-    return m_testResults;
-  }
-  
-  private void ppp(String s) {
-    Utils.log("TestMethodWorker", 2, ThreadUtil.currentThreadInfo() + ":" + s);
-  }
-
-  public void setAllTestMethods(ITestNGMethod[] allTestMethods) {
-    m_allTestMethods = allTestMethods;
-  }
-
-  public List<ITestNGMethod> getMethods() {
-    List<ITestNGMethod> result = Lists.newArrayList();
-    for (IMethodInstance m : m_testMethods) {
-      result.add(m.getMethod());
-    }
-    return result;
-  }
-
-  public int compareTo(IMethodWorker other) {
-    return getPriority() - other.getPriority();
-  }
-
-  public int getPriority() {
-    return m_testMethods.length == 1 ? m_testMethods[0].getMethod().getPriority() : 0;
-  }
-}
-
-class SingleTestMethodWorker extends TestMethodWorker {
-  private static final ConfigurationGroupMethods EMPTY_GROUP_METHODS=
-    new ConfigurationGroupMethods(new ITestNGMethod[0], 
-        new HashMap<String, List<ITestNGMethod>>(), new HashMap<String, List<ITestNGMethod>>());
-  
-  public SingleTestMethodWorker(IInvoker invoker, 
-                                MethodInstance testMethod,
-                                XmlSuite suite,
-                                Map<String, String> parameters,
-                                ITestNGMethod[] allTestMethods,
-                                ITestContext testContext)
-  {
-    super(invoker,
-          new MethodInstance[] {testMethod},
-          suite,
-          parameters,
-          allTestMethods,
-          EMPTY_GROUP_METHODS,
-          null,
-          testContext);
-  }
-
-  protected void invokeAfterClassMethods(ITestClass testClass, ITestNGMethod tm) {
-  }
-
-  protected void invokeBeforeClassMethods(ITestClass testClass) {
-  }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/TestNGClassFinder.java b/src/org/testng/internal/TestNGClassFinder.java
deleted file mode 100644
index ee21e7f..0000000
--- a/src/org/testng/internal/TestNGClassFinder.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package org.testng.internal;
-
-
-import org.testng.IClass;
-import org.testng.IInstanceInfo;
-import org.testng.IObjectFactory;
-import org.testng.ITestContext;
-import org.testng.TestNGException;
-import org.testng.annotations.IAnnotation;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class creates an ITestClass from a test class.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class TestNGClassFinder extends BaseClassFinder {
-  private ITestContext m_testContext = null;
-  private Map<Class, List<Object>> m_instanceMap = Maps.newHashMap();
-
-  public TestNGClassFinder(Class[] classes,
-                           Map<Class, List<Object>> instanceMap,
-                           XmlTest xmlTest,
-                           IAnnotationFinder annotationFinder,
-                           ITestContext testContext)
-  {
-    m_testContext = testContext;
-
-    if(null == instanceMap) {
-      instanceMap= Maps.newHashMap();
-    }
-
-    //
-    // Find all the new classes and their corresponding instances
-    //
-    Class[] allClasses= classes;
-
-    IObjectFactory objectFactory = testContext.getSuite().getObjectFactory();
-    //very first pass is to find ObjectFactory, can't create anything else until then
-    if(objectFactory == null) {
-      objectFactory = new ObjectFactoryImpl();
-      outer:
-      for (Class cls : allClasses)
-        try {
-          if (null != cls) {
-            for (Method m : cls.getMethods()) {
-              IAnnotation a = annotationFinder.findAnnotation(m,
-                  org.testng.annotations.IObjectFactoryAnnotation.class);
-              if (null != a) {
-                if (!IObjectFactory.class.isAssignableFrom(m.getReturnType())) {
-                  throw new TestNGException("Return type of " + m + " is not IObjectFactory");
-                }
-                try {
-                  Object instance = cls.newInstance();
-                  if (m.getParameterTypes().length > 0 && m.getParameterTypes()[0].equals(ITestContext.class)) {
-                    objectFactory = (IObjectFactory) m.invoke(instance, testContext);
-                  } else {
-                    objectFactory = (IObjectFactory) m.invoke(instance);
-                  }
-                  break outer;
-                }
-                catch (Exception ex) {
-                  throw new TestNGException("Error creating object factory", ex);
-                }
-              }
-            }
-          }
-        } catch (NoClassDefFoundError e) {
-          Utils.log("[TestNGClassFinder]", 1, "Unable to read methods on class " + cls.getName() + " - unable to resolve class reference " + e.getMessage());
-
-          for (Iterator<XmlClass> iterator = xmlTest.getXmlClasses().iterator(); iterator.hasNext();) {
-            XmlClass xmlClass = iterator.next();
-
-            if (xmlClass.getDeclaredClass() == Boolean.TRUE && xmlClass.getName().equals(cls.getName())) {
-              throw e;
-            }
-          }
-
-        }
-    }
-
-    for(Class cls : allClasses) {
-      if((null == cls)) {
-        ppp("FOUND NULL CLASS IN FOLLOWING ARRAY:");
-        int i= 0;
-        for(Class c : allClasses) {
-          ppp("  " + i + ": " + c);
-        }
-        
-        continue;
-      }
-
-      if(isTestNGClass(cls, annotationFinder)) {
-        List allInstances= instanceMap.get(cls);
-        Object thisInstance= (null != allInstances) ? allInstances.get(0) : null;
-
-        // If annotation class and instances are abstract, skip them
-        if ((null == thisInstance) && Modifier.isAbstract(cls.getModifiers())) {
-          Utils.log("", 5, "[WARN] Found an abstract class with no valid instance attached: " + cls);
-          continue;
-        }
-
-        IClass ic= findOrCreateIClass(cls, thisInstance, xmlTest, annotationFinder,
-                                      objectFactory);
-        if(null != ic) {
-          Object[] theseInstances = ic.getInstances(false);
-          if (theseInstances.length == 0) {
-            theseInstances = ic.getInstances(true);
-          }
-          Object instance= theseInstances[0];
-          putIClass(cls, ic);
-
-          Method factoryMethod= ClassHelper.findFactoryMethod(cls, annotationFinder);
-          if(null != factoryMethod) {
-            FactoryMethod fm= new FactoryMethod( /* cls, */
-              factoryMethod,
-              instance,
-              xmlTest,
-              annotationFinder,
-              m_testContext);
-            List<Class> moreClasses= Lists.newArrayList();
-
-            {
-//            ppp("INVOKING FACTORY " + fm + " " + this.hashCode());
-              Object[] instances= fm.invoke();
-
-              //
-              // If the factory returned IInstanceInfo, get the class from it,
-              // otherwise, just call getClass() on the returned instances
-              //
-              if (instances.length > 0) {
-                Class elementClass = instances[0].getClass();
-                if(IInstanceInfo.class.isAssignableFrom(elementClass)) {
-                  for(Object o : instances) {
-                    IInstanceInfo ii = (IInstanceInfo) o;
-                    addInstance(ii.getInstanceClass(), ii.getInstance());
-                    moreClasses.add(ii.getInstanceClass());
-                  }
-                }
-                else {
-                  for(Object o : instances) {
-                    addInstance(o.getClass(), o);
-                    if(!classExists(o.getClass())) {
-                      moreClasses.add(o.getClass());
-                    }
-                  }
-                }
-              }
-            }
-
-            if(moreClasses.size() > 0) {
-              TestNGClassFinder finder=
-                new TestNGClassFinder(moreClasses.toArray(
-                    new Class[moreClasses.size()]),
-                    m_instanceMap,
-                    xmlTest,
-                    annotationFinder,
-                    m_testContext);
-
-              IClass[] moreIClasses= finder.findTestClasses();
-              for(IClass ic2 : moreIClasses) {
-                putIClass(ic2.getRealClass(), ic2);
-              }
-            } // if moreClasses.size() > 0
-          }
-        } // null != ic
-      } // if not TestNG class
-      else {
-        Utils.log("TestNGClassFinder", 3, "SKIPPING CLASS " + cls + " no TestNG annotations found");
-      }
-    } // for
-
-    //
-    // Add all the instances we found to their respective IClasses
-    //
-    for(Class c : m_instanceMap.keySet()) {
-      List<Object> instances= m_instanceMap.get(c);
-      for(Object instance : instances) {
-        IClass ic= getIClass(c);
-        if(null != ic) {
-          ic.addInstance(instance);
-        }
-      }
-    }
-  }
-
-  /**
-   * Checks if class is a testng class based on the {@link IAnnotationFinder}
-   * passed in, which may be a jdk14 or jdk15 {@link IAnnotationFinder} instance.
-   * @param cls The class being tested
-   * @param annotationFinder The instance of annotation finder being used
-   * @return True if class has any testng annotations
-   */
-  public static boolean isTestNGClass(Class cls, IAnnotationFinder annotationFinder) {
-	  Class[] allAnnotations= AnnotationHelper.getAllAnnotations();
-
-      try {
-        for(Class annotation : allAnnotations) {
-          // Try on the methods
-          for(Method m : cls.getMethods()) {
-            IAnnotation ma= annotationFinder.findAnnotation(m, annotation);
-            if(null != ma) {
-              return true;
-            }
-          }
-
-          // Try on the class
-	      IAnnotation a= annotationFinder.findAnnotation(cls, annotation);
-	      if(null != a) {
-	        return true;
-	      }
-
-	      // Try on the constructors
-  	      for(Constructor ctor : cls.getConstructors()) {
-  	        IAnnotation ca= annotationFinder.findAnnotation(ctor, annotation);
-  	        if(null != ca) {
-  	          return true;
-  	        }
-  	      }
-  	    }
-
-  	    return false;
-      } catch (NoClassDefFoundError e) {
-        Utils.log("[TestNGClassFinder]", 1, "Unable to read methods on class " + cls.getName() + " - unable to resolve class reference " + e.getMessage());
-        return false;
-      }
-  }
-
-  private void addInstance(Class clazz, Object o) {
-    List<Object> list= m_instanceMap.get(clazz);
-
-    if(null == list) {
-      list= Lists.newArrayList();
-      m_instanceMap.put(clazz, list);
-    }
-
-    list.add(o);
-  }
-
-  public static void ppp(String s) {
-    System.out.println("[TestNGClassFinder] " + s);
-  }
-
-}
diff --git a/src/org/testng/internal/TestNGGuiceModule.java b/src/org/testng/internal/TestNGGuiceModule.java
deleted file mode 100644
index 6ed8233..0000000
--- a/src/org/testng/internal/TestNGGuiceModule.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.testng.internal;
-
-import com.google.inject.Binder;
-import com.google.inject.Module;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-import com.google.inject.internal.Nullable;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.IObjectFactory;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.JDK15AnnotationFinder;
-
-public class TestNGGuiceModule implements Module {
-
-  private IAnnotationTransformer m_annotationTransformer;
-  private IObjectFactory m_objectFactory;
-
-  public TestNGGuiceModule(IAnnotationTransformer transformer, IObjectFactory factory) {
-    m_annotationTransformer = transformer;
-    m_objectFactory = factory;
-  }
-
-  public void configure(Binder binder) {
-    binder.bind(IAnnotationFinder.class).to(JDK15AnnotationFinder.class).in(Singleton.class);
-    binder.bind(IConfiguration.class).to(Configuration.class).in(Singleton.class);
-  }
-
-  @Provides
-  IAnnotationTransformer provideAnnotationTransformer() {
-    return m_annotationTransformer;
-  }
-
-  @Provides
-  IObjectFactory provideObjectFactory() {
-    return m_objectFactory;
-  }
-}
diff --git a/src/org/testng/internal/TestNGMethod.java b/src/org/testng/internal/TestNGMethod.java
deleted file mode 100755
index 782dd21..0000000
--- a/src/org/testng/internal/TestNGMethod.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package org.testng.internal;
-
-import java.lang.reflect.Method;
-import java.util.Comparator;
-
-import org.testng.ITestClass;
-import org.testng.ITestNGMethod;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-
-/**
- * This class represents a test method.
- *
- * @author Cedric Beust, May 3, 2004
- * @author <a href = "mailto:the_mindstorm@evolva.ro">Alexandru Popescu</a>
- */
-public class TestNGMethod extends BaseTestMethod {
-  private int m_threadPoolSize = 0;
-  private int m_invocationCount = 1;
-  private int m_successPercentage = 100;
-  private long m_timeOut = 0;
-  private XmlTest m_xmlTest;
-
-  /**
-   * Constructs a <code>TestNGMethod</code>
-   *
-   * @param method
-   * @param finder
-   */
-  public TestNGMethod(Method method, IAnnotationFinder finder, XmlTest xmlTest) {
-    this(method, finder, true, xmlTest);
-  }
-
-  private TestNGMethod(Method method, IAnnotationFinder finder, boolean initialize, XmlTest xmlTest) {
-    super(method, finder);
-
-    if(initialize) {
-      init(xmlTest);
-    }
-  }
-  
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public long getTimeOut() {
-    long result = m_timeOut != 0 ? m_timeOut : (m_xmlTest != null ? m_xmlTest.getTimeOut(0) : 0);
-    return result;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public int getInvocationCount() {
-    return m_invocationCount;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public int getSuccessPercentage() {
-    return m_successPercentage;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public boolean isTest() {
-    return true;
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[TestNGMethod] " + s);
-  }
-
-  private void init(XmlTest xmlTest) {
-    m_xmlTest = xmlTest;
-    setInvocationNumbers(xmlTest.getInvocationNumbers(
-        m_method.getDeclaringClass().getName() + "." + m_method.getName()));
-    {
-      ITestAnnotation testAnnotation = AnnotationHelper.findTest(getAnnotationFinder(), m_method);
-      
-      if (testAnnotation == null) {
-        // Try on the class
-        testAnnotation = AnnotationHelper.findTest(getAnnotationFinder(), m_method.getDeclaringClass());
-      }
-
-      if (null != testAnnotation) {
-        m_timeOut = testAnnotation.getTimeOut();
-        m_successPercentage = testAnnotation.getSuccessPercentage();
-
-        setInvocationCount(testAnnotation.getInvocationCount());
-        setThreadPoolSize(testAnnotation.getThreadPoolSize());
-        setAlwaysRun(testAnnotation.getAlwaysRun());
-        setDescription(testAnnotation.getDescription());
-        setRetryAnalyzer(testAnnotation.getRetryAnalyzer());
-        setSkipFailedInvocations(testAnnotation.skipFailedInvocations());
-        setInvocationTimeOut(testAnnotation.invocationTimeOut());
-        setIgnoreMissingDependencies(testAnnotation.ignoreMissingDependencies());
-        setPriority(testAnnotation.getPriority());
-      }
-
-      // Groups
-      {
-        initGroups(ITestAnnotation.class);
-      }
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  public int getThreadPoolSize() {
-    return m_threadPoolSize;
-  }
-  
-  /**
-   * Sets the number of threads on which this method should be invoked.
-   */
-  public void setThreadPoolSize(int threadPoolSize) {
-    m_threadPoolSize = threadPoolSize;
-  }
-  
-  /**
-   * Sets the number of invocations for this method.
-   */
-  public void setInvocationCount(int counter) {
-    m_invocationCount= counter;
-  }
-  
-  public XmlTest getXmlTest() {
-      return m_xmlTest;
-  }
-  
-  /**
-   * Clones the current <code>TestNGMethod</code> and its @BeforeMethod and @AfterMethod methods.
-   * @see org.testng.internal.BaseTestMethod#clone()
-   */
-  public TestNGMethod clone() {
-    TestNGMethod clone= new TestNGMethod(getMethod(), getAnnotationFinder(), false, getXmlTest());
-    ITestClass tc= getTestClass();
-    NoOpTestClass testClass= new NoOpTestClass(tc);
-    testClass.setBeforeTestMethods(clone(tc.getBeforeTestMethods()));
-    testClass.setAfterTestMethod(clone(tc.getAfterTestMethods()));
-    clone.m_testClass= testClass;
-    clone.setDate(getDate());
-    clone.setGroups(getGroups());
-    clone.setGroupsDependedUpon(getGroupsDependedUpon());
-    clone.setMethodsDependedUpon(getMethodsDependedUpon());
-    clone.setAlwaysRun(isAlwaysRun());
-    clone.m_beforeGroups= getBeforeGroups();
-    clone.m_afterGroups= getAfterGroups();
-    clone.m_currentInvocationCount= m_currentInvocationCount;
-    clone.setMissingGroup(getMissingGroup());
-    clone.setThreadPoolSize(getThreadPoolSize());
-    clone.setDescription(getDescription());
-    clone.setParameterInvocationCount(getParameterInvocationCount());
-    clone.setInvocationCount(getInvocationCount());
-    clone.m_successPercentage = getSuccessPercentage();
-    clone.m_timeOut = getTimeOut();
-    clone.setRetryAnalyzer(getRetryAnalyzer());
-    clone.setSkipFailedInvocations(skipFailedInvocations());
-    clone.setInvocationNumbers(getInvocationNumbers());
-
-    return clone;
-  }
-  
-  private ITestNGMethod[] clone(ITestNGMethod[] sources) {
-    ITestNGMethod[] clones= new ITestNGMethod[sources.length];
-    for(int i= 0; i < sources.length; i++) {
-      clones[i]= sources[i].clone();
-    }
-    
-    return clones;
-  }
-  
-  /** Sorts ITestNGMethod by Class name. */
-  public static final Comparator<ITestNGMethod> SORT_BY_CLASS =
-    new Comparator<ITestNGMethod>() {
-    
-    public int compare(ITestNGMethod o1, ITestNGMethod o2) {
-      String c1 = o1.getTestClass().getName();
-      String c2 = o2.getTestClass().getName();
-      return c1.compareTo(c2);
-    }
-  };
-}
diff --git a/src/org/testng/internal/TestNGMethodFinder.java b/src/org/testng/internal/TestNGMethodFinder.java
deleted file mode 100755
index 1f5de5f..0000000
--- a/src/org/testng/internal/TestNGMethodFinder.java
+++ /dev/null
@@ -1,239 +0,0 @@
-package org.testng.internal;
-
-
-import org.testng.ITestMethodFinder;
-import org.testng.ITestNGMethod;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.collections.Lists;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Set;
-
-/**
- * The default strategy for finding test methods:  look up
- * annotations @Test in front of methods.
- *
- * @author Cedric Beust, May 3, 2004
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- * @param <ITestNGMetthod>
- */
-public class TestNGMethodFinder<ITestNGMetthod> implements ITestMethodFinder {
-  private static final int BEFORE_SUITE = 1;
-  private static final int AFTER_SUITE = 2;
-  private static final int BEFORE_TEST = 3;
-  private static final int AFTER_TEST = 4;
-  private static final int BEFORE_CLASS = 5;
-  private static final int AFTER_CLASS = 6;
-  private static final int BEFORE_TESTMETHOD = 7;
-  private static final int AFTER_TESTMETHOD = 8;
-  private static final int BEFORE_GROUPS = 9;
-  private static final int AFTER_GROUPS = 10;
-    
-  private RunInfo m_runInfo = null;
-  private IAnnotationFinder m_annotationFinder = null;
-
-  public TestNGMethodFinder(RunInfo runInfo,
-                            IAnnotationFinder annotationFinder)
-  {
-    m_runInfo = runInfo;
-    m_annotationFinder = annotationFinder;
-  }
-
-  public ITestNGMethod[] getTestMethods(Class clazz, XmlTest xmlTest) {
-    return AnnotationHelper.findMethodsWithAnnotation(
-        clazz, ITestAnnotation.class, m_annotationFinder, xmlTest);
-  }
-
-  public ITestNGMethod[] getBeforeClassMethods(Class cls) {
-    return findConfiguration(cls, BEFORE_CLASS);
-//    return findConfiguration(cls, false, true, false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getAfterClassMethods(Class cls) {
-    return findConfiguration(cls, AFTER_CLASS);
-//    return findConfiguration(cls, false /* method */, false, /* before */
-//                             false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getBeforeTestMethods(Class cls) {
-    return findConfiguration(cls, BEFORE_TESTMETHOD);
-//    return findConfiguration(cls, true /* method */, true /* before */,
-//                             false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getAfterTestMethods(Class cls) {
-    return findConfiguration(cls, AFTER_TESTMETHOD);
-//    return findConfiguration(cls, true /* method */, false /* before */,
-//                             false /* isSuite */);
-  }
-
-  public ITestNGMethod[] getBeforeSuiteMethods(Class cls) {
-    return findConfiguration(cls, BEFORE_SUITE);
-//    return findConfiguration(cls,
-//                             false /*method */, true /* before */,
-//                             true /* suite */);
-  }
-
-  public ITestNGMethod[] getAfterSuiteMethods(Class cls) {
-    return findConfiguration(cls, AFTER_SUITE);
-//    return findConfiguration(cls, false /* method */, false /* before */,
-//                             true /* suite */);
-  }
-
-  public ITestNGMethod[] getBeforeTestConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, BEFORE_TEST);
-  }
-
-  public ITestNGMethod[] getAfterTestConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, AFTER_TEST);
-  }
-  
-  public ITestNGMethod[] getBeforeGroupsConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, BEFORE_GROUPS);    
-  }
-
-  public ITestNGMethod[] getAfterGroupsConfigurationMethods(Class clazz) {
-    return findConfiguration(clazz, AFTER_GROUPS);        
-  }
-
-  private ITestNGMethod[] findConfiguration(final Class clazz, final int configurationType) {
-    List<ITestNGMethod> vResult = Lists.newArrayList();
-    
-    Set<Method> methods = ClassHelper.getAvailableMethods(clazz);
-
-    for(Method m : methods) {
-      IConfigurationAnnotation configuration = AnnotationHelper.findConfiguration(m_annotationFinder, m);
-
-      if(null == configuration) {
-        continue;
-      }
-      
-      boolean create = false;
-      boolean isBeforeSuite = false;
-      boolean isAfterSuite = false;
-      boolean isBeforeTest = false;
-      boolean isAfterTest = false;
-      boolean isBeforeClass = false;
-      boolean isAfterClass = false;
-      boolean isBeforeTestMethod = false;
-      boolean isAfterTestMethod = false;
-      String[] beforeGroups = null;
-      String[] afterGroups = null;
-      
-      switch(configurationType) {
-        case BEFORE_SUITE:
-          create = configuration.getBeforeSuite();
-          isBeforeSuite = true;
-          break;
-        case AFTER_SUITE:
-          create = configuration.getAfterSuite();
-          isAfterSuite = true;
-          break;
-        case BEFORE_TEST:
-          create = configuration.getBeforeTest();
-          isBeforeTest = true;
-          break;
-        case AFTER_TEST:
-          create = configuration.getAfterTest();
-          isAfterTest = true;
-          break;
-        case BEFORE_CLASS:
-          create = configuration.getBeforeTestClass();
-          isBeforeClass = true;
-          break;
-        case AFTER_CLASS:
-          create = configuration.getAfterTestClass();
-          isAfterClass = true;
-          break;
-        case BEFORE_TESTMETHOD:
-          create = configuration.getBeforeTestMethod();
-          isBeforeTestMethod = true;
-          break;
-        case AFTER_TESTMETHOD:
-          create = configuration.getAfterTestMethod();
-          isAfterTestMethod = true;
-          break;
-        case BEFORE_GROUPS:
-          beforeGroups = configuration.getBeforeGroups();
-          create = beforeGroups.length > 0;
-          isBeforeTestMethod = true;
-          break;
-        case AFTER_GROUPS:
-          afterGroups = configuration.getAfterGroups();
-          create = afterGroups.length > 0;
-          isBeforeTestMethod = true;
-          break;
-      }
-    
-      if(create) {
-        addConfigurationMethod(clazz, 
-                               vResult, 
-                               m, 
-                               isBeforeSuite, 
-                               isAfterSuite, 
-                               isBeforeTest, 
-                               isAfterTest, 
-                               isBeforeClass, 
-                               isAfterClass, 
-                               isBeforeTestMethod, 
-                               isAfterTestMethod,
-                               beforeGroups,
-                               afterGroups);
-      }
-    }
-
-    List<ITestNGMethod> excludedMethods = Lists.newArrayList();
-    boolean unique = configurationType == BEFORE_SUITE || configurationType == AFTER_SUITE;
-    ITestNGMethod[] tmResult = MethodHelper.collectAndOrderConfigurationMethods(vResult,
-                                                                                m_runInfo,
-                                                                                m_annotationFinder,
-                                                                                unique,
-                                                                                excludedMethods);
-
-    return tmResult;
-  }
-   
-
-
-  private void addConfigurationMethod(Class<?> clazz,
-                                      List<ITestNGMethod> results,
-                                      Method method,
-                                      boolean isBeforeSuite,
-                                      boolean isAfterSuite,
-                                      boolean isBeforeTest,
-                                      boolean isAfterTest,
-                                      boolean isBeforeClass,
-                                      boolean isAfterClass,
-                                      boolean isBeforeTestMethod,
-                                      boolean isAfterTestMethod,
-                                      String[] beforeGroups,
-                                      String[] afterGroups) 
-  {
-    if(method.getDeclaringClass().isAssignableFrom(clazz)) {
-      ITestNGMethod confMethod = new ConfigurationMethod(method,
-                                                         m_annotationFinder,
-                                                         isBeforeSuite,
-                                                         isAfterSuite,
-                                                         isBeforeTest,
-                                                         isAfterTest,
-                                                         isBeforeClass,
-                                                         isAfterClass,
-                                                         isBeforeTestMethod,
-                                                         isAfterTestMethod,
-                                                         beforeGroups,
-                                                         afterGroups);
-      results.add(confMethod);
-    }
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[DefaultTestMethodFinder] " + s);
-  }
-  
-
-}
diff --git a/src/org/testng/internal/TestNGProperty.java b/src/org/testng/internal/TestNGProperty.java
deleted file mode 100755
index 9cbb717..0000000
--- a/src/org/testng/internal/TestNGProperty.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.testng.internal;
-
-
-/**
- * Describes a property
- *
- * @author Cedric Beust, May 2, 2004
- * 
- */
-public class TestNGProperty {
-  private String m_commandLineName = null;
-  private String m_name = null;
-  private String m_documentation = null;
-  private String m_default = null;
-  
-  public TestNGProperty(String clName, String name, String doc, String def) {
-    init(clName, name, doc, def);
-  }
-  
-  public TestNGProperty(String name, String doc, String def) {
-    init(name, name, doc, def);
-  }
-
-  private void init(String clName, String name, String doc, String def) {
-    m_commandLineName = clName;
-    m_name = name;
-    m_documentation = doc;
-    m_default = def;
-  }
-
-  /**
-   * @return Returns the default.
-   */
-  public String getDefault() {
-    return m_default;
-  }
-  /**
-   * @return Returns the documentation.
-   */
-  public String getDocumentation() {
-    return m_documentation;
-  }
-  /**
-   * @return Returns the name.
-   */
-  public String getName() {
-    return m_name;
-  }
-  
-  public String getCommandLineName() {
-    return m_commandLineName;
-  }
-}
diff --git a/src/org/testng/internal/TestResult.java b/src/org/testng/internal/TestResult.java
deleted file mode 100644
index 6b13f89..0000000
--- a/src/org/testng/internal/TestResult.java
+++ /dev/null
@@ -1,258 +0,0 @@
-package org.testng.internal;
-
-import org.testng.IAttributes;
-import org.testng.IClass;
-import org.testng.ITest;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.Reporter;
-import org.testng.collections.Maps;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * This class represents the result of a test.
- *
- * @author Cedric Beust, May 2, 2004
- */
-public class TestResult implements ITestResult {
-
-  private IClass m_testClass = null;
-  private ITestNGMethod m_method = null;
-  private int m_status = -1;
-  private Throwable m_throwable = null;
-  private long m_startMillis = 0;
-  private long m_endMillis = 0;
-  private String m_name = null;
-  private String m_host;
-  private Object[] m_parameters = {};
-  private Object m_instance;
-
-  public TestResult() {
-    
-  }
-
-  public TestResult(IClass testClass,
-      Object instance,
-      ITestNGMethod method,
-      Throwable throwable,
-      long start,
-      long end)
-  {
-    init(testClass, instance, method, throwable, start, end);
-  }
-
-  /**
-   * 
-   * @param testClass
-   * @param instance
-   * @param method
-   * @param throwable
-   * @param start
-   * @param end
-   */
-  public void init (IClass testClass,
-      Object instance,
-      ITestNGMethod method,
-      Throwable throwable,
-      long start,
-      long end)
-  {
-    m_testClass = testClass;
-    m_throwable = throwable;
-    if (null == m_throwable) {
-      m_status = ITestResult.SUCCESS;
-    }
-    m_startMillis = start;
-    m_endMillis = end;
-    m_method = method;
-    
-    //
-    // Assign a name if the instance is an instanceof ITest
-    //
-    m_instance = instance;
-    if (m_instance == null) {
-      m_name = m_method.getMethodName();
-    } else if (m_instance instanceof ITest) {
-      m_name = ((ITest) m_instance).getTestName();
-    } else {
-      String string = m_instance.toString();
-      // Only display toString() if it's been overridden by the user
-      m_name = getMethod().getMethodName();
-      try {
-        if (!Object.class.getMethod("toString")
-            .equals(m_instance.getClass().getMethod("toString"))) {
-          m_name = m_name + " on instance " + string;
-        }
-      }
-      catch(NoSuchMethodException ignore) {
-        // ignore
-      }
-    }
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[TestResult] " + s);
-  }
-
-  public void setEndMillis(long millis) {
-    m_endMillis = millis;
-  }
-
-  public String getName() {
-    return m_name;
-  }
-
-  /**
-   * @return Returns the method.
-   */
-  public ITestNGMethod getMethod() {
-    return m_method;
-  }
-
-  /**
-   * @param method The method to set.
-   */
-  public void setMethod(ITestNGMethod method) {
-    m_method = method;
-  }
-
-  /**
-   * @return Returns the status.
-   */
-  public int getStatus() {
-    return m_status;
-  }
-
-  /**
-   * @param status The status to set.
-   */
-  public void setStatus(int status) {
-    m_status = status;
-  }
-
-  public boolean isSuccess() {
-    return ITestResult.SUCCESS == m_status;
-  }
-
-  /**
-   * @return Returns the testClass.
-   */
-  public IClass getTestClass() {
-    return m_testClass;
-  }
-
-  /**
-   * @param testClass The testClass to set.
-   */
-  public void setTestClass(IClass testClass) {
-    m_testClass = testClass;
-  }
-
-  /**
-   * @return Returns the throwable.
-   */
-  public Throwable getThrowable() {
-    return m_throwable;
-  }
-
-  /**
-   * @param throwable The throwable to set.
-   */
-  public void setThrowable(Throwable throwable) {
-    m_throwable = throwable;
-  }
-
-  /**
-   * @return Returns the endMillis.
-   */
-  public long getEndMillis() {
-    return m_endMillis;
-  }
-
-  /**
-   * @return Returns the startMillis.
-   */
-  public long getStartMillis() {
-    return m_startMillis;
-  }
-  
-//  public List<String> getOutput() {
-//    return m_output;
-//  }
-  
-  @Override
-  public String toString() {
-    List<String> output = Reporter.getOutput(this);
-    String result = "[TestResult: " + getName() 
-        + " STATUS:" + toString(m_status)
-        + " METHOD:" + m_method;
-    result += output != null && output.size() > 0 ? output.get(0) : ""
-        + "]\n";  
-        
-      return result;
-  }
-
-  private String toString(int status) {
-    switch(status) {
-      case SUCCESS: return "SUCCESS";
-      case FAILURE: return "FAILURE";
-      case SKIP: return "SKIP";
-      case SUCCESS_PERCENTAGE_FAILURE: return "SUCCESS WITHIN PERCENTAGE";
-      case STARTED: return "STARTED"; 
-      default: throw new RuntimeException();
-    }
-  }
-
-  public String getHost() {
-    return m_host;
-  }
-  
-  public void setHost(String host) {
-    m_host = host;
-  }
-  
-  public Object[] getParameters() {
-    return m_parameters;
-  }
-
-  public void setParameters(Object[] parameters) {
-    m_parameters = parameters;
-  }
-
-  public Object getInstance() {
-    return m_instance;
-  }
-
-  private IAttributes m_attributes = new Attributes();
-
-  public Object getAttribute(String name) {
-    return m_attributes.getAttribute(name);
-  }
-
-  public void setAttribute(String name, Object value) {
-    m_attributes.setAttribute(name, value);
-  }
-
-  public Set<String> getAttributeNames() {
-    return m_attributes.getAttributeNames();
-  }
-
-  public Object removeAttribute(String name) {
-    return m_attributes.removeAttribute(name);
-  }
-
-  public int compareTo(ITestResult comparison) {
-	  if( getStartMillis() > comparison.getStartMillis() ) {
-		  return 1;
-	  } else if( getStartMillis() < comparison.getStartMillis()) {
-		  return -1;
-	  } else {
-		  return 0;
-	  }
-  }
-}
-
diff --git a/src/org/testng/internal/Utils.java b/src/org/testng/internal/Utils.java
deleted file mode 100755
index f71ec8e..0000000
--- a/src/org/testng/internal/Utils.java
+++ /dev/null
@@ -1,666 +0,0 @@
-package org.testng.internal;
-
-
-import org.testng.ITestNGMethod;
-import org.testng.TestNGCommandLineArgs;
-import org.testng.TestRunner;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.annotations.AnnotationHelper;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.log.TextFormatter;
-import org.testng.xml.XmlClass;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.logging.FileHandler;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Helper methods to parse annotations.
- *
- * @author Cedric Beust, Apr 26, 2004
- */
-public final class Utils {
-  private static final String LINE_SEP = System.getProperty("line.separator");
-
-  public static final char[] SPECIAL_CHARACTERS =
-      {'*','/','\\','?','%',':',';','<','>','&','~','|'};
-  public static final char CHAR_REPLACEMENT = '_';
-
-  /**
-   * Hide constructor for utility class.
-   */
-  private Utils() {
-    // Hide constructor
-  }
-  
-  /**
-   * Splits the given String s into tokens where the separator is
-   * either the space character or the comma character. For example, 
-   * if s is "a,b, c" this method returns {"a", "b", "c"}
-   *  
-   * @param s the string to split
-   * @return the split token 
-   */  
-  public static String[] stringToArray(String s) {
-    // TODO CQ would s.split() be a better way of doing this?
-    StringTokenizer st = new StringTokenizer(s, " ,");
-    String[] result = new String[st.countTokens()];
-    for (int i = 0; i < result.length; i++) {
-      result[i] = st.nextToken();
-    }
-
-    return result;
-  }
-
-  public static Class<?>[] xmlClassesToClasses(List<XmlClass> classes) {
-    List<Class<?>> result = Lists.newArrayList();
-
-    for (XmlClass xmlClass : classes) {
-      try {
-        result.add(xmlClass.getSupportClass());
-      } catch (NoClassDefFoundError e) {
-        log("[Utils]", 1, "Unable to open class " + xmlClass.getName() + " - unable to resolve class reference " + e.getMessage());
-        if (xmlClass.getDeclaredClass() == Boolean.TRUE) {
-          throw e;
-        }
-      }
-    }
-
-    Class<?>[] xmlClasses = result.toArray(new Class[result.size()]);
-    Map<Class<?>, Class<?>> withNestedClasses = Maps.newHashMap();
-    findAllClasses(xmlClasses, withNestedClasses);
-
-    return withNestedClasses.values().toArray(new Class[withNestedClasses.size()]);
-  }
-
-  public static XmlClass[] classesToXmlClasses(Class<?>[] classes) {
-    List<XmlClass> result = Lists.newArrayList();
-
-    for (Class<?> cls : classes) {
-      result.add(new XmlClass(cls, Boolean.TRUE));
-    }
-
-    return result.toArray(new XmlClass[classes.length]);
-  }
-  
-  /**
-   * Find all the classes inside this array, including nested ones.
-   * @param classes
-   * @return
-   */
-  private static void findAllClasses(Class<?>[] classes, Map<Class<?>, Class<?>> result) {
-    for (Class<?> cls : classes) {
-      if (!result.containsKey(cls)) {
-        result.put(cls, cls);
-      }
-    }
-  }
-
-  public static String[] parseMultiLine(String line) {
-    List<String> vResult = Lists.newArrayList();
-    if ((null != line) && !"".equals(line.trim())) {
-      StringTokenizer st = new StringTokenizer(line, " ");
-      while (st.hasMoreTokens()) {
-        vResult.add(st.nextToken());
-      }
-      // Bug in split when passed " " : returns one too many result
-      //      result = line.split(" ");
-    }
-
-    String[] result = vResult.toArray(new String[vResult.size()]);
-
-    return result;
-  }
-
-  /**
-   * Writes the content of the sb string to the file named filename in outDir encoding the output as UTF-8. 
-   * If outDir does not exist, it is created.
-   *
-   * @param outputDir the output directory (may not exist). If <tt>null</tt> then current directory is used.
-   * @param fileName the filename
-   * @param sb the file content
-   */
-  public static void writeUtf8File(String outputDir, String fileName, String sb) {
-    final String outDirPath= outputDir != null ? outputDir : "";
-    final File outDir= new File(outDirPath);
-    writeFile(outDir, fileName, sb, "UTF-8");    
-  }
-  
-  /**
-   * Writes the content of the sb string to the file named filename in outDir. If 
-   * outDir does not exist, it is created.
-   *
-   * @param outputDir the output directory (may not exist). If <tt>null</tt> then current directory is used.
-   * @param fileName the filename
-   * @param sb the file content
-   */
-  public static void writeFile(String outputDir, String fileName, String sb) {
-    final String outDirPath= outputDir != null ? outputDir : "";
-    final File outDir= new File(outDirPath);
-    writeFile(outDir, fileName, sb, null);
-  }
-  
-  /**
-   * Writes the content of the sb string to the file named filename in outDir. If 
-   * outDir does not exist, it is created.
-   *
-   * @param outDir the output directory (may not exist). If <tt>null</tt> then current directory is used.
-   * @param fileName the filename
-   * @param sb the file content
-   */
-  private static void writeFile(File outDir, String fileName, String sb, String encoding) {
-    try {
-      if (!outDir.exists()) {
-        outDir.mkdirs();
-      }
-      
-      fileName = replaceSpecialCharacters(fileName);
-      File outputFile = new File(outDir, fileName);
-      outputFile.delete();
-      outputFile.createNewFile();
-      
-      writeFile(outputFile, sb, encoding);
-    }
-    catch (IOException e) {
-      if (TestRunner.getVerbose() > 1) {
-        e.printStackTrace();
-      }
-      else {
-        log("[Utils]", 1, e.getMessage());
-      }
-    }
-  }
-
-  private static void writeFile(File outputFile, String sb, String encoding) {
-    BufferedWriter fw = null;
-    try {
-      if (! outputFile.exists()) outputFile.createNewFile();
-      OutputStreamWriter osw= null;
-      if(null != encoding) {
-        osw= new OutputStreamWriter(new FileOutputStream(outputFile, false), encoding);
-      }
-      else {
-        osw= new OutputStreamWriter(new FileOutputStream(outputFile, false));
-      }
-      fw = new BufferedWriter(osw);
-      fw.write(sb);
-  
-      Utils.log("", 3, "Creating " + outputFile.getAbsolutePath());
-    }
-    catch(IOException ex) {
-      if (TestRunner.getVerbose() > 1) {
-        System.err.println("ERROR WHILE WRITING TO " + outputFile);
-        ex.printStackTrace();
-      }
-      else {
-        log("[Utils]", 1, "Error while writing to " + outputFile + ": " + ex.getMessage());
-      }
-    }
-    finally {
-      try {
-        if (fw != null) {
-          fw.close();
-        }
-      }
-      catch (IOException e) {
-        ; // ignore
-      }
-    }
-  }
-
-  private static void ppp(String s) {
-    Utils.log("Utils", 0, s);
-  }
-
-  /**
-   * @param result
-   */
-  public static void dumpMap(Map<?, ?> result) {
-    System.out.println("vvvvv");
-    for (Iterator<?> it = result.keySet().iterator(); it.hasNext();) {
-      Object key = it.next();
-      Object value = result.get(key);
-      System.out.println(key + " => " + value);
-    }
-    System.out.println("^^^^^");
-  }
-
-  /**
-   * @param allMethods
-   */
-  public static void dumpMethods(List<ITestNGMethod> allMethods) {
-    ppp("======== METHODS:");
-    for (ITestNGMethod tm : allMethods) {
-      ppp("  " + tm);
-    }
-  }
-
-  /**
-   * @return The list of dependent groups for this method, including the
-   * class groups
-   */
-  public static String[] dependentGroupsForThisMethodForTest(Method m, IAnnotationFinder finder) {
-    List<String> vResult = Lists.newArrayList();
-    Class<?> cls = m.getDeclaringClass();
-
-    // Collect groups on the class
-    ITestAnnotation tc = AnnotationHelper.findTest(finder, cls);
-    if (null != tc) {
-      for (String group : tc.getDependsOnGroups()) {
-        vResult.add(group);
-      }
-    }
-
-    // Collect groups on the method
-    ITestAnnotation tm = AnnotationHelper.findTest(finder, m);
-    if (null != tm) {
-      String[] groups = tm.getDependsOnGroups();
-
-      //       ppp("Method:" + m + " #Groups:" + groups.length);
-      for (String group : groups) {
-        vResult.add(group);
-      }
-    }
-
-    return (String[]) vResult.toArray(new String[vResult.size()]);
-  }
-
-  /**
-   * @return The list of groups this method belongs to, including the
-   * class groups
-   */
-  public static String[] groupsForThisMethodForTest(Method m, IAnnotationFinder finder) {
-    List<String> vResult = Lists.newArrayList();
-    Class<?> cls = m.getDeclaringClass();
-
-    // Collect groups on the class
-    ITestAnnotation tc = AnnotationHelper.findTest(finder, cls);
-    if (null != tc) {
-      for (String group : tc.getGroups()) {
-        vResult.add(group);
-      }
-    }
-
-    // Collect groups on the method
-    ITestAnnotation tm = AnnotationHelper.findTest(finder, m);
-    if (null != tm) {
-      String[] groups = tm.getGroups();
-
-      //       ppp("Method:" + m + " #Groups:" + groups.length);
-      for (String group : groups) {
-        vResult.add(group);
-      }
-    }
-
-    return (String[]) vResult.toArray(new String[vResult.size()]);
-  }
-
-  /**
-   * @return The list of groups this method belongs to, including the
-   * class groups
-   */
-  public static String[] groupsForThisMethodForConfiguration(Method m, IAnnotationFinder finder) {
-    String[] result = {};
-
-    // Collect groups on the method
-    ITestAnnotation tm = AnnotationHelper.findTest(finder, m);
-    if (null != tm) {
-      result = tm.getGroups();
-    }
-
-    return result;
-  }
-
-  /**
-   * @return The list of groups this method depends on, including the
-   * class groups
-   */
-  public static String[] dependentGroupsForThisMethodForConfiguration(Method m,
-                                                                      IAnnotationFinder finder) {
-    String[] result = {};
-
-    // Collect groups on the method
-    IConfigurationAnnotation tm = AnnotationHelper.findConfiguration(finder, m);
-    if (null != tm) {
-      result = tm.getDependsOnGroups();
-    }
-
-    return result;
-  }
-  
-  public static void log(String msg) {
-    log("Utils", 2, msg);
-  }
-
-  /**
-   * Logs the the message to System.out if level is greater than
-   * or equal to TestRunner.getVerbose(). The message is logged as:
-   * <pre>
-   *     "[cls] msg"
-   * </pre>
-   *
-   * @param cls the class name to prefix the log message.
-   * @param level the logging level of the message.
-   * @param msg the message to log to System.out.
-   */
-  public static void log(String cls, int level, String msg) {
-    // Why this coupling on a static member of TestRunner.getVerbose()?
-    if (TestRunner.getVerbose() >= level) {
-      if (cls.length() > 0) {
-        System.out.println("[" + cls + "] " + msg);
-      }
-      else {
-        System.out.println(msg);
-      }
-    }
-  }
-  
-  public static void error(String errorMessage) {
-    System.err.println("[Error] " + errorMessage);
-  }
-
-  /**
-   * @return The number of methods invoked, taking into account the number
-   * of instances.
-   */
-//  public static int calculateInvokedMethodCount(IResultMap map) {
-//    return calculateInvokedMethodCount(
-//        (ITestNGMethod[]) map.getAllMethods().toArray(new ITestNGMethod[map.size()]));
-//  }
-  
-  public static int calculateInvokedMethodCount(ITestNGMethod[] methods) {
-    return methods.length;
-//    int result = 0;
-//
-//    for (ITestNGMethod method : methods) {
-//      int instanceCount = method.getInvocationCount();
-//      result += instanceCount;
-//    }
-//
-//    return result;
-  }
-
-//  public static int calculateInvokedMethodCount(Map<ITestNGMethod, ITestResult> methods) {
-//    return calculateInvokedMethodCount(methods.keySet().toArray(new ITestNGMethod[methods.values()
-//                                                                .size()]));
-//  }
-
-  /**
-   * Tokenize the string using the separator.
-   */
-  public static String[] split(String string, String sep) {
-    if ((string == null) || (string.length() == 0)) {
-      return new String[0];
-    }
-
-    // TODO How different is this from: 
-    // return string.split(sep);
-    
-    int start = 0;
-    int idx = string.indexOf(sep, start);
-    int len = sep.length();
-    List<String> strings = Lists.newArrayList();
-
-    while (idx != -1) {
-      strings.add(string.substring(start, idx).trim());
-      start = idx + len;
-      idx = string.indexOf(sep, start);
-    }
-
-    strings.add(string.substring(start).trim());
-
-    return strings.toArray(new String[strings.size()]);
-  }
-
-  public static void initLogger(Logger logger, String outputLogPath) {
-    try {
-      logger.setUseParentHandlers(false);
-      FileHandler fh = new FileHandler(outputLogPath);
-      fh.setFormatter(new TextFormatter());
-      fh.setLevel(Level.INFO);
-      logger.addHandler(fh);
-    }
-    catch (SecurityException se) {
-      se.printStackTrace();
-    }
-    catch (IOException ioe) {
-      ioe.printStackTrace();
-    }
-  }
-
-  public static void logInvocation(String reason, Method thisMethod, Object[] parameters) {
-    String clsName = thisMethod.getDeclaringClass().getName();
-    int n = clsName.lastIndexOf(".");
-    if (n >= 0) {
-      clsName = clsName.substring(n + 1);
-    }
-    String methodName = clsName + '.' + thisMethod.getName();
-    if (TestRunner.getVerbose() >= 2) {
-      StringBuffer paramString = new StringBuffer();
-      if (parameters != null) {
-        for (Object p : parameters) {
-          paramString.append(p.toString()).append(' ');
-        }
-      }
-      log("", 2, "Invoking " + reason + methodName + '(' + paramString + ')');
-    }
-  }
-
-  public static void writeResourceToFile(File file, String resourceName, Class<?> clasz) throws IOException {
-    InputStream inputStream = clasz.getResourceAsStream("/" + resourceName);
-    if (inputStream == null) {
-      System.err.println("Couldn't find resource on the class path: " + resourceName);
-//      throw new IllegalArgumentException("Resource does not exist: " + resourceName);
-    }
-    
-    else {
-      
-      try {
-        FileOutputStream outputStream = new FileOutputStream(file);
-        try {
-          int nread;
-          byte[] buffer = new byte[4096];
-          while (0 < (nread = inputStream.read(buffer))) {
-            outputStream.write(buffer, 0, nread);
-          }
-        } finally {
-          outputStream.close();
-        }
-      } finally {
-        inputStream.close();
-      }
-    }
-  }
-
-  public static boolean isStringEmpty(String s) {
-    return s == null || "".equals(s);
-  }
-
-  public static String[] stackTrace(Throwable t, boolean tohtml) {
-    StringWriter sw = new StringWriter();
-    PrintWriter pw = new PrintWriter(sw);
-    t.printStackTrace(pw);
-    pw.flush();
-    
-    String fullStackTrace = sw.getBuffer().toString();
-    String shortStackTrace;
-    
-    if (Boolean.getBoolean(TestNGCommandLineArgs.SHOW_TESTNG_STACK_FRAMES)
-        || TestRunner.getVerbose() == -1) {
-      shortStackTrace = fullStackTrace;
-    }
-    else {
-      shortStackTrace = filterTrace(sw.getBuffer().toString());
-    }
-    
-    if (tohtml) {
-      shortStackTrace = shortStackTrace.replaceAll("<", "<").replaceAll(">", ">");
-      fullStackTrace = fullStackTrace.replaceAll("<", "<").replaceAll(">", ">");
-    }
-    
-    return new String[] {
-        shortStackTrace, fullStackTrace
-    };
-  }
-  
-  private static String filterTrace(String trace) {
-    StringReader   stringReader = new StringReader(trace);
-    BufferedReader bufferedReader = new BufferedReader(stringReader);
-    StringBuffer buf = new StringBuffer();
-
-    try {
-      // first line contains the thrown exception
-      String line = bufferedReader.readLine();
-      if(line == null) {
-        return "";
-      }
-      buf.append(line).append(LINE_SEP);
-      
-      //
-      // the stack frames of the trace
-      //
-      String[] excludedStrings = new String[] {
-          "org.testng",
-          "reflect"
-      };
-      
-      int excludedCount = 0;
-      while((line = bufferedReader.readLine()) != null) {
-        boolean isExcluded = false;
-        for (String excluded : excludedStrings) {
-          if(line.indexOf(excluded) != -1) {
-            isExcluded = true;
-            excludedCount++;
-            break;
-           }
-        }
-        if (! isExcluded) {
-          buf.append(line).append(LINE_SEP);
-        }
-      }
-      if (excludedCount > 0) {
-        buf.append("... Removed " + excludedCount + " stack frames");
-      }
-    }
-    catch(IOException ioex) {
-      ; // do nothing
-    }
-    
-    return buf.toString();
-  }
-
-  /**
-   * @param object
-   * @return
-   */
-  public static String toString(Object object, Class<?> objectClass) {
-    if(null == object) {
-      return "null";
-    }
-    final String toString= object.toString();
-    if("".equals(toString)) {
-      return "\"\"";
-    }
-    else if (String.class.equals(objectClass)) {
-      return "\"" + toString + '\"';
-    }
-    else {
-      return toString;
-    }
-  }
-
-  /**
-   * @param method
-   * @return
-   */
-  public static String detailedMethodName(ITestNGMethod method, boolean fqn) {
-    StringBuffer buf= new StringBuffer();
-    if(method.isBeforeSuiteConfiguration()) {
-      buf.append("@BeforeSuite ");
-    }
-    else if(method.isBeforeTestConfiguration()) {
-      buf.append("@BeforeTest ");
-    }
-    else if(method.isBeforeClassConfiguration()) {
-      buf.append("@BeforeClass ");
-    }
-    else if(method.isBeforeGroupsConfiguration()) {
-      buf.append("@BeforeGroups ");
-    }
-    else if(method.isBeforeMethodConfiguration()) {
-      buf.append("@BeforeMethod ");
-    }
-    else if(method.isAfterMethodConfiguration()) {
-      buf.append("@AfterMethod ");
-    }
-    else if(method.isAfterGroupsConfiguration()) {
-      buf.append("@AfterGroups ");
-    }
-    else if(method.isAfterClassConfiguration()) {
-      buf.append("@AfterClass ");
-    }
-    else if(method.isAfterTestConfiguration()) {
-      buf.append("@AfterTest ");
-    }
-    else if(method.isAfterSuiteConfiguration()) {
-      buf.append("@AfterSuite ");
-    }
-    
-    return buf.append(fqn ? method.toString() : method.getMethodName()).toString(); 
-  }
-
-  public static String arrayToString(String[] strings) {
-    String result = "";
-    if ((strings != null) && (strings.length > 0)) {
-      for (int i = 0; i < strings.length; i++) {
-        result += strings[i];
-        if (i < strings.length - 1) {
-          result += ", ";
-        }
-      }
-    }
-    return result;
-  }
-
-  /**
-   * If the file name contains special characters like *,/,\ and so on,
-   * exception will be thrown and report file will not be created.<br>
-   * Special characters are platform specific and they are not same for
-   * example on Windows and Macintosh. * is not allowed on Windows, but it is on Macintosh.<br>
-   * In order to have the same behavior of testng on the all platforms, characters like * will
-   * be replaced on all platforms whether they are causing the problem or not.
-   *
-   * @param fileName file name that could contain special characters.
-   * @return fileName with special characters replaced
-   * @author Borojevic
-   */
-  public static String replaceSpecialCharacters(String fileName) {
-   if (fileName == null || fileName.length() == 0) {
-     return fileName;
-   }
-   for (int i = 0;i < SPECIAL_CHARACTERS.length;i++) {
-     fileName = fileName.replace(SPECIAL_CHARACTERS[i], CHAR_REPLACEMENT);
-   }
-  
-   return fileName;
-  }
-}
diff --git a/src/org/testng/internal/XmlMethodSelector.java b/src/org/testng/internal/XmlMethodSelector.java
deleted file mode 100755
index d7a26a9..0000000
--- a/src/org/testng/internal/XmlMethodSelector.java
+++ /dev/null
@@ -1,429 +0,0 @@
-package org.testng.internal;
-
-import bsh.EvalError;
-import bsh.Interpreter;
-
-import org.testng.IMethodSelector;
-import org.testng.IMethodSelectorContext;
-import org.testng.ITestNGMethod;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlInclude;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * This class is the default method selector used by TestNG to determine
- * which methods need to be included and excluded based on the specification
- * given in testng.xml.
- * 
- * Created on Sep 30, 2005
- * @author cbeust
- */
-public class XmlMethodSelector implements IMethodSelector {
-  private static Interpreter s_interpreter;
-  
-  // Groups included and excluded for this run
-  private Map<String, String> m_includedGroups = Maps.newHashMap();
-  private Map<String, String> m_excludedGroups = Maps.newHashMap();
-  private List<XmlClass> m_classes = null;
-  // The BeanShell expression for this test, if any
-  private String m_expression = null;
-  // List of methods included implicitly
-  private Set<String> m_includedMethods = new HashSet<String>();
-  
-  public boolean  includeMethod(IMethodSelectorContext context,
-      ITestNGMethod tm, boolean isTestMethod) 
-  {
-//    ppp("XML METHOD SELECTOR " + tm + " " + m_isInitialized);
-    
-    if (! m_isInitialized) {
-      m_isInitialized = true;
-      init(context);
-    }
-    
-    boolean result = false;
-    if (null != m_expression) {
-      result = includeMethodFromExpression(tm, isTestMethod);
-    }
-    else {
-      result = includeMethodFromIncludeExclude(tm, isTestMethod);
-    }
-    
-    return result;
-  }
-  
-  private static Interpreter getInterpreter() {
-    if(null == s_interpreter) {
-      s_interpreter= new Interpreter();
-    }
-    
-    return s_interpreter;
-  }
-  
-  private boolean includeMethodFromExpression(ITestNGMethod tm,  boolean isTestMethod) {
-    boolean result = false;
-
-    Interpreter interpreter= getInterpreter();
-    try {
-      Map<String, String> groups = Maps.newHashMap();
-      for (String group : tm.getGroups()) {
-        groups.put(group, group);
-      }
-      setContext(interpreter, tm.getMethod(), groups, tm);
-      Object evalResult = interpreter.eval(m_expression);
-      result = ((Boolean) evalResult).booleanValue();
-    }
-    catch (EvalError evalError) {
-      Utils.log("bsh.Interpreter", 2, "Cannot evaluate expression:" + m_expression + ":" + evalError.getMessage());
-    }
-    finally {
-      resetContext(interpreter);
-    }
-
-    return result;
-    
-  }
-  
-  private void resetContext(Interpreter interpreter) {
-    try {
-      interpreter.unset("method");
-      interpreter.unset("groups");
-      interpreter.unset("testngMethod");
-    }
-    catch(EvalError evalError) {
-      Utils.log("bsh.Interpreter", 2, "Cannot reset interpreter:" + evalError.getMessage());
-    }
-  }
-  
-  private void setContext(Interpreter interpreter, Method method, Map<String, String> groups, ITestNGMethod tm) {
-    try {
-      interpreter.set("method", method);
-      interpreter.set("groups", groups);
-      interpreter.set("testngMethod", tm);
-    }
-    catch(EvalError evalError) {
-      throw new TestNGException("Cannot set BSH interpreter", evalError);
-    }
-  }
-  
-  private boolean includeMethodFromIncludeExclude(ITestNGMethod tm, boolean isTestMethod) {
-    boolean result = false;
-    Method m = tm.getMethod();
-    String[] groups = tm.getGroups();
-    Map<String, String> includedGroups = m_includedGroups;
-    Map<String, String> excludedGroups = m_excludedGroups;
-    
-    //
-    // No groups were specified:
-    //
-    if (includedGroups.size() == 0 && excludedGroups.size() == 0 
-        && ! hasIncludedMethods() && ! hasExcludedMethods())
-    //
-    // If we don't include or exclude any methods, method is in
-    //
-    {
-      result = true;
-    } 
-    //
-    // If it's a configuration method and no groups were requested, we want it in
-    //
-    else if (includedGroups.size() == 0 && excludedGroups.size() == 0 && ! isTestMethod) 
-    {
-      result = true;
-    }
-    
-    //
-    // Is this method included implicitly?
-    //
-    else if (m_includedMethods.contains(MethodHelper.calculateMethodCanonicalName(tm))) {
-      result = true;
-    }
-    
-    //
-    // Include or Exclude groups were specified:
-    //
-    else {
-      //
-      // Only add this method if it belongs to an included group and not
-      // to an excluded group
-      //
-      {
-        boolean isIncludedInGroups = isIncluded(groups, m_includedGroups.values());
-        boolean isExcludedInGroups = isExcluded(groups, m_excludedGroups.values());
-  
-        //
-        // Calculate the run methods by groups first
-        //
-        if (isIncludedInGroups && !isExcludedInGroups) {
-          result = true;
-        }
-        else if (isExcludedInGroups) {
-          result = false;
-        }
-      }
-      
-      if(isTestMethod) {
-        //
-        // Now filter by method name
-        //
-        Method method = tm.getMethod();
-        Class methodClass= method.getDeclaringClass();
-        String fullMethodName =  methodClass.getName() 
-                + "."
-                + method.getName();
-
-        String[] fullyQualifiedMethodName = new String[] { fullMethodName };
-        
-        //
-        // Iterate through all the classes so we can gather all the included and
-        // excluded methods
-        //
-        for (XmlClass xmlClass : m_classes) {
-          // Only consider included/excluded methods that belong to the same class
-          // we are looking at
-          Class cls= ClassHelper.forName(xmlClass.getName());
-          if(null == cls) {
-            Utils.log("XmlMethodSelector", 1, "Cannot find class in classpath " + xmlClass.getName());
-            continue;
-          }
-          if(!assignable(methodClass, cls)) {
-            continue;
-          }
-          
-          List<String> includedMethods =
-              createQualifiedMethodNames(xmlClass, toStringList(xmlClass.getIncludedMethods()));
-          boolean isIncludedInMethods = isIncluded(fullyQualifiedMethodName, includedMethods);
-          List<String> excludedMethods = createQualifiedMethodNames(xmlClass,
-              xmlClass.getExcludedMethods());
-          boolean isExcludedInMethods = isExcluded(fullyQualifiedMethodName, excludedMethods);
-          if (result) {
-            // If we're about to include this method by group, make sure
-            // it's included by method and not excluded by method
-            result = isIncludedInMethods && ! isExcludedInMethods;
-          }
-          // otherwise it's already excluded and nothing will bring it back,
-          // since exclusions preempt inclusions
-        }
-      }      
-    }    
-    
-    Package pkg = m.getDeclaringClass().getPackage();
-    String methodName = pkg != null ? pkg.getName() + "." + m.getName() : m.getName();
-    
-    logInclusion(result ? "Including" : "Excluding", "method", methodName + "()");
-
-    return result;
-  }
-  
-  @SuppressWarnings({"unchecked"})
-  private boolean assignable(Class sourceClass, Class targetClass) {
-    return sourceClass.isAssignableFrom(targetClass) || targetClass.isAssignableFrom(sourceClass);
-  }
-  
-  private Map<String, String> m_logged = Maps.newHashMap();
-  private void logInclusion(String including, String type, String name) {
-    if (! m_logged.containsKey(name)) {
-      log(4, including + " " + type + " " + name);
-      m_logged.put(name, name);
-    }
-  }
-  
-  private boolean hasIncludedMethods() {
-    for (XmlClass xmlClass : m_classes) {
-      if (xmlClass.getIncludedMethods().size() > 0) {
-        return true;
-      }
-    }
-    
-    return false;
-  }
-  
-  private boolean hasExcludedMethods() {
-    for (XmlClass xmlClass : m_classes) {
-      if (xmlClass.getExcludedMethods().size() > 0) {
-        return true;
-      }
-    }
-    
-    return false;
-  }
-
-  private List<String> toStringList(List<XmlInclude> methods) {
-    List<String> result = Lists.newArrayList();
-    for (XmlInclude m : methods) {
-      result.add(m.getName());
-    }
-    return result;
-  }
-
-  private List<String> createQualifiedMethodNames(XmlClass xmlClass,
-      List<String> methods) {
-    List<String> vResult = Lists.newArrayList();
-    Class cls = xmlClass.getSupportClass();
-
-    while (null != cls) {
-      for (String im : methods) {
-        String methodName = im;
-        Method[] allMethods = cls.getDeclaredMethods();
-        Pattern pattern = Pattern.compile(methodName);
-        for (Method m : allMethods) {
-          if (pattern.matcher(m.getName()).matches()) {
-            vResult.add(makeMethodName(cls.getName(), m.getName()));
-          }
-        }
-      }
-      cls = cls.getSuperclass();
-    }
-    
-    return vResult;
-  }
-  
-  private String makeMethodName(String className, String methodName) {
-    return className + "." + methodName;
-  }
-  
-  public void setXmlClasses(List<XmlClass> classes) {
-    m_classes = classes;
-    for (XmlClass c : classes) {
-      for (XmlInclude m : c.getIncludedMethods()) {
-        m_includedMethods.add(makeMethodName(c.getName(), m.getName()));
-      }
-    }
-  }
-  
-  /**
-   * @return Returns the excludedGroups.
-   */
-  public Map<String, String> getExcludedGroups() {
-    return m_excludedGroups;
-  }
-
-  /**
-   * @return Returns the includedGroups.
-   */
-  public Map<String, String> getIncludedGroups() {
-    return m_includedGroups;
-  }
-
-  /**
-   * @param excludedGroups The excludedGroups to set.
-   */
-  public void setExcludedGroups(Map<String, String> excludedGroups) {
-    m_excludedGroups = excludedGroups;
-  }
-  
-  /**
-   * @param includedGroups The includedGroups to set.
-   */
-  public void setIncludedGroups(Map<String, String> includedGroups) {
-    m_includedGroups = includedGroups;
-  }
-  
-  private static boolean isIncluded(String[] groups, Collection<String> includedGroups) {
-    if (includedGroups.size() == 0) {
-      return true;
-    }
-    else {
-      return isMemberOf(groups, includedGroups);
-    }
-  }
-  
-  private static boolean isExcluded(String[] groups, Collection<String> excludedGroups) {
-    return isMemberOf(groups, excludedGroups);
-  }
-  
-  /**
-   * 
-   * @param groups Array of groups on the method
-   * @param list Map of regexps of groups to be run
-   */
-  private static boolean isMemberOf(String[] groups, Collection<String> list) {
-    for (String group : groups) {
-      for (Object o : list) {
-        String regexpStr = o.toString();
-        boolean match = Pattern.matches(regexpStr, group);
-        if (match) {
-          return true;
-        }
-      }
-    }
-    
-    return false;
-  }
-    
-  private static void log(int level, String s) {
-    Utils.log("XmlMethodSelector", level, s);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[XmlMethodSelector] " + s);
-  }
-
-  public void setExpression(String expression) {
-    m_expression = expression;
-  }
-  
-  private boolean m_isInitialized = false;
-  private List<ITestNGMethod> m_testMethods = null;
-
-  public void setTestMethods(List<ITestNGMethod> testMethods) {
-    // Caution: this variable is initialized with an empty list first and then modified
-    // externally by the caller (TestRunner#fixMethodWithClass). Ugly.
-    m_testMethods = testMethods;
-  }
-  
-  private void init(IMethodSelectorContext context) {
-    String[] groups = m_includedGroups.keySet().toArray(new String[m_includedGroups.size()]);
-    Set<String> groupClosure = new HashSet<String>();
-    Set<ITestNGMethod> methodClosure = new HashSet<ITestNGMethod>();
-    
-    List<ITestNGMethod> includedMethods = Lists.newArrayList();
-    for (ITestNGMethod m : m_testMethods) {
-      if (includeMethod(context, m, true)) includedMethods.add(m);
-    }
-    MethodHelper.findGroupTransitiveClosure(this, includedMethods, m_testMethods, 
-        groups, groupClosure, methodClosure);
-    
-    // If we are asked to include or exclude specific groups, calculate
-    // the transitive closure of all the included groups.  If no include groups
-    // were specified, don't do anything.
-    // Any group that is part of the transitive closure but not part of
-    // m_includedGroups is being added implicitly by TestNG so that if someone
-    // includes a group z that depends on a, b and c, they don't need to 
-    // include a, b and c explicitly.
-    if (m_includedGroups.size() > 0) {
-      // Make the transitive closure our new included groups
-      for (String g : groupClosure) {
-        log(4, "Including group "
-            + (m_includedGroups.containsKey(g) ?
-                ": " : "(implicitly): ") + g);
-        m_includedGroups.put(g, g);
-      }
-    
-      // Make the transitive closure our new included methods
-      for (ITestNGMethod m : methodClosure) {
-        String methodName = 
-         m.getMethod().getDeclaringClass().getName() + "." + m.getMethodName();
-        m_includedMethods.add(methodName);
-        logInclusion("Including", "method ", methodName);
-      }
-    }
-  }
-
-  private boolean m_verbose = true;
-  public void setVerbose(boolean b) {
-    m_verbose = b;
-  }
-  
-}
diff --git a/src/org/testng/internal/annotations/AfterSuiteAnnotation.java b/src/org/testng/internal/annotations/AfterSuiteAnnotation.java
deleted file mode 100755
index 6e0be6f..0000000
--- a/src/org/testng/internal/annotations/AfterSuiteAnnotation.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public class AfterSuiteAnnotation extends BaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/AnnotationConfiguration.java b/src/org/testng/internal/annotations/AnnotationConfiguration.java
deleted file mode 100755
index c6eaef7..0000000
--- a/src/org/testng/internal/annotations/AnnotationConfiguration.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.internal.annotations.IAnnotationFinder;
-
-/**
- * This class is responsible for returning the correct IAnnotationFinder.
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- *
- * TODO: to be removed 
- */
-public class AnnotationConfiguration {
-  public static final int JVM_15_CONFIG = 1;
-  public static final int JVM_14_CONFIG = 2;
-  
-  private IAnnotationFinder m_jdk14Finder = null;
-  private IAnnotationFinder m_jdk15Finder = null;
-  
-  private static AnnotationConfiguration m_instance = new AnnotationConfiguration();
-
-//  public static AnnotationConfiguration getInstance() {
-//    return m_instance;
-//  }
-
-  private int m_annotationType= JVM_14_CONFIG;
-  
-//  public IAnnotationFinder getAnnotationFinder(IAnnotationTransformer transformer) {
-//    IAnnotationFinder result = null;
-//    
-//    if (m_annotationType == JVM_15_CONFIG) {
-//      if (m_jdk15Finder == null) {
-//        m_jdk15Finder = new JDK15AnnotationFinder(transformer);
-//      }
-//      result = m_jdk15Finder;
-//    }
-//    else {
-//      if (m_jdk14Finder == null) {
-//        m_jdk14Finder = new JDK14AnnotationFinder(transformer);
-//      }
-//      result = m_jdk14Finder;
-//    }
-//    
-//    return result;
-//  }
-  
-//  public IAnnotationFinder getJavadocAnnotationFinder() {
-//    return m_jdk14Finder;
-//  }  
-
-//  public void initialize(int annotationType) {
-//    m_annotationType = annotationType;
-//  }
-}
diff --git a/src/org/testng/internal/annotations/AnnotationHelper.java b/src/org/testng/internal/annotations/AnnotationHelper.java
deleted file mode 100755
index 1fc289a..0000000
--- a/src/org/testng/internal/annotations/AnnotationHelper.java
+++ /dev/null
@@ -1,296 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.ITestNGMethod;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IExpectedExceptionsAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.IParametersAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.collections.Maps;
-import org.testng.internal.TestNGMethod;
-import org.testng.internal.Utils;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
-/**
- * Helper methods to find @Test and @Configuration tags.  They minimize
- * the amount of casting we need to do.
- * 
- * Created on Dec 20, 2005
- * @author cbeust
- */
-public class AnnotationHelper {
-
-  public static ITestAnnotation findTest(IAnnotationFinder finder, Class cls) {
-    return (ITestAnnotation) finder.findAnnotation(cls, ITestAnnotation.class);
-  }
-  
-  public static ITestAnnotation findTest(IAnnotationFinder finder, Method m) {
-    return (ITestAnnotation) finder.findAnnotation(m, ITestAnnotation.class);
-  }
-  
-  public static IFactoryAnnotation findFactory(IAnnotationFinder finder, Method m) {
-    return (IFactoryAnnotation) finder.findAnnotation(m, IFactoryAnnotation.class);
-  }
-
-  public static ITestAnnotation findTest(IAnnotationFinder finder, Constructor ctor) {
-    return (ITestAnnotation) finder.findAnnotation(ctor, ITestAnnotation.class);
-  }
-
-  public static IConfigurationAnnotation findConfiguration(IAnnotationFinder finder, Constructor ctor) {
-    IConfigurationAnnotation result = (IConfigurationAnnotation) finder.findAnnotation(ctor, IConfigurationAnnotation.class);
-    if (result == null) {
-      IConfigurationAnnotation bs = (IConfigurationAnnotation) finder.findAnnotation(ctor, IBeforeSuite.class);
-      IConfigurationAnnotation as = (IConfigurationAnnotation) finder.findAnnotation(ctor, IAfterSuite.class);
-      IConfigurationAnnotation bt = (IConfigurationAnnotation) finder.findAnnotation(ctor, IBeforeTest.class);
-      IConfigurationAnnotation at = (IConfigurationAnnotation) finder.findAnnotation(ctor, IAfterTest.class);
-      IConfigurationAnnotation bg = (IConfigurationAnnotation) finder.findAnnotation(ctor, IBeforeGroups.class);
-      IConfigurationAnnotation ag = (IConfigurationAnnotation) finder.findAnnotation(ctor, IAfterGroups.class);
-      IConfigurationAnnotation bc = (IConfigurationAnnotation) finder.findAnnotation(ctor, IBeforeClass.class);
-      IConfigurationAnnotation ac = (IConfigurationAnnotation) finder.findAnnotation(ctor, IAfterClass.class);
-      IConfigurationAnnotation bm = (IConfigurationAnnotation) finder.findAnnotation(ctor, IBeforeMethod.class);
-      IConfigurationAnnotation am = (IConfigurationAnnotation) finder.findAnnotation(ctor, IAfterMethod.class);
-      
-      if (bs != null || as != null || bt != null || at != null || bg != null || ag != null
-          || bc != null || ac != null || bm != null || am != null) 
-      {
-        result = createConfiguration(bs, as, bt, at, bg, ag, bc, ac, bm, am);
-      }    
-    }
-    
-    return result;
-  }
-
-  public static IConfigurationAnnotation findConfiguration(IAnnotationFinder finder, Method m) {
-    IConfigurationAnnotation result = (IConfigurationAnnotation) finder.findAnnotation(m, IConfigurationAnnotation.class);
-    if (result == null) {
-      IConfigurationAnnotation bs = (IConfigurationAnnotation) finder.findAnnotation(m, IBeforeSuite.class);
-      IConfigurationAnnotation as = (IConfigurationAnnotation) finder.findAnnotation(m, IAfterSuite.class);
-      IConfigurationAnnotation bt = (IConfigurationAnnotation) finder.findAnnotation(m, IBeforeTest.class);
-      IConfigurationAnnotation at = (IConfigurationAnnotation) finder.findAnnotation(m, IAfterTest.class);
-      IConfigurationAnnotation bg = (IConfigurationAnnotation) finder.findAnnotation(m, IBeforeGroups.class);
-      IConfigurationAnnotation ag = (IConfigurationAnnotation) finder.findAnnotation(m, IAfterGroups.class);
-      IConfigurationAnnotation bc = (IConfigurationAnnotation) finder.findAnnotation(m, IBeforeClass.class);
-      IConfigurationAnnotation ac = (IConfigurationAnnotation) finder.findAnnotation(m, IAfterClass.class);
-      IConfigurationAnnotation bm = (IConfigurationAnnotation) finder.findAnnotation(m, IBeforeMethod.class);
-      IConfigurationAnnotation am = (IConfigurationAnnotation) finder.findAnnotation(m, IAfterMethod.class);
-      
-      if (bs != null || as != null || bt != null || at != null || bg != null || ag != null
-          || bc != null || ac != null || bm != null || am != null) 
-      {
-        result = createConfiguration(bs, as, bt, at, bg, ag, bc, ac, bm, am);
-      }    
-    }
-    
-    return result;
-  }
-  
-  private static IConfigurationAnnotation createConfiguration(IConfigurationAnnotation bs, IConfigurationAnnotation as, 
-      IConfigurationAnnotation bt, IConfigurationAnnotation at, IConfigurationAnnotation bg, IConfigurationAnnotation ag, 
-      IConfigurationAnnotation bc, IConfigurationAnnotation ac, IConfigurationAnnotation bm, IConfigurationAnnotation am) 
-  {
-    ConfigurationAnnotation result = new ConfigurationAnnotation();
-    
-    if (bs != null) {
-      result.setBeforeSuite(true);
-      finishInitialize(result, bs);
-    }
-    if (as != null) {
-      result.setAfterSuite(true);
-      finishInitialize(result, as);
-    }
-    if (bt != null) {
-      result.setBeforeTest(true);
-      finishInitialize(result, bt);
-    }
-    if (at != null) {
-      result.setAfterTest(true);
-      finishInitialize(result, at);
-    }
-    if (bg != null) {
-      result.setBeforeGroups(bg.getBeforeGroups());
-      finishInitialize(result, bg);
-    }
-    if (ag != null) {
-      result.setAfterGroups(ag.getAfterGroups());
-      finishInitialize(result, ag);
-    }
-    if (bc != null) {
-      result.setBeforeTestClass(true);
-      finishInitialize(result, bc);
-    }
-    if (ac != null) {
-      result.setAfterTestClass(true);
-      finishInitialize(result, ac);
-    }
-    if (bm != null) {
-      result.setBeforeTestMethod(true);
-      finishInitialize(result, bm);
-    }
-    if (am != null) {
-      result.setAfterTestMethod(true);
-      finishInitialize(result, am);
-    }
-
-    return result;
-  }
-  
-  @SuppressWarnings({"deprecation"})
-  private static void finishInitialize(ConfigurationAnnotation result, IConfigurationAnnotation bs) {
-    result.setFakeConfiguration(true);
-    result.setAlwaysRun(bs.getAlwaysRun());
-    result.setDependsOnGroups(bs.getDependsOnGroups());
-    result.setDependsOnMethods(bs.getDependsOnMethods());
-    result.setDescription(bs.getDescription());
-    result.setEnabled(bs.getEnabled());
-    result.setGroups(bs.getGroups());
-    result.setInheritGroups(bs.getInheritGroups());
-    result.setParameters(bs.getParameters());
-  }
-
-  private static Class[] ALL_ANNOTATIONS = new Class[] { 
-    ITestAnnotation.class, IConfigurationAnnotation.class, 
-    IBeforeClass.class, IAfterClass.class,
-    IBeforeMethod.class, IAfterMethod.class,
-    IDataProviderAnnotation.class, IExpectedExceptionsAnnotation.class, 
-    IFactoryAnnotation.class, IParametersAnnotation.class, 
-    IBeforeSuite.class, IAfterSuite.class,
-    IBeforeTest.class, IAfterTest.class,
-    IBeforeGroups.class, IAfterGroups.class
-  };
-  
-  public static Class[] CONFIGURATION_CLASSES = new Class[] {
-    IConfigurationAnnotation.class,
-    IBeforeSuite.class, IAfterSuite.class,   
-    IBeforeTest.class, IAfterTest.class,   
-    IBeforeGroups.class, IAfterGroups.class,   
-    IBeforeClass.class, IAfterClass.class,  
-    IBeforeMethod.class, IAfterMethod.class
-  };
-
-  public static Class[] getAllAnnotations() {
-    return ALL_ANNOTATIONS;
-  }
-
-  /**
-   * Delegation method for creating the list of <CODE>ITestMethod</CODE>s to be
-   * analysed.
-   */
-  public static ITestNGMethod[] findMethodsWithAnnotation(Class rootClass, Class annotationClass,
-        IAnnotationFinder annotationFinder, XmlTest xmlTest)
-  {
-    // Keep a map of the methods we saw so that we ignore a method in a superclass if it's
-    // already been seen in a child class
-    Map<String, ITestNGMethod> vResult = Maps.newHashMap();
-    
-    try {
-      vResult = Maps.newHashMap();
-//    Class[] classes = rootClass.getTestClasses();
-      Class cls = rootClass;
-      
-      //
-      // If the annotation is on the class or superclass, it applies to all public methods
-      // except methods marked with @Configuration
-      //
-
-      //
-      // Otherwise walk through all the methods and keep those
-      // that have the annotation
-      //
-//    for (Class cls : classes) {
-        while (null != cls) {
-          boolean hasClassAnnotation = isAnnotationPresent(annotationFinder, cls, annotationClass);
-          Method[] methods = cls.getDeclaredMethods();
-          for (int i = 0; i < methods.length; i++) {
-            Method m = methods[i];
-            boolean hasMethodAnnotation = isAnnotationPresent(annotationFinder, m, annotationClass);
-            boolean hasTestNGAnnotation =
-              isAnnotationPresent(annotationFinder, m, IFactoryAnnotation.class) ||
-              isAnnotationPresent(annotationFinder, m, ITestAnnotation.class) ||
-              isAnnotationPresent(annotationFinder, m, CONFIGURATION_CLASSES);
-            boolean isPublic = Modifier.isPublic(m.getModifiers());
-            if ((isPublic && hasClassAnnotation && (! hasTestNGAnnotation)) || hasMethodAnnotation) {     
-              
-              // Small hack to allow users to specify @Configuration classes even though
-              // a class-level @Test annotation is present.  In this case, don't count
-              // that method as a @Test
-              if (isAnnotationPresent(annotationFinder, m, IConfigurationAnnotation.class) &&
-                  isAnnotationPresent(annotationFinder, cls, ITestAnnotation.class)) 
-              {
-                Utils.log("", 3, "Method " + m + " has a local @Configuration and a class-level @Test." +
-                    "This method will only be kept as a @Configuration.");
-                    
-                continue;
-              }
-              
-              // Skip the method if it has a return type
-              if (m.getReturnType() != void.class) {
-                Utils.log("", 3, "Method " + m + " has a @Test annotation"
-                    + " but also a return value:  ignoring it.");
-                continue;
-              }
-              
-              String key = createMethodKey(m);
-              if (null == vResult.get(key)) {
-                ITestNGMethod tm = new TestNGMethod(/* m.getDeclaringClass(), */ m,
-                    annotationFinder, xmlTest);
-                vResult.put(key,tm);
-              }
-            }
-          } // for
-          // Now explore the superclass
-          cls = cls.getSuperclass();
-        } // while
-
-    }
-    catch (SecurityException e) {
-      e.printStackTrace();
-    }
-    ITestNGMethod[] result = vResult.values().toArray(new ITestNGMethod[vResult.size()]);
-      
-  //    for (Method m : result) {
-  //      ppp("   METHOD FOUND: " + m);
-  //    }
-      
-      return result;
-    }
-
-  private static boolean isAnnotationPresent(IAnnotationFinder annotationFinder, 
-      Method m, Class[] annotationClasses) 
-  {
-    for (Class a : annotationClasses) {
-      if (annotationFinder.findAnnotation(m, a) != null) {
-        return true;
-      }
-    }
-    
-    return false;
-  }
-
-  private static boolean isAnnotationPresent(IAnnotationFinder annotationFinder, Method m, Class annotationClass) {
-    return annotationFinder.findAnnotation(m, annotationClass) != null;
-  }
-
-  private static boolean isAnnotationPresent(IAnnotationFinder annotationFinder, Class cls, Class annotationClass) {
-    return annotationFinder.findAnnotation(cls, annotationClass) != null;
-  }
-
-  /**
-   * @return A hashcode representing the name of this method and its parameters,
-   * but without its class
-   */
-  private static String createMethodKey(Method m) {
-    StringBuffer result = new StringBuffer(m.getName());
-    for (Class paramClass : m.getParameterTypes()) {
-      result.append(' ').append(paramClass.toString());
-    }
-    
-    return result.toString();
-  }
-  
-}
diff --git a/src/org/testng/internal/annotations/BaseAnnotation.java b/src/org/testng/internal/annotations/BaseAnnotation.java
deleted file mode 100755
index 4f5bf49..0000000
--- a/src/org/testng/internal/annotations/BaseAnnotation.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.testng.internal.annotations;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class BaseAnnotation {
-  private Class m_testClass;
-  private Method m_method;
-  private Constructor m_constructor;
-
-  public Constructor getConstructor() {
-    return m_constructor;
-  }
-  public void setConstructor(Constructor constructor) {
-    m_constructor = constructor;
-  }
-  public Method getMethod() {
-    return m_method;
-  }
-  public void setMethod(Method method) {
-    m_method = method;
-  }
-  public Class getTestClass() {
-    return m_testClass;
-  }
-  public void setTestClass(Class testClass) {
-    m_testClass = testClass;
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/BaseBeforeAfter.java b/src/org/testng/internal/annotations/BaseBeforeAfter.java
deleted file mode 100755
index 2ea6ffa..0000000
--- a/src/org/testng/internal/annotations/BaseBeforeAfter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.testng.internal.annotations;
-
-public class BaseBeforeAfter 
-  extends TestOrConfiguration 
-  implements IBaseBeforeAfter 
-{
-  private String[] m_parameters = {};
-  private boolean m_alwaysRun = false;
-  private boolean m_inheritGroups = true;
-  private String[] m_beforeGroups = {};
-  private String[] m_afterGroups = {};
-  private String m_description;
-
-  /**
-   * @return the description
-   */
-  public String getDescription() {
-    return m_description;
-  }
-
-  /**
-   * @param description the description to set
-   */
-  public void setDescription(String description) {
-    m_description = description;
-  }
-
-  public void setAlwaysRun(boolean alwaysRun) {
-    m_alwaysRun = alwaysRun;
-  }
-
-  public void setInheritGroups(boolean inheritGroups) {
-    m_inheritGroups = inheritGroups;
-  }
-
-  public void setParameters(String[] parameters) {
-    m_parameters = parameters;
-  }
-
-  public String[] getParameters() {
-    return m_parameters;
-  }
-
-  public boolean getAlwaysRun() {
-    return m_alwaysRun;
-  }
-
-  public boolean getInheritGroups() {
-    return m_inheritGroups;
-  }
-
-  public String[] getAfterGroups() {
-    return m_afterGroups;
-  }
-
-  public void setAfterGroups(String[] afterGroups) {
-    m_afterGroups = afterGroups;
-  }
-
-  public String[] getBeforeGroups() {
-    return m_beforeGroups;
-  }
-
-  public void setBeforeGroups(String[] beforeGroups) {
-    m_beforeGroups = beforeGroups;
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/BeforeSuiteAnnotation.java b/src/org/testng/internal/annotations/BeforeSuiteAnnotation.java
deleted file mode 100755
index 5854d8d..0000000
--- a/src/org/testng/internal/annotations/BeforeSuiteAnnotation.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public class BeforeSuiteAnnotation extends BaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/ConfigurationAnnotation.java b/src/org/testng/internal/annotations/ConfigurationAnnotation.java
deleted file mode 100755
index b4c4d76..0000000
--- a/src/org/testng/internal/annotations/ConfigurationAnnotation.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IConfigurationAnnotation;
-
-
-/**
- * An implementation of IConfiguration
- * 
- * Created on Dec 16, 2005
- * @author cbeust
- */
-public class ConfigurationAnnotation extends TestOrConfiguration implements IConfigurationAnnotation {
-  private boolean m_beforeTestClass = false;
-  private boolean m_afterTestClass = false;
-  private boolean m_beforeTestMethod = false;
-  private boolean m_afterTestMethod = false;
-  private boolean m_beforeTest = false;
-  private boolean m_afterTest = false;
-  private boolean m_beforeSuite = false;
-  private boolean m_afterSuite = false;
-  private String[] m_parameters = {};
-  private boolean m_alwaysRun = false;
-  private boolean m_inheritGroups = true;
-  private String[] m_beforeGroups = {};
-  private String[] m_afterGroups = {};
-  private boolean m_isFakeConfiguration;
-  private boolean m_firstTimeOnly = false;
-  private boolean m_lastTimeOnly = false;
-
-  public ConfigurationAnnotation() {
-    
-  }
-  
-  public void setAfterSuite(boolean afterSuite) {
-    m_afterSuite = afterSuite;
-  }
-
-  public void setAfterTest(boolean afterTest) {
-    m_afterTest = afterTest;
-  }
-
-  public void setAfterTestClass(boolean afterTestClass) {
-    m_afterTestClass = afterTestClass;
-  }
-
-  public void setAfterTestMethod(boolean afterTestMethod) {
-    m_afterTestMethod = afterTestMethod;
-  }
-
-  public void setAlwaysRun(boolean alwaysRun) {
-    m_alwaysRun = alwaysRun;
-  }
-
-  public void setBeforeSuite(boolean beforeSuite) {
-    m_beforeSuite = beforeSuite;
-  }
-
-  public void setBeforeTest(boolean beforeTest) {
-    m_beforeTest = beforeTest;
-  }
-
-  public void setBeforeTestClass(boolean beforeTestClass) {
-    m_beforeTestClass = beforeTestClass;
-  }
-
-  public void setBeforeTestMethod(boolean beforeTestMethod) {
-    m_beforeTestMethod = beforeTestMethod;
-  }
-
-  public void setInheritGroups(boolean inheritGroups) {
-    m_inheritGroups = inheritGroups;
-  }
-
-  @Override
-  public void setParameters(String[] parameters) {
-    m_parameters = parameters;
-  }
-
-  public boolean getBeforeTestClass() {
-    return m_beforeTestClass;
-  }
-
-  public boolean getAfterTestClass() {
-    return m_afterTestClass;
-  }
-
-  public boolean getBeforeTestMethod() {
-    return m_beforeTestMethod;
-  }
-
-  public boolean getAfterTestMethod() {
-    return m_afterTestMethod;
-  }
-
-  public boolean getBeforeSuite() {
-    return m_beforeSuite;
-  }
-
-  public boolean getAfterSuite() {
-    return m_afterSuite;
-  }
-
-  public boolean getBeforeTest() {
-    return m_beforeTest;
-  }
-
-  public boolean getAfterTest() {
-    return m_afterTest;
-  }
-
-  @Override
-  public String[] getParameters() {
-    return m_parameters;
-  }
-
-  public boolean getAlwaysRun() {
-    return m_alwaysRun;
-  }
-
-  public boolean getInheritGroups() {
-    return m_inheritGroups;
-  }
-
-  public String[] getAfterGroups() {
-    return m_afterGroups;
-  }
-
-  public void setAfterGroups(String[] afterGroups) {
-    m_afterGroups = afterGroups;
-  }
-
-  public String[] getBeforeGroups() {
-    return m_beforeGroups;
-  }
-
-  public void setBeforeGroups(String[] beforeGroups) {
-    m_beforeGroups = beforeGroups;
-  }
-
-  public void setFakeConfiguration(boolean b) {
-    m_isFakeConfiguration = b;
-  }
-
-  public boolean isFakeConfiguration() {
-    return m_isFakeConfiguration;
-  }
-
-  public void setFirstTimeOnly(boolean f) {
-    m_firstTimeOnly = f;
-  }
-
-  public boolean isFirstTimeOnly() {
-    return m_firstTimeOnly;
-  }
-
-  public void setLastTimeOnly(boolean f) {
-    m_lastTimeOnly = f;
-  }
-
-  public boolean isLastTimeOnly() {
-    return m_lastTimeOnly;
-  }
-}
diff --git a/src/org/testng/internal/annotations/Converter.java b/src/org/testng/internal/annotations/Converter.java
deleted file mode 100755
index 18a95e4..0000000
--- a/src/org/testng/internal/annotations/Converter.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.collections.Lists;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.Utils;
-
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * Convert a string values into primitive types.
- * 
- * Created on Dec 20, 2005
- * @author cbeust
- */
-public class Converter {
-
-  public static boolean  getBoolean(String tagValue, boolean def) {
-    boolean result = def;
-    if (tagValue != null) result = Boolean.valueOf(tagValue).booleanValue();
-    return result;
-  }
-
-  public static int getInt(String tagValue, int def) {
-    int result = def;
-    if (tagValue != null) result = new Integer(tagValue).intValue();
-    return result;
-  }
-
-  public static String getString(String tagValue, String def) {
-    String result = def;
-    if (tagValue != null) result = tagValue;
-    return result;
-  }
-
-  public static long getLong(String tagValue, long def) {
-    long result = def;
-    if (tagValue != null) result = new Long(tagValue).longValue();
-    return result;
-  }
-
-  public static String[] getStringArray(String tagValue, String[] def) {
-    String[] result = def;
-    if (tagValue != null) {
-      result = Utils.stringToArray(tagValue);
-    }
-
-    return result;
-  }
-
-  public static Class[] getClassArray(String tagValue, Class[] def) {
-    Class[] result = def;
-    List vResult = Lists.newArrayList();
-    if (tagValue != null) {
-      StringTokenizer st = new StringTokenizer(tagValue, " ,");
-      while (st.hasMoreElements()) {
-        String className = (String) st.nextElement();
-        try {
-          Class cls = Class.forName(className);
-          vResult.add(cls);
-        }
-        catch (ClassNotFoundException e) {
-          e.printStackTrace();
-        }
-      }
-      result = (Class[]) vResult.toArray(new Class[vResult.size()]);
-    }
-
-    return result;
-  }
-
-  public static Class getClass(String namedParameter) {
-    Class result = null;
-    if (namedParameter != null) {
-      result = ClassHelper.forName(namedParameter);
-    }
-    
-    return result;
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/DataProviderAnnotation.java b/src/org/testng/internal/annotations/DataProviderAnnotation.java
deleted file mode 100755
index 52ff88a..0000000
--- a/src/org/testng/internal/annotations/DataProviderAnnotation.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IDataProviderAnnotation;
-
-/**
- * An implementation of IDataProvider.
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class DataProviderAnnotation 
-  extends BaseAnnotation
-  implements IDataProviderAnnotation 
-{
-  private String m_name;
-  private boolean m_parallel;
-
-  public boolean isParallel() {
-    return m_parallel;
-  }
-
-  public void setParallel(boolean parallel) {
-    m_parallel = parallel;
-  }
-
-  public String getName() {
-    return m_name;
-  }
-  
-  public void setName(String name) {
-    m_name = name;
-  }
-}
diff --git a/src/org/testng/internal/annotations/DefaultAnnotationTransformer.java b/src/org/testng/internal/annotations/DefaultAnnotationTransformer.java
deleted file mode 100755
index 1c9cbd2..0000000
--- a/src/org/testng/internal/annotations/DefaultAnnotationTransformer.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.annotations.ITestAnnotation;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class DefaultAnnotationTransformer 
-  implements IAnnotationTransformer 
-{
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod) 
-  {
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/ExpectedExceptionsAnnotation.java b/src/org/testng/internal/annotations/ExpectedExceptionsAnnotation.java
deleted file mode 100755
index bff075d..0000000
--- a/src/org/testng/internal/annotations/ExpectedExceptionsAnnotation.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IExpectedExceptionsAnnotation;
-
-/**
- * An implementation of IExpectedExceptions
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class ExpectedExceptionsAnnotation 
-  extends BaseAnnotation
-  implements IExpectedExceptionsAnnotation 
-{
-  private Class[] m_value = {};
-  
-  public Class[] getValue() {
-    return m_value;
-  }
-
-  public void setValue(Class[] value) {
-    m_value = value;
-  }
-}
diff --git a/src/org/testng/internal/annotations/FactoryAnnotation.java b/src/org/testng/internal/annotations/FactoryAnnotation.java
deleted file mode 100755
index c7ac360..0000000
--- a/src/org/testng/internal/annotations/FactoryAnnotation.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IFactoryAnnotation;
-
-/**
- * An implementation of IFactory
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class FactoryAnnotation 
-  extends BaseAnnotation
-  implements IFactoryAnnotation 
-{
-  private String[] m_parameters = {};
-  private String m_dataProvider = null;
-  
-  public String getDataProvider() {
-    return m_dataProvider;
-  }
-
-  public void setDataProvider(String dataProvider) {
-    m_dataProvider = dataProvider;
-  }
-
-  public String[] getParameters() {
-    return m_parameters;
-  }
-  
-  public void setParameters(String[] parameters) {
-    m_parameters = parameters;
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/IAfterClass.java b/src/org/testng/internal/annotations/IAfterClass.java
deleted file mode 100755
index b9f3b17..0000000
--- a/src/org/testng/internal/annotations/IAfterClass.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IAfterClass extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IAfterGroups.java b/src/org/testng/internal/annotations/IAfterGroups.java
deleted file mode 100755
index ca21c4c..0000000
--- a/src/org/testng/internal/annotations/IAfterGroups.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IAfterGroups extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IAfterMethod.java b/src/org/testng/internal/annotations/IAfterMethod.java
deleted file mode 100755
index eb4b122..0000000
--- a/src/org/testng/internal/annotations/IAfterMethod.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IAfterMethod extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IAfterSuite.java b/src/org/testng/internal/annotations/IAfterSuite.java
deleted file mode 100755
index de53c7b..0000000
--- a/src/org/testng/internal/annotations/IAfterSuite.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IAfterSuite extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IAfterTest.java b/src/org/testng/internal/annotations/IAfterTest.java
deleted file mode 100755
index 2d7f01b..0000000
--- a/src/org/testng/internal/annotations/IAfterTest.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IAfterTest extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IAfterTests.java b/src/org/testng/internal/annotations/IAfterTests.java
deleted file mode 100755
index 39906ba..0000000
--- a/src/org/testng/internal/annotations/IAfterTests.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IAfterTests extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IAnnotationFinder.java b/src/org/testng/internal/annotations/IAnnotationFinder.java
deleted file mode 100755
index 0cc77c9..0000000
--- a/src/org/testng/internal/annotations/IAnnotationFinder.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IAnnotation;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-
-/**
- * This interface defines how annotations are found on classes, methods
- * and constructors.  It will be implemented by both JDK 1.4 and JDK 5 
- * annotation finders.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public interface IAnnotationFinder {
-
-  /**
-   * @param cls
-   * @param annotationName
-   * @return The annotation on the class or null if none found.
-   */
-  public IAnnotation findAnnotation(Class cls, Class annotationClass);
-
-  /**
-   * @param m
-   * @param annotationName
-   * @return The annotation on the method.
-   * If not found, return the annotation on the declaring class.
-   * If not found, return null.
-   */
-  public IAnnotation findAnnotation(Method m, Class annotationClass);
-  
-  /**
-   * @param m
-   * @param annotationName
-   * @return The annotation on the method.
-   * If not found, return the annotation on the declaring class.
-   * If not found, return null.
-   */
-  public IAnnotation findAnnotation(Constructor m, Class annotationClass);
-  
-  // No op for JDK15
-  public void addSourceDirs(String[] dirs);
-
-  /**
-   * @return true if the ith parameter of the given method has the annotation @TestInstance.
-   */
-  public boolean hasTestInstance(Method method, int i);
-  
-  /**
-   * @return the @Optional values of this method's parameters (<code>null</code> 
-   * if the parameter isn't optional)
-   */
-  public String[] findOptionalValues(Method method);
-  
-  /**
-   * @return the @Optional values of this method's parameters (<code>null</code>
-   * if the parameter isn't optional)
-   */
-  public String[] findOptionalValues(Constructor ctor);
-}
diff --git a/src/org/testng/internal/annotations/IAnnotationTransformer.java b/src/org/testng/internal/annotations/IAnnotationTransformer.java
deleted file mode 100755
index 141a2dc..0000000
--- a/src/org/testng/internal/annotations/IAnnotationTransformer.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.testng.internal.annotations;
-
-/**
- * For backward compatibility.
- */
-public interface IAnnotationTransformer extends org.testng.IAnnotationTransformer {
-
-}
diff --git a/src/org/testng/internal/annotations/IBaseBeforeAfter.java b/src/org/testng/internal/annotations/IBaseBeforeAfter.java
deleted file mode 100755
index 3283001..0000000
--- a/src/org/testng/internal/annotations/IBaseBeforeAfter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.testng.internal.annotations;
-
-/**
- * Base interface for IBeforeSuite, IAfterSuite, etc...
- * 
- * @author cbeust
- * @date Jun 22, 2006
- */
-public interface IBaseBeforeAfter {
-  /**
-   * Whether methods on this class/method are enabled.
-   */
-  public boolean getEnabled();  
-  
-  /**
-   * The list of groups this class/method belongs to. 
-   */
-  public String[] getGroups();
-
-  /**
-   * The list of groups this method depends on.  Every method
-   * member of one of these groups is guaranteed to have been
-   * invoked before this method.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   */
-  public String[] getDependsOnGroups();
-  
-  /**
-   * The list of methods this method depends on.  There is no guarantee
-   * on the order on which the methods depended upon will be run, but you
-   * are guaranteed that all these methods will be run before the test method
-   * that contains this annotation is run.  Furthermore, if any of these
-   * methods was not a SUCCESS, this test method will not be
-   * run and will be flagged as a SKIP.  
-   * 
-   *  If some of these methods have been overloaded, all the overloaded
-   *  versions will be run.
-   */
-  public String[] getDependsOnMethods();
-
-  /**
-   *  For before methods (beforeSuite, beforeTest, beforeTestClass and
-   *  beforeTestMethod, but not beforeGroups):
-   *  If set to true, this configuration method will be run
-   *  regardless of what groups it belongs to. 
-   *  <br>
-   * For after methods (afterSuite, afterClass, ...): 
-   *  If set to true, this configuration method will be run
-   *  even if one or more methods invoked previously failed or
-   *  was skipped.
-   */
-  public boolean getAlwaysRun();
-  
-  /**
-   * If true, this @Configuration method will belong to groups specified in the
-   * @Test annotation on the class (if any).
-   */
-  public boolean getInheritGroups();
-
-  /**
-   * The description for this method.  The string used will appear in the
-   * HTML report and also on standard output if verbose >= 2.
-   */
-  public String getDescription();
-
-}
diff --git a/src/org/testng/internal/annotations/IBeforeClass.java b/src/org/testng/internal/annotations/IBeforeClass.java
deleted file mode 100755
index c4e477f..0000000
--- a/src/org/testng/internal/annotations/IBeforeClass.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IBeforeClass extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IBeforeGroups.java b/src/org/testng/internal/annotations/IBeforeGroups.java
deleted file mode 100755
index 0080d61..0000000
--- a/src/org/testng/internal/annotations/IBeforeGroups.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IBeforeGroups extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IBeforeMethod.java b/src/org/testng/internal/annotations/IBeforeMethod.java
deleted file mode 100755
index 00b9f9f..0000000
--- a/src/org/testng/internal/annotations/IBeforeMethod.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IBeforeMethod extends IBaseBeforeAfter {
-}
diff --git a/src/org/testng/internal/annotations/IBeforeSuite.java b/src/org/testng/internal/annotations/IBeforeSuite.java
deleted file mode 100755
index b5d2fa9..0000000
--- a/src/org/testng/internal/annotations/IBeforeSuite.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IBeforeSuite extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/IBeforeTest.java b/src/org/testng/internal/annotations/IBeforeTest.java
deleted file mode 100755
index de6417a..0000000
--- a/src/org/testng/internal/annotations/IBeforeTest.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.testng.internal.annotations;
-
-public interface IBeforeTest extends IBaseBeforeAfter {
-
-}
diff --git a/src/org/testng/internal/annotations/ITest.java b/src/org/testng/internal/annotations/ITest.java
deleted file mode 100755
index 06f5c75..0000000
--- a/src/org/testng/internal/annotations/ITest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.ITestAnnotation;
-
-public interface ITest extends ITestAnnotation {
-
-}
diff --git a/src/org/testng/internal/annotations/JDK15AnnotationFinder.java b/src/org/testng/internal/annotations/JDK15AnnotationFinder.java
deleted file mode 100755
index cdd46ba..0000000
--- a/src/org/testng/internal/annotations/JDK15AnnotationFinder.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package org.testng.internal.annotations;
-
-import com.google.inject.Inject;
-import com.google.inject.internal.Nullable;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.IAnnotationTransformer2;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Factory;
-import org.testng.annotations.IAnnotation;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IExpectedExceptionsAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.IObjectFactoryAnnotation;
-import org.testng.annotations.IParametersAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.annotations.ObjectFactory;
-import org.testng.annotations.Optional;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-import org.testng.annotations.TestInstance;
-import org.testng.collections.Maps;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Map;
-
-/**
- * This class implements IAnnotationFinder with JDK5 annotations
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class JDK15AnnotationFinder implements IAnnotationFinder {
-  private JDK15TagFactory m_tagFactory = new JDK15TagFactory();
-  private Map<Class<?>, Class<?>> m_annotationMap = Maps.newHashMap();
-  @Inject
-  private IAnnotationTransformer m_transformer = null;
-  
-  @SuppressWarnings({"deprecation"})
-  public JDK15AnnotationFinder() {
-    m_annotationMap.put(IConfigurationAnnotation.class, Configuration.class);
-    m_annotationMap.put(IDataProviderAnnotation.class, DataProvider.class);
-    m_annotationMap.put(IExpectedExceptionsAnnotation.class, ExpectedExceptions.class);
-    m_annotationMap.put(IFactoryAnnotation.class, Factory.class);
-    m_annotationMap.put(IObjectFactoryAnnotation.class, ObjectFactory.class);
-    m_annotationMap.put(IParametersAnnotation.class, Parameters.class);
-    m_annotationMap.put(ITestAnnotation.class, Test.class);
-    m_annotationMap.put(IBeforeSuite.class, BeforeSuite.class);
-    m_annotationMap.put(IAfterSuite.class, AfterSuite.class);
-    m_annotationMap.put(IBeforeTest.class, BeforeTest.class);
-    m_annotationMap.put(IAfterTest.class, AfterTest.class);
-    m_annotationMap.put(IBeforeClass.class, BeforeClass.class);
-    m_annotationMap.put(IAfterClass.class, AfterClass.class);
-    m_annotationMap.put(IBeforeGroups.class, BeforeGroups.class);
-    m_annotationMap.put(IAfterGroups.class, AfterGroups.class);
-    m_annotationMap.put(IBeforeMethod.class, BeforeMethod.class);
-    m_annotationMap.put(IAfterMethod.class, AfterMethod.class);
-  }
-
-  private Annotation findAnnotationInSuperClasses(Class cls, Class a) {
-    while (cls != null) {
-      Annotation result = cls.getAnnotation(a);
-      if (result != null) return result;
-      else cls = cls.getSuperclass();
-    }
-    
-    return null;
-  }
-
-  public IAnnotation findAnnotation(Method m, Class annotationClass) {
-    Class a = m_annotationMap.get(annotationClass);
-    assert a != null : "Annotation class not found:" + annotationClass;
-    IAnnotation result =
-      findAnnotation(m.getDeclaringClass(), m.getAnnotation(a), annotationClass,
-          null, null, m);
-    
-    return result;
-  }
-  
-  private void transform(IAnnotation a, Class testClass,
-      Constructor testConstructor, Method testMethod)
-  {
-    //
-    // Transform @Test
-    //
-    if (a instanceof ITestAnnotation) {
-      m_transformer.transform((ITestAnnotation) a, testClass, testConstructor, testMethod);
-    }
-    
-    else if (m_transformer instanceof IAnnotationTransformer2) {
-      IAnnotationTransformer2 transformer2 = (IAnnotationTransformer2) m_transformer;
-
-      //
-      // Transform a configuration annotation
-      //
-      if (a instanceof IConfigurationAnnotation) {
-        IConfigurationAnnotation configuration = (IConfigurationAnnotation) a;
-        transformer2.transform(configuration,testClass, testConstructor, testMethod);
-      }
-      
-      //
-      // Transform @DataProvider
-      //
-      else if (a instanceof IDataProviderAnnotation) {
-        transformer2.transform((IDataProviderAnnotation) a, testMethod);
-      }
-
-      //
-      // Transform @Factory
-      //
-      else if (a instanceof IFactoryAnnotation) {
-        transformer2.transform((IFactoryAnnotation) a, testMethod);
-      }
-    }
-  }
-  
-  public IAnnotation findAnnotation(Class cls, Class annotationClass) {
-    Class a = m_annotationMap.get(annotationClass);
-    IAnnotation result =
-      findAnnotation(cls, findAnnotationInSuperClasses(cls, a), annotationClass,
-          cls, null, null);
-
-    return result;
-  }
-  
-  public IAnnotation findAnnotation(Constructor m, Class annotationClass) {
-    Class a = m_annotationMap.get(annotationClass);
-    IAnnotation result =
-      findAnnotation(m.getDeclaringClass(), m.getAnnotation(a), annotationClass,
-          null, m, null);
-    
-    return result;
-  }
-
-  private Map<Pair, IAnnotation> m_annotations = Maps.newHashMap();
-
-  private IAnnotation findAnnotation(Class cls, Annotation a, 
-      Class annotationClass,
-      Class testClass, Constructor testConstructor, Method testMethod) 
-  {
-
-    IAnnotation result = null;
-    Pair<Annotation, Class> p1;
-    Pair<Annotation, Constructor> p2;
-    Pair<Annotation, Class> p3;
-    
-    Pair p;
-    if (testClass != null) {
-      p = new Pair(a, testClass);
-    }
-    else if (testConstructor != null) {
-      p = new Pair(a, testConstructor);
-    }
-    else {
-      p = new Pair(a, testMethod);
-    }
-    result = m_annotations.get(p);
-    if (result == null) {
-      result = m_tagFactory.createTag(cls, a, annotationClass, m_transformer);
-      m_annotations.put(p, result);
-      transform(result, testClass, testConstructor, testMethod);
-    }
-
-    return result;
-  }
-  
-  class Pair<A, B> {
-    public A a;
-    public B b;
-
-    public Pair(A a, B b) {
-      this.a = a;
-      this.b = b;
-    }
-
-    @Override
-    public int hashCode() {
-      final int prime = 31;
-      int result = 1;
-      result = prime * result + ((a == null) ? 0 : a.hashCode());
-      result = prime * result + ((b == null) ? 0 : b.hashCode());
-      return result;
-    }
-    @Override
-    public boolean equals(Object obj) {
-      if (this == obj)
-        return true;
-      if (obj == null)
-        return false;
-      if (getClass() != obj.getClass())
-        return false;
-      final Pair other = (Pair) obj;
-      if (a == null) {
-        if (other.a != null)
-          return false;
-      }
-      else if (!a.equals(other.a))
-        return false;
-      if (b == null) {
-        if (other.b != null)
-          return false;
-      }
-      else if (!b.equals(other.b))
-        return false;
-      return true;
-    }
-    
-    
-  }
-
-  private void ppp(String string) {
-    System.out.println("[JDK15AnnotationFinder] " + string);
-  }
-  
-  public void addSourceDirs(String[] dirs) {
-    // no-op for JDK 15
-  }
-
-  public boolean hasTestInstance(Method method, int i) {
-    boolean result = false;
-    Annotation[][] annotations = method.getParameterAnnotations();
-    if (annotations.length > 0 && annotations[i].length > 0) {
-      Annotation a = annotations[i][0];
-      result = a instanceof TestInstance;
-    }
-    
-    return result;
-  }
-  
-  public String[] findOptionalValues(Method method) {
-    return optionalValues(method.getParameterAnnotations());
-  }
-  
-  public String[] findOptionalValues(Constructor method) {
-    return optionalValues(method.getParameterAnnotations());
-  }
-
-  private String[] optionalValues(Annotation[][] annotations) {
-    String[] result = new String[annotations.length];
-    for (int i = 0; i < annotations.length; i++) {
-      for (Annotation a : annotations[i]) {
-        if (a instanceof Optional) {
-          result[i] = ((Optional)a).value();
-          break;
-        }
-      }
-    }
-    return result;
-  }
-}
diff --git a/src/org/testng/internal/annotations/JDK15TagFactory.java b/src/org/testng/internal/annotations/JDK15TagFactory.java
deleted file mode 100755
index f971afb..0000000
--- a/src/org/testng/internal/annotations/JDK15TagFactory.java
+++ /dev/null
@@ -1,492 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.TestNGException;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Factory;
-import org.testng.annotations.IAnnotation;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IExpectedExceptionsAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.IObjectFactoryAnnotation;
-import org.testng.annotations.IParametersAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-import org.testng.collections.Maps;
-import org.testng.internal.Utils;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.Map;
-
-/**
- * This class creates implementations of IAnnotations based on the JDK5
- * annotation that was found on the Java element.
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class JDK15TagFactory {
-
-  public IAnnotation createTag(Class<?> cls, Annotation a, 
-      Class<?> annotationClass,
-      IAnnotationTransformer transformer) 
-  {
-    IAnnotation result = null;
-
-    if (a != null) {
-      if (annotationClass == IConfigurationAnnotation.class) {
-        result = createConfigurationTag(cls, a);
-      }
-      else if (annotationClass == IDataProviderAnnotation.class) {      
-        result = createDataProviderTag(a);
-      }
-      else if (annotationClass == IExpectedExceptionsAnnotation.class) {      
-        result = createExpectedExceptionsTag(a);
-      }
-      else if (annotationClass == IFactoryAnnotation.class) {
-        result = createFactoryTag(a);
-      }
-      else if (annotationClass == IParametersAnnotation.class) {      
-        result = createParametersTag(a);
-      }
-      else if (annotationClass == IObjectFactoryAnnotation.class) {      
-        result = createObjectFactoryTag(a);
-      }
-      else if (annotationClass == ITestAnnotation.class) {      
-        result = createTestTag(cls, a, transformer);
-      }
-      else if (annotationClass == IBeforeSuite.class || annotationClass == IAfterSuite.class || 
-          annotationClass == IBeforeTest.class || annotationClass == IAfterTest.class ||
-          annotationClass == IBeforeGroups.class || annotationClass == IAfterGroups.class ||
-          annotationClass == IBeforeClass.class || annotationClass == IAfterClass.class || 
-          annotationClass == IBeforeMethod.class || annotationClass == IAfterMethod.class) 
-      {
-        result = maybeCreateNewConfigurationTag(cls, a, annotationClass);
-      }
-
-      else {
-        throw new TestNGException("Unknown annotation requested:" + annotationClass);
-      }
-    }
-
-    return result;
-  }
-
-  private IAnnotation maybeCreateNewConfigurationTag(Class<?> cls, Annotation a,
-      Class<?> annotationClass) 
-  {
-    IAnnotation result = null;
-    
-    if (annotationClass == IBeforeSuite.class) {
-      BeforeSuite bs = (BeforeSuite) a;
-      result = createConfigurationTag(cls, a, 
-          true, false,
-          false, false, 
-          new String[0], new String[0], 
-          false, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IAfterSuite.class) {
-      AfterSuite bs = (AfterSuite) a;
-      result = createConfigurationTag(cls, a, 
-          false, true,
-          false, false, 
-          new String[0], new String[0], 
-          false, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IBeforeTest.class) {
-      BeforeTest bs = (BeforeTest) a;
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          true, false, 
-          new String[0], new String[0], 
-          false, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IAfterTest.class) {
-      AfterTest bs = (AfterTest) a;
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, true, 
-          new String[0], new String[0], 
-          false, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IBeforeGroups.class) {
-      BeforeGroups bs = (BeforeGroups) a;
-      final String[] groups= bs.value().length > 0 ? bs.value() : bs.groups();
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, false, 
-          groups, new String[0], 
-          false, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IAfterGroups.class) {
-      AfterGroups bs = (AfterGroups) a;
-      final String[] groups= bs.value().length > 0 ? bs.value() : bs.groups();
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, false, 
-          new String[0], groups,
-          false, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IBeforeClass.class) {
-      BeforeClass bs = (BeforeClass) a;
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, false, 
-          new String[0], new String[0], 
-          true, false, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IAfterClass.class) {
-      AfterClass bs = (AfterClass) a;
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, false, 
-          new String[0], new String[0], 
-          false, true, 
-          false, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, false);
-    }
-    else if (annotationClass == IBeforeMethod.class) {
-      BeforeMethod bs = (BeforeMethod) a;
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, false, 
-          new String[0], new String[0], 
-          false, false, 
-          true, false,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          bs.firstTimeOnly(), false);
-    }
-    else if (annotationClass == IAfterMethod.class) {
-      AfterMethod bs = (AfterMethod) a;
-      result = createConfigurationTag(cls, a, 
-          false, false,
-          false, false, 
-          new String[0], new String[0], 
-          false, false, 
-          false, true,
-          bs.alwaysRun(),
-          bs.dependsOnGroups(), bs.dependsOnMethods(),
-          bs.description(), bs.enabled(), bs.groups(),
-          bs.inheritGroups(), null,
-          false, bs.lastTimeOnly());
-    }
-    
-    return result;
-  }
-
-  @SuppressWarnings({"deprecation"})
-  private IAnnotation createConfigurationTag(Class<?> cls, Annotation a) {
-    ConfigurationAnnotation result = new ConfigurationAnnotation();
-    Configuration c = (Configuration) a;
-    result.setBeforeTestClass(c.beforeTestClass());
-    result.setAfterTestClass(c.afterTestClass());
-    result.setBeforeTestMethod(c.beforeTestMethod());
-    result.setAfterTestMethod(c.afterTestMethod());
-    result.setBeforeTest(c.beforeTest());
-    result.setAfterTest(c.afterTest());
-    result.setBeforeSuite(c.beforeSuite());
-    result.setAfterSuite(c.afterSuite());
-    result.setBeforeGroups(c.beforeGroups());
-    result.setAfterGroups(c.afterGroups());
-    result.setParameters(c.parameters());    
-    result.setEnabled(c.enabled());
-    
-    result.setGroups(join(c.groups(), findInheritedStringArray(cls, Test.class, "groups")));
-    result.setDependsOnGroups(c.dependsOnGroups());
-    result.setDependsOnMethods(c.dependsOnMethods());
-    result.setAlwaysRun(c.alwaysRun());    
-    result.setInheritGroups(c.inheritGroups());    
-    result.setDescription(c.description());
-
-    return result;
-  }
-  
-  private IAnnotation createConfigurationTag(Class<?> cls, Annotation a,
-      boolean beforeSuite, boolean afterSuite,
-      boolean beforeTest, boolean afterTest,
-      String[] beforeGroups, String[] afterGroups,
-      boolean beforeClass, boolean afterClass,
-      boolean beforeMethod, boolean afterMethod,
-      boolean alwaysRun,
-      String[] dependsOnGroups, String[] dependsOnMethods,
-      String description, boolean enabled, String[] groups,
-      boolean inheritGroups, String[] parameters,
-      boolean firstTimeOnly, boolean lastTimeOnly)
-  {
-    ConfigurationAnnotation result = new ConfigurationAnnotation();
-    result.setFakeConfiguration(true);
-    result.setBeforeSuite(beforeSuite);
-    result.setAfterSuite(afterSuite);
-    result.setBeforeTestClass(beforeTest);
-    result.setAfterTestClass(afterTest);
-    result.setBeforeTestClass(beforeClass);
-    result.setAfterTestClass(afterClass);
-    result.setBeforeGroups(beforeGroups);
-    result.setAfterGroups(afterGroups);    
-    result.setBeforeTestMethod(beforeMethod);
-    result.setAfterTestMethod(afterMethod);
-
-    result.setAlwaysRun(alwaysRun);
-    result.setDependsOnGroups(dependsOnGroups);
-    result.setDependsOnMethods(dependsOnMethods);
-    result.setDescription(description);
-    result.setEnabled(enabled);
-    result.setGroups(groups);
-    result.setInheritGroups(inheritGroups);
-    result.setParameters(parameters);
-    result.setFirstTimeOnly(firstTimeOnly);
-    result.setLastTimeOnly(lastTimeOnly);
-    
-    return result;
-  }
-
-  private IAnnotation createDataProviderTag(Annotation a) {
-    DataProviderAnnotation result = new DataProviderAnnotation();
-    DataProvider c = (DataProvider) a;
-    result.setName(c.name());
-    result.setParallel(c.parallel());
-    
-    return result;
-  }
-
-  @SuppressWarnings({"deprecation"})
-  private IAnnotation createExpectedExceptionsTag(Annotation a) {
-    ExpectedExceptionsAnnotation result = new ExpectedExceptionsAnnotation ();
-    ExpectedExceptions c = (ExpectedExceptions ) a;
-    result.setValue(c.value());
-    
-    return result;
-  }
-
-  @SuppressWarnings({"deprecation"})
-  private IAnnotation createFactoryTag(Annotation a) {
-    FactoryAnnotation result = new FactoryAnnotation();
-    Factory c = (Factory) a;
-    result.setParameters(c.parameters());
-    result.setDataProvider(c.dataProvider());
-    
-    return result;
-  }
-
-  private IAnnotation createObjectFactoryTag(Annotation a) {
-    return new ObjectFactoryAnnotation();
-  }
-  
-  private IAnnotation createParametersTag(Annotation a) {
-    ParametersAnnotation result = new ParametersAnnotation();
-    Parameters c = (Parameters) a;
-    result.setValue(c.value());
-    
-    return result;
-  }
-  
-  @SuppressWarnings({"deprecation"})
-  private IAnnotation createTestTag(Class<?> cls, Annotation a, 
-      IAnnotationTransformer transformer) 
-  {
-    TestAnnotation result = new TestAnnotation();
-    Test test = (Test) a;
-    
-    result.setEnabled(test.enabled());
-    result.setGroups(join(test.groups(), findInheritedStringArray(cls, Test.class, "groups")));
-    result.setParameters(test.parameters());
-    result.setDependsOnGroups(join(test.dependsOnGroups(), 
-        findInheritedStringArray(cls, Test.class, "dependsOnGroups")));
-    result.setDependsOnMethods(join(test.dependsOnMethods(), 
-        findInheritedStringArray(cls, Test.class, "dependsOnMethods")));
-    result.setTimeOut(test.timeOut());
-    result.setInvocationTimeOut(test.invocationTimeOut());
-    result.setInvocationCount(test.invocationCount());
-    result.setThreadPoolSize(test.threadPoolSize());
-    result.setSuccessPercentage(test.successPercentage());
-    result.setDataProvider(test.dataProvider());
-//    result.setDataProviderClass(test.dataProviderClass() != Object.class ?
-//        test.dataProviderClass() : null);
-    result.setDataProviderClass(
-        findInherited(test.dataProviderClass(), cls, Test.class, "dataProviderClass",
-            DEFAULT_CLASS));
-    result.setAlwaysRun(test.alwaysRun());
-    result.setDescription(
-        findInherited(test.description(), cls, Test.class, "description", DEFAULT_STRING));
-    result.setExpectedExceptions(test.expectedExceptions());
-    result.setExpectedExceptionsMessageRegExp(test.expectedExceptionsMessageRegExp());
-    result.setSuiteName(test.suiteName());
-    result.setTestName(test.testName());
-    result.setSequential(test.sequential());
-    result.setRetryAnalyzer(test.retryAnalyzer());
-    result.setSkipFailedInvocations(test.skipFailedInvocations());
-    result.setIgnoreMissingDependencies(test.ignoreMissingDependencies());
-    result.setPriority(test.priority());
-
-    return result;
-  }
-
-  private String[] join(String[] strings, String[] strings2) {
-    Map<String, String> vResult = Maps.newHashMap();
-    for (String s : strings) {
-      vResult.put(s, s);
-    }
-    for (String s : strings2) {
-      vResult.put(s, s);
-    }
-    
-    return vResult.keySet().toArray(new String[vResult.size()]);
-  }
-
-  /**
-   * This interface is used to calculate the default value for various
-   * annotation return types. This is used when looking for an annotation in a
-   * hierarchy. We can't use null as a default since annotation don't allow
-   * nulls, so each type has a different way of defining its own default.
-   */
-  static interface Default<T> {
-    boolean isDefault(T t);
-  }
-
-  private static final Default<Class<?>> DEFAULT_CLASS = new Default<Class<?>>() {
-    public boolean isDefault(Class<?> c) {
-      return c == Object.class;
-    }
-  };
-
-  private static final Default<String> DEFAULT_STRING = new Default<String>() {
-    public boolean isDefault(String s) {
-      return Utils.isStringEmpty(s);
-    }
-  };
-
-  /**
-   * Find the value of an annotation, starting with the annotation found on the
-   * method, then the class and then parent classes until we either find a
-   * non-default value or we reach the top of the hierarchy (Object).
-   */
-  private <T> T findInherited(T methodValue, Class<?> cls,
-      Class<? extends Annotation> annotationClass, String methodName,
-      Default<T> def) {
-
-    // Look on the method first and return right away if the annotation is there
-    if (!def.isDefault(methodValue)) return methodValue;
-
-    // Not found, look on the class and then up the hierarchy
-    while (cls != null && cls != Object.class) {
-      Annotation annotation = cls.getAnnotation(annotationClass);
-      if (annotation != null) {
-        T result = (T) invokeMethod(annotation, methodName);
-        if (!def.isDefault(result)) return result;
-      }
-      cls = cls.getSuperclass();
-    }
-    
-    return null;
-  }
-
-  /**
-   * Find the value of a String[] annotation. The difference with the
-   * findInherited method above is that TestNG aggregates String[] values across
-   * hierarchies. For example, of the method annotation has { "a", "b" } and the
-   * class has { "c" }, the returned value will be { "a", "b", "c" }.
-   */
-  private String[] findInheritedStringArray(Class<?> cls,
-      Class<? extends Annotation> annotationClass, String methodName)
-  {
-    if (null == cls) return new String[0];
-    
-    Map<String, String> vResult = Maps.newHashMap();
-    
-    while (cls != null && cls != Object.class) {
-      Annotation annotation = cls.getAnnotation(annotationClass);
-      if (annotation != null) {
-        String[] g = (String[]) invokeMethod(annotation, methodName);
-        for (String s : g) {
-          vResult.put(s, s);
-        }
-      }
-      cls = cls.getSuperclass();
-    }
-    
-    String[] result = vResult.keySet().toArray(new String[vResult.size()]);
-    return result;
-  }
-
-  private Object invokeMethod(Annotation test, String methodName) {
-    Object result = null;
-    try {
-      // Note:  we should cache methods already looked up
-      Method m = test.getClass().getMethod(methodName, new Class[0]);
-      result = m.invoke(test, new Object[0]);
-    }
-    catch (Exception e) {
-      e.printStackTrace();
-    }    
-    return result;
-  }
-
-  private void ppp(String string) {
-    System.out.println("[JDK15TagFactory] " + string);
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/ObjectFactoryAnnotation.java b/src/org/testng/internal/annotations/ObjectFactoryAnnotation.java
deleted file mode 100755
index ae394d6..0000000
--- a/src/org/testng/internal/annotations/ObjectFactoryAnnotation.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IObjectFactoryAnnotation;
-
-/**
- * The internal representation of @ObjectFactory
- * @author Hani
- */
-public class ObjectFactoryAnnotation extends BaseAnnotation implements IObjectFactoryAnnotation
-{}
diff --git a/src/org/testng/internal/annotations/ParametersAnnotation.java b/src/org/testng/internal/annotations/ParametersAnnotation.java
deleted file mode 100755
index 1ce510b..0000000
--- a/src/org/testng/internal/annotations/ParametersAnnotation.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.IParametersAnnotation;
-
-
-/**
- * An implementation of IParameters
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class ParametersAnnotation 
-  extends BaseAnnotation
-  implements IParametersAnnotation 
-{
-  private String[] m_value  = {};
-
-  public String[] getValue() {
-    return m_value;
-  }
-  
-  public void setValue(String[] value) {
-    m_value = value;
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/Sets.java b/src/org/testng/internal/annotations/Sets.java
deleted file mode 100755
index 5186496..0000000
--- a/src/org/testng/internal/annotations/Sets.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.testng.internal.annotations;
-
-import java.util.HashSet;
-import java.util.Set;
-
-public class Sets {
-
-  public static <K> Set<K> newHashSet() {
-    return new HashSet<K>();
-  }
-
-}
diff --git a/src/org/testng/internal/annotations/TestAnnotation.java b/src/org/testng/internal/annotations/TestAnnotation.java
deleted file mode 100755
index 6a6e503..0000000
--- a/src/org/testng/internal/annotations/TestAnnotation.java
+++ /dev/null
@@ -1,178 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.IRetryAnalyzer;
-import org.testng.annotations.ITestAnnotation;
-
-
-/**
- * An implementation of ITest
- * 
- * Created on Dec 20, 2005
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class TestAnnotation extends TestOrConfiguration implements ITestAnnotation {
-  private long m_timeOut = 0;
-  private long m_invocationTimeOut = 0;
-  private int m_invocationCount = 1;
-  private int m_threadPoolSize = 0;
-  private int m_successPercentage = 100;
-  private String m_dataProvider = "";
-  private boolean m_alwaysRun = false;
-  private Class<?>[] m_expectedExceptions = {};
-  private String m_expectedExceptionsMessageRegExp = ".*";
-  private String m_suiteName = "";
-  private String m_testName = "";
-  private boolean m_sequential = false;
-  private Class<?> m_dataProviderClass = null;
-  private IRetryAnalyzer m_retryAnalyzer = null;
-  private boolean m_skipFailedInvocations = false;
-  private boolean m_ignoreMissingDependencies = false;
-  
-  /**
-   * @return the expectedExceptions
-   */
-  public Class<?>[] getExpectedExceptions() {
-    return m_expectedExceptions;
-  }
-
-  /**
-   * @param expectedExceptions the expectedExceptions to set
-   */
-  public void setExpectedExceptions(Class<?>[] expectedExceptions) {
-    m_expectedExceptions = expectedExceptions;
-  }
-
-  public String getExpectedExceptionsMessageRegExp() {
-    return m_expectedExceptionsMessageRegExp;
-  }
-
-  public void setExpectedExceptionsMessageRegExp(
-      String expectedExceptionsMessageRegExp) {
-    m_expectedExceptionsMessageRegExp = expectedExceptionsMessageRegExp;
-  }
-
-  public void setAlwaysRun(boolean alwaysRun) {
-    m_alwaysRun = alwaysRun;
-  }
-
-  public void setDataProvider(String dataProvider) {
-    m_dataProvider = dataProvider;
-  }
-
-  public Class<?> getDataProviderClass() {
-    return m_dataProviderClass;
-  }
-
-  public void setDataProviderClass(Class<?> dataProviderClass) {
-    m_dataProviderClass = dataProviderClass;
-  }
-
-  public void setInvocationCount(int invocationCount) {
-    m_invocationCount = invocationCount;
-  }
-
-  public void setSuccessPercentage(int successPercentage) {
-    m_successPercentage = successPercentage;
-  }
-
-  public void setTimeOut(long timeOut) {
-    m_timeOut = timeOut;
-  }
-  
-  public long getTimeOut() {
-    return m_timeOut;
-  }
-
-  public int getInvocationCount() {
-    return m_invocationCount;
-  }
-  
-  public long invocationTimeOut() {
-   return m_invocationTimeOut; 
-  }
-
-  public void setInvocationTimeOut(long timeOut) {
-    m_invocationTimeOut = timeOut;
-  }
-
-
-  public int getSuccessPercentage() {
-    return m_successPercentage;
-  }
-
-  public String getDataProvider() {
-    return m_dataProvider;
-  }
-
-  public boolean getAlwaysRun() {
-    return m_alwaysRun;
-  }
-
-  public int getThreadPoolSize() {
-    return m_threadPoolSize;
-  }
-
-  public void setThreadPoolSize(int threadPoolSize) {
-    m_threadPoolSize = threadPoolSize;
-  }
-
-  public String getSuiteName() {
-    return m_suiteName;
-  }
-
-  public void setSuiteName(String xmlSuite) {
-    m_suiteName = xmlSuite;
-  }
-
-  public String getTestName() {
-    return m_testName;
-  }
-
-  public void setTestName(String xmlTest) {
-    m_testName = xmlTest;
-  }
-  
-  public boolean getSequential() {
-    return m_sequential;
-  }
-  
-  public void setSequential(boolean sequential) {
-    m_sequential = sequential;
-  }
-
-  public IRetryAnalyzer getRetryAnalyzer() {
-    return m_retryAnalyzer;
-  }
-
-  public void setRetryAnalyzer(Class<?> c) {
-    m_retryAnalyzer = null;
-
-    if (c != null && IRetryAnalyzer.class.isAssignableFrom(c)) {
-      try {
-        m_retryAnalyzer = (IRetryAnalyzer) c.newInstance();
-      } 
-      catch (InstantiationException e) {
-        // The class will never be called.
-      } 
-      catch (IllegalAccessException e) {
-        // The class will never be called.
-      }
-    }
-  }
-
-  public void setSkipFailedInvocations(boolean skip) {
-    m_skipFailedInvocations = skip;
-  }
-
-  public boolean skipFailedInvocations() {
-    return m_skipFailedInvocations;
-  }
-  
-  public void setIgnoreMissingDependencies(boolean ignore) {
-    m_ignoreMissingDependencies = ignore;
-  }
-
-  public boolean ignoreMissingDependencies() {
-    return m_ignoreMissingDependencies;
-  }
-}
diff --git a/src/org/testng/internal/annotations/TestOrConfiguration.java b/src/org/testng/internal/annotations/TestOrConfiguration.java
deleted file mode 100755
index 09d94f8..0000000
--- a/src/org/testng/internal/annotations/TestOrConfiguration.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.testng.internal.annotations;
-
-import org.testng.annotations.ITestOrConfiguration;
-
-public class TestOrConfiguration 
-  extends BaseAnnotation
-  implements ITestOrConfiguration 
-{
-  private String[] m_parameters = {};
-  private String[] m_groups = {};
-  private boolean m_enabled = true;
-  private String[] m_dependsOnGroups = {};
-  private String[] m_dependsOnMethods = {};
-  private String m_description = "";
-  private int m_priority;
-  
-  public String[] getGroups() {
-    return m_groups;
-  }
-
-  public boolean getEnabled() {
-    return m_enabled;
-  }
-
-  public void setDependsOnGroups(String[] dependsOnGroups) {
-    m_dependsOnGroups = dependsOnGroups;
-  }
-
-  public void setDependsOnMethods(String[] dependsOnMethods) {
-    m_dependsOnMethods = dependsOnMethods;
-  }
-
-  public void setGroups(String[] groups) {
-    m_groups = groups;
-  }
-
-  public String getDescription() {
-    return m_description;
-  }
-
-  public void setEnabled(boolean enabled) {
-    m_enabled = enabled;
-  }
-  
-  public String[] getDependsOnGroups() {
-    return m_dependsOnGroups;
-  }
-
-  public String[] getDependsOnMethods() {
-    return m_dependsOnMethods;
-  }
-  
-  public String[] getParameters() {
-    return m_parameters;
-  }
-  
-  public void setParameters(String[] parameters) {
-    m_parameters = parameters;
-  }
-
-  public void setDescription(String description) {
-    m_description = description;
-  }
-
-  public int getPriority() {
-    return m_priority;
-  }
-  
-  public void setPriority(int priority) {
-    m_priority = priority;
-  }
-}
diff --git a/src/org/testng/internal/remote/SlavePool.java b/src/org/testng/internal/remote/SlavePool.java
deleted file mode 100755
index bc1eb96..0000000
--- a/src/org/testng/internal/remote/SlavePool.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.testng.internal.remote;
-
-import org.testng.collections.Maps;
-import org.testng.remote.ConnectionInfo;
-
-import java.io.IOException;
-import java.net.Socket;
-import java.util.Map;
-
-
-/**
- * This class maintains a pool of slaves (represented by sockets).
- * 
- * @author cbeust
- */
-public class SlavePool {
-  private static SocketLinkedBlockingQueue m_hosts = new SocketLinkedBlockingQueue();
-  private static Map<Socket, ConnectionInfo> m_connectionInfos = Maps.newHashMap();
-  
-  public void addSlaves(Socket[] slaves) throws IOException {
-    for (Socket s : slaves) {
-      addSlave(s);
-    }
-  }
-  
-  public void addSlave(Socket s) {
-	  if( s==null)
-		  return;
-	  ConnectionInfo ci = new ConnectionInfo();
-	  ci.setSocket(s);
-	  addSlave(s, ci);
-  }
-
-  private void addSlave(Socket s, ConnectionInfo ci) {
-    m_hosts.add(s);
-    m_connectionInfos.put(s, ci);
-  }
-  
-  public ConnectionInfo getSlave() {
-    ConnectionInfo result = null;
-    Socket host = null;
-    
-    try {
-      host = m_hosts.take();
-      result = m_connectionInfos.get(host);
-    }
-    catch (InterruptedException e) {
-      e.printStackTrace();
-    }
-    
-    return result;
-  }
-  
-  public void returnSlave(ConnectionInfo slave) throws IOException {
-    m_hosts.add(slave.getSocket());
-//    ConnectionInfo ci = m_connectionInfos.remove(slave.socket);
-//    ci.oos.close();
-//    ci.ois.close();
-//    addSlave(slave.socket);
-  }
-
-}
diff --git a/src/org/testng/internal/remote/SocketLinkedBlockingQueue.java b/src/org/testng/internal/remote/SocketLinkedBlockingQueue.java
deleted file mode 100755
index 8be34d7..0000000
--- a/src/org/testng/internal/remote/SocketLinkedBlockingQueue.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.testng.internal.remote;
-
-import java.net.Socket;
-
-/**
- * <code>SocketLinkedBlockingQueue</code> is a wrapper on LinkedBlockingQueue so
- * we may factor out code common to JDK14 and JDK5+ using different implementation 
- * of LinkedBlockingQueue
- *
- * @author cquezel
- * @since 5.2
- */
-public class SocketLinkedBlockingQueue extends java.util.concurrent.LinkedBlockingQueue<Socket>
-{
-  // wrapper
-}
diff --git a/src/org/testng/internal/thread/AtomicIntegerAdapter.java b/src/org/testng/internal/thread/AtomicIntegerAdapter.java
deleted file mode 100755
index e126816..0000000
--- a/src/org/testng/internal/thread/AtomicIntegerAdapter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.testng.internal.thread;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-
-/**
- * This class/interface 
- */
-public class AtomicIntegerAdapter implements IAtomicInteger {
-  private AtomicInteger m_atomicInteger;
-  
-  public AtomicIntegerAdapter(int initialValue) {
-    m_atomicInteger= new AtomicInteger(initialValue);
-  }
-  
-  /**
-   * @see org.testng.internal.thread.IAtomicInteger#get()
-   */
-  public int get() {
-    return m_atomicInteger.get();
-  }
-
-  /**
-   * @see org.testng.internal.thread.IAtomicInteger#incrementAndGet()
-   */
-  public int incrementAndGet() {
-    return m_atomicInteger.incrementAndGet();
-  }
-
-}
diff --git a/src/org/testng/internal/thread/CountDownAdapter.java b/src/org/testng/internal/thread/CountDownAdapter.java
deleted file mode 100755
index e3380d1..0000000
--- a/src/org/testng/internal/thread/CountDownAdapter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * $Id$
- * $Date$
- */
-package org.testng.internal.thread;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * ICountDown adapter using the features in JDK 1.5, e.g.
- * <CODE>CountDownLatch</CODE>.
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>the_mindstorm</a>
- * @version $Revision$
- */
-public class CountDownAdapter implements ICountDown {
-   protected CountDownLatch m_doneLatch;
-
-   public CountDownAdapter(int count) {
-      m_doneLatch = new CountDownLatch(count);
-   }
-
-   public void await() throws InterruptedException {
-      m_doneLatch.await();
-   }
-
-   public boolean await(long timeout) throws InterruptedException {
-      return m_doneLatch.await(timeout, TimeUnit.MILLISECONDS);
-   }
-
-   public void countDown() {
-      m_doneLatch.countDown();
-   }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/thread/ExecutorAdapter.java b/src/org/testng/internal/thread/ExecutorAdapter.java
deleted file mode 100755
index 1d28cd1..0000000
--- a/src/org/testng/internal/thread/ExecutorAdapter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.testng.internal.thread;
-
-
-import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * An implementation for <code>IExecutor</code> based on <code>ThreadPoolExecutor</code>
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>Alexandru Popescu</a>
- */
-public class ExecutorAdapter extends ThreadPoolExecutor implements IExecutor {
-  private IThreadFactory m_threadFactory;
-
-  public ExecutorAdapter(int threadCount, IThreadFactory tf) {
-      super(threadCount,
-            threadCount,
-            0L,
-            TimeUnit.MILLISECONDS,
-            new LinkedBlockingQueue<Runnable>(),
-            (ThreadFactory) tf.getThreadFactory());
-      m_threadFactory = tf;
-   }
-
-   public IFutureResult submitRunnable(final Runnable runnable) {
-      return new FutureResultAdapter(super.submit(runnable));
-   }
-
-   public void stopNow() {
-      super.shutdownNow();
-   }
-
-   public boolean awaitTermination(long timeout) {
-     boolean result= false;
-     try {
-      result= super.awaitTermination(timeout, TimeUnit.MILLISECONDS);
-     }
-     catch(InterruptedException iex) {
-       System.out.println("[WARN] ThreadPoolExecutor has been interrupted while awaiting termination");
-       Thread.currentThread().interrupt();
-     }
-     
-     return result;
-   }
-
-  public StackTraceElement[][] getStackTraces() {
-    List<Thread> threads = m_threadFactory.getThreads();
-    int threadCount = threads.size();
-    StackTraceElement[][] result = new StackTraceElement[threadCount][];
-    for (int i = 0; i < result.length; i++) {
-      result[i] = threads.get(i).getStackTrace();
-    }
-    return result;
-  }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/thread/FutureResultAdapter.java b/src/org/testng/internal/thread/FutureResultAdapter.java
deleted file mode 100755
index 1d24ecc..0000000
--- a/src/org/testng/internal/thread/FutureResultAdapter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.testng.internal.thread;
-
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
-/**
- * A very reduced interface of <code>Future</code>.
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>the_mindstorm</a>
- */
-public class FutureResultAdapter implements IFutureResult {
-   Future<?> m_future;
-
-   public FutureResultAdapter(Future<?> future) {
-      m_future = future;
-   }
-
-   public Object get() throws InterruptedException, ThreadExecutionException {
-      try {
-         return m_future.get();
-      } 
-      catch(ExecutionException ee) {
-         throw new ThreadExecutionException(ee.getCause()); // NOTE there is no need to keep the EE
-      }
-   }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/thread/GroupThreadPoolExecutor.java b/src/org/testng/internal/thread/GroupThreadPoolExecutor.java
deleted file mode 100644
index c0dd5aa..0000000
--- a/src/org/testng/internal/thread/GroupThreadPoolExecutor.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package org.testng.internal.thread;
-
-import org.testng.ITestNGMethod;
-import org.testng.collections.Lists;
-import org.testng.internal.DynamicGraph;
-import org.testng.internal.IMethodWorker;
-import org.testng.internal.IWorkerFactory;
-import org.testng.internal.DynamicGraph.Status;
-import org.testng.xml.XmlTest;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * An Executor that launches tasks per batches.
- */
-public class GroupThreadPoolExecutor extends ThreadPoolExecutor {
-  private static final boolean DEBUG = false;
-  private static final boolean DOT_FILES = false;
-
-  private DynamicGraph<ITestNGMethod> m_graph;
-  private List<Runnable> m_activeRunnables = Lists.newArrayList();
-  private IWorkerFactory m_factory;
-  private XmlTest m_xmlTest;
-  private List<String> m_dotFiles = Lists.newArrayList();
-
-  public GroupThreadPoolExecutor(IWorkerFactory factory, XmlTest xmlTest, int corePoolSize,
-      int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue,
-      DynamicGraph<ITestNGMethod> graph) {
-    super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
-    m_graph = graph;
-    m_factory = factory;
-    m_xmlTest = xmlTest;
-  }
-
-  public void run() {
-    synchronized(m_graph) {
-      if (DOT_FILES) {
-        m_dotFiles.add(m_graph.toDot());
-      }
-      Set<ITestNGMethod> freeNodes = m_graph.getFreeNodes();
-      runNodes(freeNodes);
-    }
-  }
-
-  /**
-   * Create one worker per node and execute them.
-   */
-  private void runNodes(Set<ITestNGMethod> nodes) {
-    List<IMethodWorker> runnables = m_factory.createWorkers(m_xmlTest, nodes);
-    for (IMethodWorker r : runnables) {
-      m_activeRunnables.add(r);
-      setStatus(r, Status.RUNNING);
-      ppp("Executing: " + r);
-      try {
-        execute(r);
-      }
-      catch(Exception ex) {
-        ex.printStackTrace();
-      }
-    }
-  }
-
-  private void setStatus(IMethodWorker worker, Status status) {
-    ppp("Set status:" + worker + " status:" + status);
-    synchronized(m_graph) {
-      for (ITestNGMethod m : worker.getMethods()) {
-        m_graph.setStatus(m, status);
-      }
-    }
-  }
-
-  @Override
-  public void afterExecute(Runnable r, Throwable t) {
-    ppp("Finished runnable:" + r);
-    m_activeRunnables.remove(r);
-    setStatus((IMethodWorker) r, Status.FINISHED);
-    synchronized(m_graph) {
-      ppp("Node count:" + m_graph.getNodeCount() + " and "
-          + m_graph.getNodeCountWithStatus(Status.FINISHED));
-      if (m_graph.getNodeCount() == m_graph.getNodeCountWithStatus(Status.FINISHED)) {
-        ppp("Shutting down executor " + this);
-        if (DOT_FILES) {
-          generateFiles(m_dotFiles);
-        }
-        shutdown();
-      } else {
-        if (DOT_FILES) {
-          m_dotFiles.add(m_graph.toDot());
-        }
-        Set<ITestNGMethod> freeNodes = m_graph.getFreeNodes();
-        runNodes(freeNodes);
-      }
-    }
-//    if (m_activeRunnables.isEmpty() && m_index < m_runnables.getSize()) {
-//      runNodes(m_index++);
-//    }
-  }
-
-  private void generateFiles(List<String> files) {
-    try {
-//      File dir = new File("/tmp/graphs");
-      File dir = File.createTempFile("TestNG-", "");
-      dir.delete();
-      dir.mkdir();
-      for (int i = 0; i < files.size(); i++) {
-        File f = new File(dir, "" + (i < 10 ? "0" : "") + i + ".dot");
-        BufferedWriter bw = new BufferedWriter(new FileWriter(f));
-        bw.append(files.get(i));
-        bw.close();
-      }
-      if (DOT_FILES) {
-        System.out.println("Created graph files in " + dir);
-      }
-    } catch(IOException ex) {
-      ex.printStackTrace();
-    }
-  }
-
-  private void ppp(String string) {
-    if (DEBUG) {
-      System.out.println("   [GroupThreadPoolExecutor] " + Thread.currentThread().getId() + " "
-          + string);
-    }
-  }
-
-  // public void addRunnable(int i, Runnable runnable) {
-  // List<TestMethodWorker> l = m_runnables.get(i);
-  // if (l == null) {
-  // l = new ArrayList<TestMethodWorker>();
-  // m_runnables.put(i, l);
-  // }
-  // l.add(runnable);
-  // }
-}
diff --git a/src/org/testng/internal/thread/IAtomicInteger.java b/src/org/testng/internal/thread/IAtomicInteger.java
deleted file mode 100755
index 1cf9ef3..0000000
--- a/src/org/testng/internal/thread/IAtomicInteger.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng.internal.thread;
-
-import java.io.Serializable;
-
-
-/**
- * This class/interface 
- */
-public interface IAtomicInteger extends Serializable{
-  /**
-   * Get the current value.
-   * @return the current value
-   */
-  int get();
-  
-  /**
-   * Atomically increment by one the current value. 
-   * 
-   * @return the updated value
-   */
-  int incrementAndGet();
-}
diff --git a/src/org/testng/internal/thread/ICountDown.java b/src/org/testng/internal/thread/ICountDown.java
deleted file mode 100755
index c672da0..0000000
--- a/src/org/testng/internal/thread/ICountDown.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.testng.internal.thread;
-
-/**
- * Reduced interface to mimic a CountDownLatch.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface ICountDown {
-   void await() throws InterruptedException;
-
-   boolean await(long timeout) throws InterruptedException;
-
-   void countDown();
-}
diff --git a/src/org/testng/internal/thread/IExecutor.java b/src/org/testng/internal/thread/IExecutor.java
deleted file mode 100755
index ffa2e6b..0000000
--- a/src/org/testng/internal/thread/IExecutor.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.testng.internal.thread;
-
-/**
- * Reduced interface to mimic an ExecutorService.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface IExecutor {
-   IFutureResult submitRunnable(Runnable runnable);
-
-   void shutdown();
-
-   boolean awaitTermination(long timeout);
-
-   void stopNow();
-   
-   StackTraceElement[][] getStackTraces();
-}
diff --git a/src/org/testng/internal/thread/IFutureResult.java b/src/org/testng/internal/thread/IFutureResult.java
deleted file mode 100755
index 6a95e38..0000000
--- a/src/org/testng/internal/thread/IFutureResult.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.testng.internal.thread;
-
-/**
- * Reduced interface to mimic Future.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface IFutureResult {
-   Object get() throws InterruptedException, ThreadExecutionException;
-}
diff --git a/src/org/testng/internal/thread/IPooledExecutor.java b/src/org/testng/internal/thread/IPooledExecutor.java
deleted file mode 100755
index 8cad920..0000000
--- a/src/org/testng/internal/thread/IPooledExecutor.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng.internal.thread;
-
-
-import java.util.List;
-
-/**
- * Reduced interface to mimic <code>ExecutorService</code>.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface IPooledExecutor {
-  void execute(Runnable run);
-
-  void shutdown();
-
-  void awaitTermination(long timeout) throws InterruptedException;
-
-  /**
-   * @return
-   */
-  boolean isTerminated();
-}
diff --git a/src/org/testng/internal/thread/IThreadFactory.java b/src/org/testng/internal/thread/IThreadFactory.java
deleted file mode 100755
index c488c2d..0000000
--- a/src/org/testng/internal/thread/IThreadFactory.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.testng.internal.thread;
-
-import java.util.List;
-
-/**
- * Reduced interface to mimic ThreadFactory.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- * @version $Revision$
- */
-public interface IThreadFactory {
-   Thread newThread(Runnable run);
-
-   Object getThreadFactory();
-   
-   List<Thread> getThreads();
-}
diff --git a/src/org/testng/internal/thread/PooledExecutorAdapter.java b/src/org/testng/internal/thread/PooledExecutorAdapter.java
deleted file mode 100755
index d4533de..0000000
--- a/src/org/testng/internal/thread/PooledExecutorAdapter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.testng.internal.thread;
-
-
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.testng.TestNGException;
-
-/**
- * An <code>IPooledExecutor</code> implementation based on JDK1.5 native support.
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>the_mindstorm</a>
- */
-public class PooledExecutorAdapter extends ThreadPoolExecutor implements IPooledExecutor {
-  public PooledExecutorAdapter(int noThreads) {
-    super(noThreads,
-          noThreads,
-          0L,
-          TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
-  }
-
-  public void execute(Runnable command) {
-    try {
-      super.execute(command);
-    }
-    catch(RejectedExecutionException ree) {
-      throw new TestNGException("Task was not accepted for execution", ree);
-    }
-  }
-
-  public void awaitTermination(long timeout) throws InterruptedException {
-    super.awaitTermination(timeout, TimeUnit.MILLISECONDS);
-  }
-}
diff --git a/src/org/testng/internal/thread/TestNGThread.java b/src/org/testng/internal/thread/TestNGThread.java
deleted file mode 100755
index 205b412..0000000
--- a/src/org/testng/internal/thread/TestNGThread.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.testng.internal.thread;
-
-/**
- * Custom named thread.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TestNGThread extends Thread {
-   public TestNGThread(String methodName) {
-      super("TestNGInvoker-" + methodName + "()");
-   }
-
-   public TestNGThread(Runnable target, String methodName) {
-      super(target, "TestNGInvoker-" + methodName + "()");
-   }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/thread/ThreadExecutionException.java b/src/org/testng/internal/thread/ThreadExecutionException.java
deleted file mode 100755
index 8ecd8c1..0000000
--- a/src/org/testng/internal/thread/ThreadExecutionException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.testng.internal.thread;
-
-/**
- * Wrapper exception for ExecutionExceptions.
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>the_mindstorm</a>
- */
-public class ThreadExecutionException extends Exception {
-	static final long serialVersionUID = -7766644143333236263L;
-	
-   public ThreadExecutionException(Throwable t) {
-		super(t);
-	}
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/thread/ThreadTimeoutException.java b/src/org/testng/internal/thread/ThreadTimeoutException.java
deleted file mode 100755
index 6c1490a..0000000
--- a/src/org/testng/internal/thread/ThreadTimeoutException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.testng.internal.thread;
-
-/**
- * Exception used to signal a thread timeout.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class ThreadTimeoutException extends Exception {
-  static final long serialVersionUID = 7009400729783393548L;
-  
-   public ThreadTimeoutException(String msg) {
-      super(msg);
-   }
-
-   public ThreadTimeoutException(Throwable cause) {
-      super(cause);
-   }
-
-   public ThreadTimeoutException(String msg, Throwable cause) {
-      super(msg, cause);
-   }
-}
\ No newline at end of file
diff --git a/src/org/testng/internal/thread/ThreadUtil.java b/src/org/testng/internal/thread/ThreadUtil.java
deleted file mode 100644
index edbd67e..0000000
--- a/src/org/testng/internal/thread/ThreadUtil.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.testng.internal.thread;
-
-
-import org.testng.collections.Lists;
-import org.testng.internal.Utils;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ThreadFactory;
-
-
-/**
- * A helper class to interface TestNG concurrency usage.
- *
- * @author <a href="mailto:the_mindstorm at evolva.ro>Alex Popescu</a>
- */
-public class ThreadUtil {
-  /**
-   * Parallel execution of the <code>tasks</code>. The startup is synchronized so this method
-   * emulates a load test.
-   * @param tasks the list of tasks to be run
-   * @param threadPoolSize the size of the parallel threads to be used to execute the tasks
-   * @param timeout <b>CURRENTLY NOT USED</b> (a maximum timeout to wait for tasks finalization)
-   * @param triggerAtOnce <tt>true</tt> if the parallel execution of tasks should be trigger at once
-   */
-  public static final void execute(List<? extends Runnable> tasks, int threadPoolSize,
-      long timeout, boolean triggerAtOnce) {
-    final CountDownLatch startGate= new CountDownLatch(1);
-    final CountDownLatch endGate= new CountDownLatch(tasks.size());
-
-    ExecutorService pooledExecutor= Executors.newFixedThreadPool(threadPoolSize);
-    for(final Runnable task: tasks) {
-      try {
-        pooledExecutor.execute(new CountDownLatchedRunnable(task,
-            endGate, triggerAtOnce ? startGate : null));
-      }
-      catch(RejectedExecutionException reex) {
-        ; // this should never happen as we submit all tasks at once
-      }
-    }
-    try {
-      startGate.countDown();
-      endGate.await();
-      pooledExecutor.shutdown();
-    }
-    catch(InterruptedException e) {
-      Thread.currentThread().interrupt();
-      log(2, "Error waiting for concurrent executors to finish " + e.getMessage());
-    }
-  }
-
-  /**
-   * Returns a readable name of the current executing thread.
-   */
-  public static final String currentThreadInfo() {
-    Thread thread= Thread.currentThread();
-    return String.valueOf(thread.getName() + "@" + thread.hashCode());
-  }
-
-  public static final IExecutor createExecutor(int threadCount, String threadFactoryName) {
-    return new ExecutorAdapter(threadCount, createFactory(threadFactoryName));
-  }
-
-  public static final IAtomicInteger createAtomicInteger(int initialValue) {
-    return new AtomicIntegerAdapter(initialValue);
-  }
-
-  private static final IThreadFactory createFactory(String name) {
-    return new ThreadFactoryImpl(name);
-  }
-
-  /*private static final ICountDown createCountDown(int count) {
-    return new CountDownAdapter(count);
-  }*/
-
-  private static void log(int level, String msg) {
-    Utils.log("ThreadUtil:" + ThreadUtil.currentThreadInfo(), level, msg);
-  }
-
-  /*private static final IPooledExecutor createPooledExecutor(int size) {
-    return new PooledExecutorAdapter(size);
-  }*/
-
-  public static class ThreadFactoryImpl implements IThreadFactory, ThreadFactory {
-    private String m_methodName;
-    private List<Thread> m_threads = Lists.newArrayList();
-
-    public ThreadFactoryImpl(String name) {
-      m_methodName= name;
-    }
-
-    public Thread newThread(Runnable run) {
-      Thread result = new TestNGThread(run, m_methodName);
-      m_threads.add(result);
-      return result;
-    }
-
-    public Object getThreadFactory() {
-      return this;
-    }
-
-    public List<Thread> getThreads() {
-      return m_threads;
-    }
-  }
-
-  /**
-   * A special <code>Runnable</code> that uses <code>CountDownLatch</code>-s to
-   * sync on start and to ackowledge its finish.
-   */
-  private static class CountDownLatchedRunnable implements Runnable {
-    private final Runnable m_task;
-    private final CountDownLatch m_startGate;
-    private final CountDownLatch m_endGate;
-    
-    public CountDownLatchedRunnable(Runnable task, CountDownLatch endGate) {
-      this(task, endGate, null);
-    }
-    
-    public CountDownLatchedRunnable(Runnable task, CountDownLatch endGate, CountDownLatch startGate) {
-      m_task= task;
-      m_startGate= startGate;
-      m_endGate= endGate;
-    }
-
-    public void run() {
-      if(null != m_startGate) {
-        try {
-          m_startGate.await();
-        }
-        catch(InterruptedException iex) {
-          log(2, "Cannot wait for startup gate when executing " + m_task + "; thread was already interrupted " + iex.getMessage());
-          Thread.currentThread().interrupt();
-          return;
-        }
-      }
-      
-      try {
-        m_task.run();
-      }
-      finally {
-        m_endGate.countDown();
-      }
-    }
-  }
-
-}
diff --git a/src/org/testng/internal/version/VersionInfo.java b/src/org/testng/internal/version/VersionInfo.java
deleted file mode 100755
index 9273bd5..0000000
--- a/src/org/testng/internal/version/VersionInfo.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.testng.internal.version;
-
-import org.testng.internal.AnnotationTypeEnum;
-
-/**
- * <code>VersionInfo</code> helper class to statically obtain the 
- * TestNG version. 
- *
- * @author cquezel
- * @since 5.2
- */
-public final class VersionInfo {
-  private VersionInfo() {
-    // Hide constructor
-  }
-  
-  /** True if this is the JDK14 version of TestNG false if JDK5+ */
-  public static final boolean IS_JDK14 = false;
-  
-  /**
-   * Returns the default annotation type for this version of TestNG.
-   * @return the default annotation type for this version of TestNG
-   * @since 5.2
-   */
-  public static AnnotationTypeEnum getDefaultAnnotationType() {
-    return AnnotationTypeEnum.JDK;
-  }
-}
diff --git a/src/org/testng/junit/IJUnitTestRunner.java b/src/org/testng/junit/IJUnitTestRunner.java
deleted file mode 100755
index 204e3e5..0000000
--- a/src/org/testng/junit/IJUnitTestRunner.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.testng.junit;
-
-import java.util.List;
-
-import org.testng.ITestNGMethod;
-import org.testng.internal.ITestResultNotifier;
-
-
-/**
- * An abstraction interface over JUnit test runners.
- * 
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public interface IJUnitTestRunner {
-  void setTestResultNotifier(ITestResultNotifier notifier);
-  
-  void run(Class junitTestClass);
-  
-  List<ITestNGMethod> getTestMethods();
-  
-}
diff --git a/src/org/testng/junit/JUnitDirectoryConverter.java b/src/org/testng/junit/JUnitDirectoryConverter.java
deleted file mode 100755
index 4fb3f93..0000000
--- a/src/org/testng/junit/JUnitDirectoryConverter.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * $Id$
- * $Date$
- */
-package org.testng.junit;
-
-
-import org.testng.collections.Maps;
-import org.testng.internal.Utils;
-import org.testng.reporters.XMLStringBuffer;
-import org.testng.xml.Parser;
-
-import java.io.File;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * Tool class scanning and converting the JUnit sources found in a directory.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href="mailto:the_mindstorm at evolva.ro">the_mindstorm</a>
- */
-public class JUnitDirectoryConverter {
-   private File m_sourceDir = null;
-   private File m_outDir    = null;
-   private String m_release   = null;
-   private boolean m_useAnnotations;
-   private String[] m_groups = null;
-
-   private Map<File, File> m_fileNames = Maps.newHashMap();
-
-   /**
-    * Sole constructor.
-    *
-    * @param srcDir path to directory containing JUnit tests
-    * @param outDir path to output directory for the generated test sources
-    * @param useAnnotation flag for JDK 1.5 annotation use. <tt>true</tt> if annotations should be
-    *                      used, <tt>false</tt> if javadoc-like annotations should be use
-    * @param restore flag if the output directory should reflect the package
-    */
-   public JUnitDirectoryConverter(File srcDir, File outDir, String release, 
-       boolean useAnnotation, String[] groups) 
-   {
-      m_sourceDir = srcDir;
-      m_outDir    = outDir;
-      m_useAnnotations = useAnnotation;
-      m_release = release;
-      m_groups = groups;
-   }
-
-   public int convert() {
-      //
-      // Insert annotations
-      //
-      m_fileNames = convert(m_sourceDir);
-      File[] files = m_fileNames.keySet().toArray(new File[m_fileNames.size()]);
-
-      JUnitTestConverter fc = new JUnitTestConverter(files,
-                                                     m_outDir,
-                                                     m_release,
-                                                     m_useAnnotations,
-                                                     m_groups);
-
-      int converted = fc.convert();
-
-      if(-1 == converted) {
-         return converted;
-      }
-
-      generateConfiguration(fc.getClassNames());
-
-      return converted;
-   }
-
-   private void generateConfiguration(String[] classNames) {
-      //
-      // Create testng.xml
-      //
-      XMLStringBuffer xsb = new XMLStringBuffer("");
-      xsb.setDocType("suite SYSTEM \"" + Parser.TESTNG_DTD_URL + "\"");
-      Properties props = new Properties();
-      props.setProperty("name", "Generated Suite");
-      xsb.push("suite", props);
-      props.setProperty("name", "Generated Test");
-      xsb.push("test", props);
-      xsb.push("classes");
-
-      for(String className : classNames) {
-         Properties p = new Properties();
-         p.setProperty("name", className);
-         xsb.addEmptyElement("class", p);
-      }
-
-      xsb.pop("classes");
-      xsb.pop("test");
-      xsb.pop("suite");
-
-      Utils.writeFile(m_outDir.getAbsolutePath(), "testng.xml", xsb.toXML());
-   }
-
-   private boolean isTestFile(File f) {
-      return f.getName().endsWith(".java");
-   }
-
-   private Map<File, File> convert(File f) {
-      Map<File, File> result = Maps.newHashMap();
-      if(f.isDirectory()) {
-         File[] files = f.listFiles();
-         for(File file : files) {
-            File f2 = file.getAbsoluteFile();
-            Map<File, File> others = convert(f2);
-            result.putAll(others);
-         }
-      } else {
-         if(isTestFile(f)) {
-            result.put(f, f);
-         }
-      }
-
-      return result;
-   }
-
-   private void ppp(String s) {
-      System.out.println("[JUnitDirectoryConverter]" + s);
-   }
-}
diff --git a/src/org/testng/junit/JUnitMethodFinder.java b/src/org/testng/junit/JUnitMethodFinder.java
deleted file mode 100755
index ced2ab1..0000000
--- a/src/org/testng/junit/JUnitMethodFinder.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package org.testng.junit;
-
-import org.testng.ITestMethodFinder;
-import org.testng.ITestNGMethod;
-import org.testng.collections.Lists;
-import org.testng.internal.TestNGMethod;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.xml.XmlTest;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-
-/**
- * This class locates all test and configuration methods according to JUnit.  
- * It is used to change the strategy used by TestRunner to locate its test
- * methods.
- *
- * @author Cedric Beust, May 3, 2004
- * 
- */
-public class JUnitMethodFinder implements ITestMethodFinder {
-  private String m_testName = null;
-  private IAnnotationFinder m_annotationFinder = null;
-  
-  public JUnitMethodFinder(String testName, IAnnotationFinder finder) {
-    m_testName = testName;
-    m_annotationFinder = finder;
-  }
-  
-  private Constructor findConstructor(Class cls, Class[] parameters) {
-    Constructor result = null;
-    
-    try {
-      result = cls.getConstructor(parameters);
-    } 
-    catch (SecurityException ex) {
-      // ignore
-    } 
-    catch (NoSuchMethodException ex) {
-      // ignore
-    }
-    
-    return result;
-  }
-
-  public ITestNGMethod[] getTestMethods(Class cls, XmlTest xmlTest) {
-    ITestNGMethod[] result = 
-      privateFindTestMethods(new INameFilter() {
-        public boolean accept(Method method) {
-          return method.getName().startsWith("test") &&
-            method.getParameterTypes().length == 0;
-        }
-    }, cls);
-    
-//    ppp("=====");
-//    ppp("FIND TEST METHOD RETURNING ");
-//    for (ITestMethod m : result) {
-//      ppp("  " + m);
-//    }
-//    ppp("=====");
-    return result;
-  }  
-  
-  private ITestNGMethod[] privateFindTestMethods(INameFilter filter, Class cls) {
-    List<ITestNGMethod> vResult = Lists.newArrayList();
-    
-    // We do not want to walk up the class hierarchy and accept the
-    // same method twice (e.g. setUp) which would lead to double-invocation.
-    // All relevant JUnit methods are parameter-less so we store accepted
-    // method names in a Set to filter out duplicates.
-    Set<String> acceptedMethodNames = new HashSet<String>();
-    
-    //
-    // Collect all methods that start with test
-    //
-    Class current = cls;
-    while(!(current == Object.class)) {
-      Method[] allMethods = current.getDeclaredMethods();
-      for(Method allMethod : allMethods) {
-        ITestNGMethod m = new TestNGMethod(/* allMethods[i].getDeclaringClass(), */ allMethod, 
-            m_annotationFinder, null);
-        Method method = m.getMethod();
-        String methodName = method.getName();
-        if(filter.accept(method) && !acceptedMethodNames.contains(methodName)) {
-          //          if (m.getName().startsWith("test")) {
-          //            ppp("Found JUnit test method: " + tm);
-          vResult.add(m);
-          acceptedMethodNames.add(methodName);
-        }
-      }
-      current = current.getSuperclass();
-    }
-
-    return vResult.toArray(new ITestNGMethod[vResult.size()]);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[JUnitMethodFinder] " + s);
-  }
-  
-  private Object instantiate(Class cls) {
-    Object result = null;
-    
-    Constructor ctor = findConstructor(cls, new Class[] { String.class });
-    try {
-      if (null != ctor) {
-        result = ctor.newInstance(new Object[] { m_testName });
-      }
-      else {
-        ctor = cls.getConstructor(new Class[0]);
-        result = ctor.newInstance(new Object[0]);
-      }
-    } 
-    catch (IllegalArgumentException ex) {
-      ex.printStackTrace();
-    }
-    catch (SecurityException ex) {
-      ex.printStackTrace();
-    } 
-    catch (InstantiationException ex) {
-      System.err.println("Couldn't find a constructor with a String parameter on your JUnit test class.");
-      ex.printStackTrace();
-    } 
-    catch (IllegalAccessException ex) {
-      ex.printStackTrace();
-    } 
-    catch (InvocationTargetException ex) {
-      ex.printStackTrace();
-    } 
-    catch (NoSuchMethodException ex) {
-      ex.printStackTrace();
-    }
-    
-    return result;
-  }
-
-
-  public ITestNGMethod[] getBeforeTestMethods(Class cls) {
-    ITestNGMethod[] result = privateFindTestMethods(new INameFilter() {
-        public boolean accept(Method method) {
-          return "setUp".equals(method.getName());
-        }
-      }, cls);
-    
-    return result;
-  }
-
-  public ITestNGMethod[] getAfterTestMethods(Class cls) {
-    ITestNGMethod[] result =  privateFindTestMethods(new INameFilter() {
-        public boolean accept(Method method) {
-          return "tearDown".equals(method.getName());
-        }
-      }, cls);
-    
-    return result;
-  }
-  
-  public ITestNGMethod[] getAfterClassMethods(Class cls) {
-    return new ITestNGMethod[0];
-  }
-  
-  public ITestNGMethod[] getBeforeClassMethods(Class cls) {
-    return new ITestNGMethod[0];
-  }
-  
-  public ITestNGMethod[] getBeforeSuiteMethods(Class cls) {
-    return new ITestNGMethod[0];
-  }
-  
-  public ITestNGMethod[] getAfterSuiteMethods(Class cls) {
-    return new ITestNGMethod[0];
-  }
-  
-  public ITestNGMethod[] getBeforeTestConfigurationMethods(Class testClass) {
-    return new ITestNGMethod[0];
-  }
-
-  public ITestNGMethod[] getAfterTestConfigurationMethods(Class testClass) {
-    return new ITestNGMethod[0];
-  }
-
-  public ITestNGMethod[] getBeforeGroupsConfigurationMethods(Class testClass) {
-    return new ITestNGMethod[0];
-  }
-
-  public ITestNGMethod[] getAfterGroupsConfigurationMethods(Class testClass) {
-    return new ITestNGMethod[0];
-  }
-}
-
-/////////////
-
-interface INameFilter {
-  public boolean accept(Method method);
-}
diff --git a/src/org/testng/junit/JUnitTestConverter.java b/src/org/testng/junit/JUnitTestConverter.java
deleted file mode 100755
index 286f67f..0000000
--- a/src/org/testng/junit/JUnitTestConverter.java
+++ /dev/null
@@ -1,388 +0,0 @@
-package org.testng.junit;
-
-
-import com.sun.javadoc.ClassDoc;
-import com.sun.javadoc.Doclet;
-import com.sun.javadoc.MethodDoc;
-import com.sun.javadoc.RootDoc;
-import com.sun.javadoc.SourcePosition;
-import com.sun.tools.javadoc.Main;
-
-import org.testng.JUnitConverter;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class converts a file to TestNG if it's a JUnit test class.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href="mailto:the_mindstorm at evolva.ro">the_mindstorm</a>
- */
-public class JUnitTestConverter extends Doclet {
-  private static File[] m_fileNames = null;
-  private static List<String> m_classNames = Lists.newArrayList();
-  // Files and their test methods
-  private static Map<File, List<MethodDoc>> m_files = Maps.newHashMap();
-  private static Map<File, List<String>> m_fileLines = Maps.newHashMap();
-  private static Map<File, String> m_packageNames = Maps.newHashMap();
-  private static Map<File, Integer> m_typelines = Maps.newHashMap();
-  private File m_outDir = null;
-  private boolean m_useAnnotations;
-  private boolean m_done;
-  private String[] m_groups;
-
-  /**
-   * @param fileNames
-   */
-  public JUnitTestConverter(File[] fileNames, File outDir, String release,
-      boolean useAnnotations, String[] groups) 
-  {
-    m_fileNames = fileNames;
-    m_outDir = outDir;
-    m_useAnnotations = useAnnotations;
-    m_groups = groups;
-
-    Collection<String> argv = Lists.newArrayList();
-
-    argv.add("-quiet");
-    if (null != release && !"".equals(release)) {
-      argv.add("-source");
-      argv.add(release);
-    }
-
-    argv.add("-doclet");
-    argv.add("org.testng.junit.JUnitTestConverter");
-
-    for (File fn : fileNames) {
-      argv.add(fn.getAbsolutePath());
-    }
-
-    String[] newArgv = argv.toArray(new String[argv.size()]);
-
-    m_done = 0 == Main.execute(newArgv);
-  }
-
-  private static File findFileName(ClassDoc cd) {
-    for (File fn : m_fileNames) {
-      if (fn.getAbsolutePath().endsWith(cd.name() + ".java")) {
-        return fn;
-      }
-    }
-
-    assert false : "COULDN'T FIND FILE " + cd.name();
-    return null;
-  }
-
-  /**
-   * This method is required for all doclets.
-   * 
-   * @return true on success.
-   */
-  public static boolean start(RootDoc root) {
-    ClassDoc[] classes = root.classes();
-
-    for (ClassDoc cd : classes) {
-      if (!isJUnitTest(cd)) {
-        continue;
-      }
-
-      if(!cd.isAbstract())
-        m_classNames.add(cd.qualifiedTypeName());
-
-      File file;
-      if (null != cd.position().file()) {
-        file = cd.position().file();
-      } else {
-        file = findFileName(cd);
-      }
-
-      String fqn = cd.qualifiedTypeName();
-      int tn = fqn.indexOf(cd.typeName());
-      if (tn > 0) {
-        m_packageNames.put(file, fqn.substring(0, tn - 1));
-      }
-      m_typelines.put(file, new Integer(cd.position().line()));
-
-      MethodDoc[] methods = cd.methods();
-      List<MethodDoc> testMethods = Lists.newArrayList();
-
-      for (MethodDoc md : methods) {
-        if (isTest(md) || isSetUp(md) || isTearDown(md)) {
-          // Add the lines backward, so we can insert them without messing
-          // up their order later
-          testMethods.add(0, md);
-        }
-      }
-
-      m_files.put(file, testMethods);
-    }
-
-    return true;
-  }
-
-  /**
-   * Query the superclasses in order to find out if the current classdoc is from
-   * a real <CODE>TestCase</CODE>.
-   */
-  private static boolean isJUnitTest(ClassDoc clsDoc) {
-    if (clsDoc.isInterface()) {
-      return false;
-    }
-
-    ClassDoc superCls = clsDoc.superclass();
-
-    while (null != superCls
-        && !"java.lang.Object".equals(superCls.qualifiedTypeName())) {
-      if ("junit.framework.TestCase".equals(superCls.qualifiedTypeName())
-          || "TestCase".equals(superCls.typeName())) {
-        return true;
-      }
-
-      superCls = superCls.superclass();
-    }
-
-    return false;
-  }
-
-  private static boolean isTest(MethodDoc md) {
-    return md.name().startsWith("test");
-  }
-
-  private static boolean isSetUp(MethodDoc md) {
-    return "setUp".equals(md.name());
-  }
-
-  private static boolean isTearDown(MethodDoc md) {
-    return "tearDown".equals(md.name());
-  }
-
-  public int convert() {
-    if (!m_done) {
-      return -1;
-    }
-
-    int converted = 0;
-    for (File file : m_files.keySet()) {
-      try {
-        List<String> lines = fileToLines(file);
-        List<String> finalLines = m_useAnnotations ? insertAnnotations(m_files
-            .get(file), lines) : insertJavadoc(file, m_files
-            .get(file), lines);
-
-        m_fileLines.put(file, finalLines);
-
-        writeFile(file);
-        converted++;
-      }
-      catch (IOException ioe) {
-        ppp("failed to process " + file);
-        ioe.printStackTrace();
-      }
-    }
-
-    return converted;
-  }
-
-  private void writeFile(File filePath) {
-    String fileName = filePath.getName();
-    File file = new File(getPackageOutputDir(m_outDir, m_packageNames.get(filePath)), fileName);
-    File parentDir = file.getParentFile();
-
-    parentDir.mkdirs();
-
-    FileWriter fw = null;
-    BufferedWriter bw = null;
-    try {
-      fw = new FileWriter(file);
-      bw = new BufferedWriter(fw);
-
-      List<String> lines = m_fileLines.get(filePath);
-      assert null != lines : "NO LINES FOR " + filePath;
-
-      for (String l : lines) {
-        bw.write(l);
-        bw.write('\n');
-      }
-
-      ppp("Wrote " + file.getAbsolutePath());
-    }
-    catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      try {
-        if (null != bw) {
-          bw.close();
-        }
-      }
-      catch (IOException ioe) {
-      }
-      try {
-        if (null != fw) {
-          fw.close();
-        }
-      }
-      catch (IOException ioe) {
-      }
-    }
-  }
-
-  private List<String> insertAnnotations(List<MethodDoc> methodDocs,
-      List<String> lines) {
-    //
-    // Add import
-    //
-    int lineCount = 0;
-    for (String line : lines) {
-      lineCount++;
-      line = line.trim();
-      if(line.startsWith("import")) {
-        lines.add(lineCount - 1, "import org.testng.annotations.Test;");
-        lines.add(lineCount - 1, "import org.testng.annotations.BeforeMethod;");
-        lines.add(lineCount - 1, "import org.testng.annotations.AfterMethod;");
-        break;
-      }
-    }
-    
-    String groupsLine = createGroupsLine(m_groups);
-
-    //
-    // Add annotations
-    //
-    for (MethodDoc md : methodDocs) {
-      SourcePosition sp = md.position();
-      int line = sp.line() + 2;
-      if (isTest(md)) {
-        lines.add(line, "  @Test" + groupsLine);
-      } 
-      else if (isSetUp(md)) {
-        ppp("ADDING NEW BEFORE AT " + line);
-        lines.add(line, "  @BeforeMethod" + groupsLine);
-      } 
-      else if (isTearDown(md)) {
-        lines.add(line, "  @AfterMethod" + groupsLine);
-      }
-    }
-
-    return lines;
-  }
-
-  private String createGroupsLine(String[] groups) {
-    StringBuffer result = new StringBuffer();
-    
-    if (groups != null) {
-      result.append("(groups = {");
-      for (int i = 0; i < groups.length; i++) {
-        if (i > 0) result.append(", ");
-        result.append("\""+ groups[i] + "\"");
-      }
-      result.append("})");
-    }
-     
-    return result.toString();
-  }
-
-  private List<String> insertJavadoc(File file,
-      List<MethodDoc> methodDocs, List<String> lines) {
-    for (int i = 0; i < methodDocs.size(); i++) {
-      MethodDoc md = methodDocs.get(i);
-
-      int insertLineNo;
-
-      if (i + 1 < methodDocs.size()) {
-        insertLineNo = findCommentLine(lines, md, methodDocs.get(i + 1)
-            .position().line());
-      } else {
-        insertLineNo = findCommentLine(lines, md, m_typelines.get(file)
-            .intValue());
-      }
-
-      int realInsert = insertLineNo == 0 ? md.position().line() - 1
-          : insertLineNo;
-
-      if (insertLineNo == 0) {
-        lines.add(realInsert, "    */");
-      }
-
-      if (isTest(md)) {
-        lines.add(realInsert, "    * @testng.test");
-      } else if (isSetUp(md)) {
-        lines.add(realInsert,
-            "    * @testng.before-method");
-      } else if (isTearDown(md)) {
-        lines.add(realInsert,
-            "    * @testng.after-method");
-      }
-
-      if (insertLineNo == 0) {
-        lines.add(realInsert, "   /**");
-      }
-    }
-
-    return lines;
-  }
-
-  private File getPackageOutputDir(File outDir, String packageName) {
-    if (packageName == null) packageName = "";
-    return new File(outDir, packageName.replace('.', File.separatorChar));
-  }
-
-  private int findCommentLine(List<String> lines, MethodDoc md, int minLine) {
-    for (int i = md.position().line() - 1; i > minLine; i--) {
-      String line = lines.get(i);
-      if (line.indexOf("*/") != -1 && line.indexOf("/**") == -1) {
-        return i;
-      } else if (line.indexOf("*/") != -1 && line.indexOf("/**") != -1) { 
-        // HINT /** and */ on same line: must split
-        StringBuffer buf = new StringBuffer(line);
-        int idx = buf.indexOf("*/");
-        buf.deleteCharAt(idx).deleteCharAt(idx);
-        lines.set(i, buf.toString());
-        lines.add(i + 1, "    */");
-
-        return i + 1;
-      }
-    }
-
-    return 0;
-  }
-
-  /**
-   * Convert a file into a list of its lines
-   * 
-   * @throws IOException
-   */
-  private List<String> fileToLines(File file) throws IOException {
-    List<String> result = Lists.newArrayList();
-    BufferedReader br = new BufferedReader(new FileReader(file));
-
-    String line = br.readLine();
-    while (null != line) {
-      result.add(line);
-      line = br.readLine();
-    }
-
-    return result;
-  }
-
-  static private void ppp(String s) {
-    if (JUnitConverter.getLogLevel() >= 1) {
-      System.out.println("[JUnitTestConverter]" + s);
-    }
-  }
-
-  public String[] getClassNames() {
-    return m_classNames.toArray(new String[m_classNames.size()]);
-  }
-
-}
diff --git a/src/org/testng/junit/JUnitTestRunner.java b/src/org/testng/junit/JUnitTestRunner.java
deleted file mode 100755
index 65ba2da..0000000
--- a/src/org/testng/junit/JUnitTestRunner.java
+++ /dev/null
@@ -1,264 +0,0 @@
-package org.testng.junit;
-
-
-import org.testng.ITestListener;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.internal.ITestResultNotifier;
-import org.testng.internal.InvokedMethod;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestListener;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-/**
- * A JUnit TestRunner that records/triggers all information/events necessary to TestNG.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class JUnitTestRunner implements TestListener, IJUnitTestRunner {
-  public static final String SUITE_METHODNAME = "suite";
-
-  private ITestResultNotifier m_parentRunner;
-
-  private Map<Test, TestRunInfo> m_tests= new WeakHashMap<Test, TestRunInfo>();
-  private List<ITestNGMethod> m_methods= Lists.newArrayList();
-  
-  public JUnitTestRunner() {
-  }
-  
-  public JUnitTestRunner(ITestResultNotifier tr) {
-    m_parentRunner= tr;
-  }
-
-  /**
-   * Needed from TestRunner in order to figure out what JUnit test methods were run.
-   * 
-   * @return the list of all JUnit test methods run
-   */
-  public List<ITestNGMethod> getTestMethods() {
-    return m_methods;
-  }
-  
-  public void setTestResultNotifier(ITestResultNotifier notifier) {
-    m_parentRunner= notifier;
-  }
-  
-  /**
-   * @see junit.framework.TestListener#startTest(junit.framework.Test)
-   */
-  public void startTest(Test test) {
-    m_tests.put(test, new TestRunInfo(Calendar.getInstance().getTimeInMillis())); 
-  }
-
-
-  /**
-   * @see junit.framework.TestListener#addError(junit.framework.Test, java.lang.Throwable)
-   */
-  public void addError(Test test, Throwable t) {
-    recordFailure(test, t);
-  }
-
-  /**
-   * @see junit.framework.TestListener#addFailure(junit.framework.Test, junit.framework.AssertionFailedError)
-   */
-  public void addFailure(Test test, AssertionFailedError t) {
-    recordFailure(test, t);
-  }
-
-  private void recordFailure(Test test, Throwable t) {
-    TestRunInfo tri= m_tests.get(test);
-    if(null != tri) {
-      tri.setThrowable(t);
-    }
-  }
-  
-  /**
-   * @see junit.framework.TestListener#endTest(junit.framework.Test)
-   */
-  public void endTest(Test test) {
-    TestRunInfo tri= m_tests.get(test);
-    if(null == tri) {
-      return; // HINT: this should never happen. How do I protect myself?
-    }
-    
-    org.testng.internal.TestResult tr= recordResults(test, tri);
-    
-    runTestListeners(tr, m_parentRunner.getTestListeners());
-  }
-
-  private org.testng.internal.TestResult recordResults(Test test, TestRunInfo tri)  {
-    JUnitUtils.JUnitTestClass tc= new JUnitUtils.JUnitTestClass(test);
-    JUnitUtils.JUnitTestMethod tm= new JUnitUtils.JUnitTestMethod(test, tc);
-    
-    org.testng.internal.TestResult tr= new org.testng.internal.TestResult(tc, 
-                                                                          test, 
-                                                                          tm, 
-                                                                          tri.m_failure, 
-                                                                          tri.m_start, 
-                                                                          Calendar.getInstance().getTimeInMillis());
-
-    if(tri.isFailure()) {
-      tr.setStatus(ITestResult.FAILURE);
-      m_parentRunner.addFailedTest(tm, tr);
-    }
-    else {
-      m_parentRunner.addPassedTest(tm, tr);
-    }
-    
-    m_parentRunner.addInvokedMethod(new InvokedMethod(test, tm, new Object[0], true, false, tri.m_start));
-    m_methods.add(tm);
-    
-    return tr;
-  }
-  
-  private static void runTestListeners(ITestResult tr, List<ITestListener> listeners) {
-    for (ITestListener itl : listeners) {
-      switch(tr.getStatus()) {
-        case ITestResult.SKIP: {
-          itl.onTestSkipped(tr);
-          break;
-        }
-        case ITestResult.SUCCESS_PERCENTAGE_FAILURE: {
-          itl.onTestFailedButWithinSuccessPercentage(tr);
-          break;
-        }
-        case ITestResult.FAILURE: {
-          itl.onTestFailure(tr);
-          break;
-        }
-        case ITestResult.SUCCESS: {
-          itl.onTestSuccess(tr);
-          break;
-        }
-
-        case ITestResult.STARTED: {
-          itl.onTestStart(tr);
-          break;
-        }
-
-        default: {
-          assert false : "UNKNOWN STATUS:" + tr;
-        }
-      }
-    }
-  }
-  
-  /**
-   * Returns the Test corresponding to the given suite. This is
-   * a template method, subclasses override runFailed(), clearStatus().
-   */
-  protected Test getTest(Class testClass) {
-    Method suiteMethod = null;
-    try {
-      suiteMethod = testClass.getMethod(SUITE_METHODNAME, new Class[0]);
-    }
-    catch (Exception e) {
-
-      // try to extract a test suite automatically
-      return new TestSuite(testClass);
-    }
-    if (!Modifier.isStatic(suiteMethod.getModifiers())) {
-      runFailed(testClass, "suite() method must be static");
-
-      return null;
-    }
-    Test test = null;
-    try {
-      test = (Test) suiteMethod.invoke(null, (Object[]) new Class[0]); // static method
-      if (test == null) {
-        return test;
-      }
-    }
-    catch (InvocationTargetException e) {
-      runFailed(testClass, "failed to invoke method suite():" + e.getTargetException().toString());
-
-      return null;
-    }
-    catch (IllegalAccessException e) {
-      runFailed(testClass, "failed to invoke method suite():" + e.toString());
-
-      return null;
-    }
-
-    return test;
-  }
-
-  /**
-   * A <code>start</code> implementation that ignores the <code>TestResult</code>
-   * @param testClass the JUnit test class
-   */
-  public void run(Class testClass) {
-    start(testClass);
-  }
-  
-  /**
-   * Starts a test run. Analyzes the command line arguments and runs the given
-   * test suite.
-   */
-  public TestResult start(Class testCase) {
-    try {
-      Test suite = getTest(testCase);
-
-      if(null != suite) {
-        return doRun(suite);
-      }
-      else {
-        runFailed(testCase, "could not create/run JUnit test suite");
-      }
-    }
-    catch (Exception e) {
-      runFailed(testCase, "could not create/run JUnit test suite: " + e.getMessage());
-    }
-    
-    return null;
-  }
-
-  protected void runFailed(Class clazz, String message) {
-    throw new TestNGException("Failure in JUnit mode for class " + clazz.getName() + ": " + message);
-  }
-
-  /**
-   * Creates the TestResult to be used for the test run.
-   */
-  protected TestResult createTestResult() {
-    return new TestResult();
-  }
-
-  protected TestResult doRun(Test suite) {
-    TestResult result = createTestResult();
-    result.addListener(this);
-    suite.run(result);
-
-    return result;
-  }
-  
-  private static class TestRunInfo {
-    private final long m_start;
-    private Throwable m_failure;
-    
-    public TestRunInfo(long start) {
-      m_start= start;
-    }
-
-    public boolean isFailure() {
-      return null != m_failure;
-    }
-    
-    public void setThrowable(Throwable t) {
-      m_failure= t;
-    }
-  }
-}
diff --git a/src/org/testng/junit/JUnitUtils.java b/src/org/testng/junit/JUnitUtils.java
deleted file mode 100755
index a250833..0000000
--- a/src/org/testng/junit/JUnitUtils.java
+++ /dev/null
@@ -1,592 +0,0 @@
-package org.testng.junit;
-
-import org.testng.IClass;
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestClass;
-import org.testng.ITestNGMethod;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-
-/**
- * Help methods for JUnit
- * 
- * @author cbeust
- * @date Jan 14, 2006
- */
-public class JUnitUtils {
-  private static final String[] EMTPY_STRINGARRAY= new String[0];
-  private static final ITestNGMethod[] EMPTY_METHODARRAY= new ITestNGMethod[0];
-  
-  /**
-   * An <code>ITestNMethod</code> implementation for test methods in JUnit.
-   * 
-   * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
-   */
-  public static class JUnitTestMethod implements ITestNGMethod {
-    private final ITestClass m_testClass;
-    private final Class m_methodClass;
-    private final Object[] m_instances;
-    private final long[] m_instanceHashes;
-    private Method m_method;
-    private String m_methodName= "N/A";
-    private String m_signature;
-    private int m_currentInvocationCount = 0;
-    private int m_parameterInvocationCount = 0;
-    private List<Integer> m_invocationNumbers;
-
-    private long m_date;
-    private String m_id;
-    
-    private IRetryAnalyzer retryAnalyzer = null;
-    private List<Integer> m_failedInvocationNumbers;
-    
-    public JUnitTestMethod(Test test, JUnitTestClass testClass) {
-      m_testClass= testClass;
-      m_instances= new Object[] {test};
-      m_instanceHashes= new long[] {test.hashCode()};
-      m_methodClass= test.getClass();
-
-      init(test);
-      testClass.getTestMethodList().add(this);
-    }
-    
-    private void init(Test test) {
-      if(TestCase.class.isAssignableFrom(test.getClass())) {
-        TestCase tc= (TestCase) test;
-
-        m_methodName= tc.getName();
-        m_signature= m_methodClass.getName() + "." + m_methodName + "()";
-        try {
-          m_method= test.getClass().getMethod(tc.getName(), new Class[0]);
-        }
-        catch(Exception ex) {
-          throw new TestNGException("cannot retrieve JUnit method", ex);
-        }
-      }
-    }
-    
-    /**
-     * @see org.testng.ITestNGMethod#getDate()
-     */
-    public long getDate() {
-      return m_date;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getDescription()
-     */
-    public String getDescription() {
-      return "";
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getId()
-     */
-    public String getId() {
-      return m_id;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getInstanceHashCodes()
-     */
-    public long[] getInstanceHashCodes() {
-      return m_instanceHashes;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getInstances()
-     */
-    public Object[] getInstances() {
-      return m_instances;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getMethod()
-     */
-    public Method getMethod() {
-      return m_method;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getMethodName()
-     */
-    public String getMethodName() {
-      return m_methodName;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getRealClass()
-     */
-    public Class getRealClass() {
-      return m_methodClass;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#setDate(long)
-     */
-    public void setDate(long date) {
-      m_date= date;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#setId(long)
-     */
-    public void setId(String id) {
-      m_id= id;
-    }
-
-    public int compareTo(Object o) {
-      int result = -2;
-      Class thisClass = getRealClass();
-      Class otherClass = ((ITestNGMethod) o).getRealClass();
-      if (thisClass.isAssignableFrom(otherClass)) 
-        result = -1;
-      else if (otherClass.isAssignableFrom(thisClass)) 
-        result = 1;
-      else if (equals(o)) 
-        result = 0;
-      
-      return result;
-    }
-
-    // default values
-    /**
-     * @see org.testng.ITestNGMethod#isTest()
-     */
-    public boolean isTest() {
-      return true;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#canRunFromClass(org.testng.IClass)
-     */
-    public boolean canRunFromClass(IClass testClass) {
-      throw new IllegalStateException("canRunFromClass is not supported for JUnit");
-    }
-
-
-    /**
-     * @see org.testng.ITestNGMethod#setTestClass(org.testng.ITestClass)
-     */
-    public void setTestClass(ITestClass cls) {
-      throw new IllegalStateException("setTestClass is not supported for JUnit");
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getTestClass()
-     */
-    public ITestClass getTestClass() {
-      return m_testClass;
-    }
-
-
-    /**
-     * @see org.testng.ITestNGMethod#addMethodDependedUpon(java.lang.String)
-     */
-    public void addMethodDependedUpon(String methodName) {
-      throw new IllegalStateException("addMethodDependedUpon is not supported for JUnit");
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#setMissingGroup(java.lang.String)
-     */
-    public void setMissingGroup(String group) {
-      throw new IllegalStateException("setMissingGroup is not supported for JUnit");
-    }
-
-
-    /**
-     * @see org.testng.ITestNGMethod#getAfterGroups()
-     */
-    public String[] getAfterGroups() {
-      return EMTPY_STRINGARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getBeforeGroups()
-     */
-    public String[] getBeforeGroups() {
-      return EMTPY_STRINGARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getGroups()
-     */
-    public String[] getGroups() {
-      return EMTPY_STRINGARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getGroupsDependedUpon()
-     */
-    public String[] getGroupsDependedUpon() {
-      return EMTPY_STRINGARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getInvocationCount()
-     */
-    public int getInvocationCount() {
-      return 1;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getMethodsDependedUpon()
-     */
-    public String[] getMethodsDependedUpon() {
-      return EMTPY_STRINGARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getMissingGroup()
-     */
-    public String getMissingGroup() {
-      return null;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getSuccessPercentage()
-     */
-    public int getSuccessPercentage() {
-      return 100;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getThreadPoolSize()
-     */
-    public int getThreadPoolSize() {
-      return 1;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#getTimeOut()
-     */
-    public long getTimeOut() {
-      return 0L;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isAfterClassConfiguration()
-     */
-    public boolean isAfterClassConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isAfterGroupsConfiguration()
-     */
-    public boolean isAfterGroupsConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isAfterMethodConfiguration()
-     */
-    public boolean isAfterMethodConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isAfterSuiteConfiguration()
-     */
-    public boolean isAfterSuiteConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isAfterTestConfiguration()
-     */
-    public boolean isAfterTestConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isAlwaysRun()
-     */
-    public boolean isAlwaysRun() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isBeforeClassConfiguration()
-     */
-    public boolean isBeforeClassConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isBeforeGroupsConfiguration()
-     */
-    public boolean isBeforeGroupsConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isBeforeMethodConfiguration()
-     */
-    public boolean isBeforeMethodConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isBeforeSuiteConfiguration()
-     */
-    public boolean isBeforeSuiteConfiguration() {
-      return false;
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#isBeforeTestConfiguration()
-     */
-    public boolean isBeforeTestConfiguration() {
-      return false;
-    }
-    
-    public int getCurrentInvocationCount() {
-      return m_currentInvocationCount;
-    }
-    
-    public void incrementCurrentInvocationCount() {
-      m_currentInvocationCount++;
-    }
-    
-    public void setParameterInvocationCount(int n) {
-      m_parameterInvocationCount = n;
-    }
-
-    public int getParameterInvocationCount() {
-      return m_parameterInvocationCount;
-    }
-
-    public String toString() {
-      return m_signature;
-    }
-    
-    public ITestNGMethod clone() {
-      throw new IllegalStateException("clone is not supported for JUnit"); 
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#setInvocationCount(int)
-     */
-    public void setInvocationCount(int count) {
-      throw new IllegalStateException("setInvocationCount is not supported for JUnit");
-    }
-
-    /**
-     * @see org.testng.ITestNGMethod#setThreadPoolSize(int)
-     */
-    public void setThreadPoolSize(int threadPoolSize) {
-      throw new IllegalStateException("setThreadPoolSize is not supported for JUnit");
-    }
-
-    public IRetryAnalyzer getRetryAnalyzer() {
-      return retryAnalyzer;
-    }
-
-    public void setRetryAnalyzer(IRetryAnalyzer retryAnalyzer) {
-      this.retryAnalyzer = retryAnalyzer;
-    }
-
-    public void setSkipFailedInvocations(boolean skip) {
-      // nop
-    }
-
-    public boolean skipFailedInvocations() {
-      return false;
-    }
-
-    public void setIgnoreMissingDependencies(boolean ignore) {
-      // nop
-    }
-
-    public boolean ignoreMissingDependencies() {
-      return false;
-    }
-    
-    public boolean isFirstTimeOnly() {
-      return false;
-    }
-
-    public boolean isLastTimeOnly() {
-      return false;
-    }
-
-    public long getInvocationTimeOut() {
-      return 0;
-    }
-
-    public List<Integer> getInvocationNumbers() {
-      return m_invocationNumbers;
-    }
-
-    public void setInvocationNumbers(List<Integer> count) {
-      m_invocationNumbers = count;
-    }
-
-    public List<Integer> getFailedInvocationNumbers() {
-      return m_failedInvocationNumbers;
-    }
-
-    public void addFailedInvocationNumber(int number) {
-      m_failedInvocationNumbers.add(number);
-    }
-
-    public int getPriority() {
-      return 0;
-    }
-    
-    public void setPriority(int priority) {
-      // ignored
-    }
-
-  }
-  
-  /**
-   * An <code>ITestClass</code> implementation for test methods in JUnit.
-   * 
-   * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
-   */
-  public static class JUnitTestClass implements ITestClass {
-    private List<ITestNGMethod> m_testMethods= Lists.newArrayList();
-    private Class m_realClass;
-    private Object[] m_instances;
-    private long[] m_instanceHashes;
-
-    public JUnitTestClass(Test test) {
-      m_realClass= test.getClass();
-      m_instances= new Object[] {test};
-      m_instanceHashes= new long[] {test.hashCode()};
-    }
-    
-    List<ITestNGMethod> getTestMethodList() {
-      return m_testMethods;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getInstanceCount()
-     */
-    public int getInstanceCount() {
-      return 1;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getInstanceHashCodes()
-     */
-    public long[] getInstanceHashCodes() {
-      return m_instanceHashes;
-    }
-
-    public Object[] getInstances(boolean reuse) {
-      return m_instances;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getTestMethods()
-     */
-    public ITestNGMethod[] getTestMethods() {
-      return m_testMethods.toArray(new ITestNGMethod[m_testMethods.size()]);
-    }
-
-    /**
-     * @see org.testng.ITestClass#getAfterClassMethods()
-     */
-    public ITestNGMethod[] getAfterClassMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getAfterGroupsMethods()
-     */
-    public ITestNGMethod[] getAfterGroupsMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getAfterSuiteMethods()
-     */
-    public ITestNGMethod[] getAfterSuiteMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getAfterTestConfigurationMethods()
-     */
-    public ITestNGMethod[] getAfterTestConfigurationMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getAfterTestMethods()
-     */
-    public ITestNGMethod[] getAfterTestMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getBeforeClassMethods()
-     */
-    public ITestNGMethod[] getBeforeClassMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getBeforeGroupsMethods()
-     */
-    public ITestNGMethod[] getBeforeGroupsMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getBeforeSuiteMethods()
-     */
-    public ITestNGMethod[] getBeforeSuiteMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getBeforeTestConfigurationMethods()
-     */
-    public ITestNGMethod[] getBeforeTestConfigurationMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.ITestClass#getBeforeTestMethods()
-     */
-    public ITestNGMethod[] getBeforeTestMethods() {
-      return EMPTY_METHODARRAY;
-    }
-
-    /**
-     * @see org.testng.IClass#addInstance(java.lang.Object)
-     */
-    public void addInstance(Object instance) {
-      throw new IllegalStateException("addInstance is not supported for JUnit");
-    }
-
-    /**
-     * @see org.testng.IClass#getName()
-     */
-    public String getName() {
-      return m_realClass.getName();
-    }
-
-    /**
-     * @see org.testng.IClass#getRealClass()
-     */
-    public Class getRealClass() {
-      return m_realClass;
-    }
-
-    public String getTestName() {
-      return null;
-    }
-  }
-}
diff --git a/src/org/testng/log/TextFormatter.java b/src/org/testng/log/TextFormatter.java
deleted file mode 100755
index 4938827..0000000
--- a/src/org/testng/log/TextFormatter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.testng.log;
-
-import java.util.logging.LogRecord;
-import java.util.logging.SimpleFormatter;
-
-
-/**
- * This class implements a simple TextFormatter because the brainded
- * default formatter of java.util.logging outputs everything on two
- * lines and it's ugly as butt.
- *
- * @author Cedric Beust, May 2, 2004
- * 
- */
-public class TextFormatter extends SimpleFormatter {
-  @Override
-  public synchronized String format(LogRecord record) {
-    StringBuffer result = new StringBuffer();
-    
-    result.append(record.getMessage()).append("\n");
-    
-    return result.toString();
-  }
-
-}
diff --git a/src/org/testng/log4testng/Logger.java b/src/org/testng/log4testng/Logger.java
deleted file mode 100755
index 7b2d9bd..0000000
--- a/src/org/testng/log4testng/Logger.java
+++ /dev/null
@@ -1,723 +0,0 @@
-package org.testng.log4testng;
-
-
-import org.testng.Assert;
-import org.testng.collections.Maps;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintStream;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Map.Entry;
-
-/**
- * TestNG support logging via a custom logging framework similar to
- * <a href="http://logging.apache.org/log4j"> Log4j</a>. To control logging, add a
- * resource named "log4testng.properties" to your classpath. The logging levels are
- * TRACE, DEBUG, INFO, WARN, ERROR and FATAL.
- * The Logging framework has the following characteristics:
- *
- * <ul>
- * <li>All logging is done using System.out (for levels < ERROR) or System.err. There
- * is no way to specify Appenders.</li>
- * <li>There is no way to control logging programmatically.</li>
- * <li>The log4testng.properties resource is searched in the classpath on the first
- * call to the logging API. If it is not present, logging defaults to the WARN
- * level.</li>
- * </ul>
- *
- * The property file contains lines in the following format:
- *
- * <pre><code>
- * # log4testng will log its own behavior (generally used for debugging this package only).
- * log4testng.debug=true
- *
- * # Specifies the root Loggers logging level. Will log DEBUG level and above
- * log4testng.rootLogger=DEBUG
- *
- * # The org.testng.reporters.EmailableReporter Logger will log TRACE level and above
- * log4testng.logger.org.testng.reporters.EmailableReporter=TRACE
- *
- * # All Logger in packages below org.testng will log WARN level and above
- * log4testng.logger.org.testng=WARN
- * </code></pre>
- *
- * In your source files you will typically instantiate and use loggers this ways:
- * <pre><code>
- * import org.testng.log4testng.Logger;
- *
- * class ThisClass {
- *     private static final Logger LOGGER = Logger.getLogger(ThisClass.class);
- *
- *     ...
- *     LOGGER.debug("entering myMethod()");
- *     ...
- *     LOGGER.warn("unknown file: " + filename);
- *     ...
- *     LOGGER.error("Unexpected error", exception);
- * </code></pre>
- */
-public class Logger {
-
-  // Attribute an hierarchical integer value to all levels.
-  private static int i= 0;
-  private static final int TRACE= i++;
-  private static final int DEBUG= i++;
-  private static final int INFO= i++;
-  private static final int WARN= i++;
-  private static final int ERROR= i++;
-  private static final int FATAL= i++;
-  private static final int LEVEL_COUNT= i;
-
-  /** Standard prefix of all property names in log4testng.properties. */
-  private static final String PREFIX= "log4testng.";
-
-  /** Standard prefix of all logger names in log4testng.properties. */
-  private static final String LOGGER_PREFIX= PREFIX + "logger.";
-
-  /** Root logger name in log4testng.properties. */
-  private static final String ROOT_LOGGER= PREFIX + "rootLogger";
-
-  /** Debug property name in log4testng.properties. */
-  private static final String DEBUG_PROPERTY= PREFIX + "debug";
-
-  /** The standard error stream (this is allways System.err except for unit tests) */
-  private static PrintStream err= System.err;
-
-  /** The standard output stream (this is allways System.out except for unit tests) */
-  private static PrintStream out= System.out;
-
-  /** An ordered list of level names. */
-  private static final String[] levelNames= new String[LEVEL_COUNT];
-
-  static {
-    levelNames[TRACE]= "TRACE";
-    levelNames[DEBUG]= "DEBUG";
-    levelNames[INFO]= "INFO";
-    levelNames[WARN]= "WARN";
-    levelNames[ERROR]= "ERROR";
-    levelNames[FATAL]= "FATAL";
-  }
-
-  /** A map from level name to level integer index (TRACE->0, DEBUG->1 ...) */
-  private static final Map<String, Integer> levelMap= Maps.newHashMap();
-
-  static {
-    for(i= 0; i < LEVEL_COUNT; ++i) {
-      levelMap.put(levelNames[i], new Integer(i));
-    }
-  }
-
-  /** true if the Logging system has been initialized. */
-  private static boolean initialized;
-
-  /** Map from Logger names to level index (as specified in log4testng.properties) */
-  private static final Map<String, Integer> loggerLevels = Maps.newHashMap();
-
-  /** Map of all known loggers. */
-  private static final Map<Class, Logger> loggers = Maps.newHashMap();
-
-  /** The logging level of the root logger (defaults to warn). */
-  private static int rootLoggerLevel= WARN;
-
-  /** Should log4testng log what it is doing (defaults to false). */
-  private static boolean debug= false;
-
-  /** The logger's level */
-  private final int level;
-
-  /** The logger's name. */
-  private final Class klass;
-  private final String m_className;
-
-  /**
-   * Retrieve a logger named according to the value of the pClass.getName()
-   * parameter. If the named logger already exists, then the existing instance
-   * will be returned. Otherwise, a new instance is created. By default, loggers
-   * do not have a set level but inherit it from their nearest ancestor with
-   * a set level.
-   *
-   * @param pClass The class' logger to retrieve.
-   * @return a logger named according to the value of the pClass.getName().
-   */
-  public static synchronized Logger getLogger(Class pClass) {
-    initialize();
-    Logger logger= loggers.get(pClass);
-    if(logger != null) {
-      return logger;
-    }
-    int level= getLevel(pClass);
-    logger= new Logger(pClass, level);
-    loggers.put(pClass, logger);
-
-    return logger;
-  }
-
-  /**
-   * Check whether this logger is enabled for the TRACE Level.
-   * @return true if this logger is enabled for level TRACE, false otherwise.
-   */
-  public boolean isTraceEnabled() {
-    return isLevelEnabled(TRACE);
-  }
-
-  /**
-   * Log a message object with the TRACE level. This method first checks if this
-   * logger is TRACE enabled. If this logger is TRACE enabled, then it converts
-   * the message object (passed as parameter) to a string by invoking toString().
-   * WARNING Note that passing a Throwable to this method will print the name of
-   * the Throwable but no stack trace. To print a stack trace use the
-   * trace(Object, Throwable) form instead.
-   * @param message the message object to log.
-   */
-  public void trace(Object message) {
-    log(TRACE, message, null);
-  }
-
-  /**
-   * Log a message object with the TRACE level including the stack trace of the
-   * Throwable t passed as parameter.
-   * See Logger.trace(Object) form for more detailed information.
-   * @param message the message object to log.
-   * @param t the exception to log, including its stack trace.
-   */
-  public void trace(Object message, Throwable t) {
-    log(TRACE, message, t);
-  }
-
-  /**
-   * Check whether this logger is enabled for the DEBUG Level.
-   * @return true if this logger is enabled for level DEBUG, false otherwise.
-   */
-  public boolean isDebugEnabled() {
-    return isLevelEnabled(DEBUG);
-  }
-
-  /**
-   * Log a message object with the DEBUG level.
-   * See Logger.trace(Object) form for more detailed information.
-   * @param message the message object to log.
-   */
-  public void debug(Object message) {
-    log(DEBUG, message, null);
-  }
-
-  /**
-   * Log a message object with the DEBUG level including the stack trace of the
-   * Throwable t passed as parameter.
-   * See Logger.trace(Object, Throwable) form for more detailed information.
-   * @param message the message object to log.
-   * @param t the exception to log, including its stack trace.
-   */
-  public void debug(Object message, Throwable t) {
-    log(DEBUG, message, t);
-  }
-
-  /**
-   * Check whether this logger is enabled for the INFO Level.
-   * @return true if this logger is enabled for level INFO, false otherwise.
-   */
-  public boolean isInfoEnabled() {
-    return isLevelEnabled(INFO);
-  }
-
-  /**
-   * Log a message object with the INFO level.
-   * See Logger.trace(Object) form for more detailed information.
-   * @param message the message object to log.
-   */
-  public void info(Object message) {
-    log(INFO, message, null);
-  }
-
-  /**
-   * Log a message object with the WARN level including the stack trace of the
-   * Throwable t passed as parameter.
-   * See Logger.trace(Object, Throwable) form for more detailed information.
-   * @param message the message object to log.
-   * @param t the exception to log, including its stack trace.
-   */
-  public void info(Object message, Throwable t) {
-    log(INFO, message, t);
-  }
-
-  /**
-   * Log a message object with the WARN level.
-   * See Logger.trace(Object) form for more detailed information.
-   * @param message the message object to log.
-   */
-  public void warn(Object message) {
-    log(WARN, message, null);
-  }
-
-  /**
-   * Log a message object with the ERROR level including the stack trace of the
-   * Throwable t passed as parameter.
-   * See Logger.trace(Object, Throwable) form for more detailed information.
-   * @param message the message object to log.
-   * @param t the exception to log, including its stack trace.
-   */
-  public void warn(Object message, Throwable t) {
-    log(WARN, message, t);
-  }
-
-  /**
-   * Log a message object with the ERROR level.
-   * See Logger.trace(Object) form for more detailed information.
-   * @param message the message object to log.
-   */
-  public void error(Object message) {
-    log(ERROR, message, null);
-  }
-
-  /**
-   * Log a message object with the DEBUG level including the stack trace of the
-   * Throwable t passed as parameter.
-   * See Logger.trace(Object, Throwable) form for more detailed information.
-   * @param message the message object to log.
-   * @param t the exception to log, including its stack trace.
-   */
-  public void error(Object message, Throwable t) {
-    log(ERROR, message, t);
-  }
-
-  /**
-   * Log a message object with the FATAL level.
-   * See Logger.trace(Object) form for more detailed information.
-   * @param message the message object to log.
-   */
-  public void fatal(Object message) {
-    log(FATAL, message, null);
-  }
-
-  /**
-   * Log a message object with the FATAL level including the stack trace of the
-   * Throwable t passed as parameter.
-   * See Logger.trace(Object, Throwable) form for more detailed information.
-   * @param message the message object to log.
-   * @param t the exception to log, including its stack trace.
-   */
-  public void fatal(Object message, Throwable t) {
-    log(FATAL, message, t);
-  }
-
-  private Logger(Class pClass, int pLevel) {
-    level= pLevel;
-    klass= pClass;
-    m_className= pClass.getName().substring(pClass.getName().lastIndexOf('.') + 1);
-  }
-
-  private static synchronized void initialize() {
-    if(initialized) {
-      return;
-    }
-
-    // We flag as initialized right away because if anything goes wrong
-    // We still consider it initialized. TODO Is this OK?
-    initialized= true;
-
-    InputStream is= Thread.currentThread().getContextClassLoader().getResourceAsStream("log4testng.properties");
-    if(is == null) {
-      return;
-    }
-    Properties properties= new Properties();
-    try {
-      properties.load(is);
-    }
-    catch(IOException e) {
-      throw new RuntimeException(e);
-    }
-
-    checkProperties(properties);
-  }
-
-  private static void checkProperties(Properties pProperties) {
-    {
-      // See if we want to debug log4testng
-      String debugStr= pProperties.getProperty(DEBUG_PROPERTY);
-      if(debugStr != null) {
-        if(debugStr.equalsIgnoreCase("true")) {
-          debug= true;
-        }
-        else if(debugStr.equalsIgnoreCase("false")) {
-          debug= false;
-        }
-        else {
-          throw new IllegalArgumentException("Unknown " + DEBUG_PROPERTY
-                                             + " value " + debugStr);
-        }
-      }
-      loglog4testng("log4testng.debug set to " + debug);
-    }
-    
-    {
-      // Set the value of the root logger (if any).
-      String rootLevelStr= pProperties.getProperty(ROOT_LOGGER);
-      if(rootLevelStr != null) {
-        Integer ilevel= levelMap.get(rootLevelStr.toUpperCase());
-        if(ilevel == null) {
-          throw new IllegalArgumentException("Unknown level for log4testng.rootLogger "
-                                             + rootLevelStr + " in log4testng.properties");
-        }
-        rootLoggerLevel= ilevel.intValue();
-        loglog4testng("Root level logger set to " + rootLevelStr + " level.");
-      }
-    }
-
-    Iterator it= pProperties.entrySet().iterator();
-    while(it.hasNext()) {
-      Map.Entry entry= (Entry) it.next();
-      String logger= (String) entry.getKey();
-      String level= (String) entry.getValue();
-
-      if(!logger.startsWith(PREFIX)) {
-        throw new IllegalArgumentException("Illegal property value: " + logger);
-      }
-      if(logger.equals(DEBUG_PROPERTY)) {
-        // Already handled
-      }
-      else if(logger.equals(ROOT_LOGGER)) {
-        // Already handled
-      }
-      else {
-        if(!logger.startsWith(LOGGER_PREFIX)) {
-          throw new IllegalArgumentException("Illegal property value: " + logger);
-        }
-
-        Integer ilevel= levelMap.get(level.toUpperCase());
-        if(ilevel == null) {
-          throw new IllegalArgumentException("Unknown level " + level + " for logger " + logger
-                                             + " in log4testng.properties");
-        }
-
-        loggerLevels.put(logger.substring(LOGGER_PREFIX.length()), ilevel);
-        loglog4testng("logger " + logger + " set to " + ilevel + " level.");
-      }
-    }
-  }
-
-  /**
-   * Returns the level associated to the current class. The level is obtain by searching
-   * for a logger in the "testng-logging.properties" resource. For example, if class is
-   * "org.testng.TestNG" the the following loggers are searched in this order:
-   * <ol>
-   * <li>"org.testng.TestNG"</li>
-   * <li>"org.testng"</li>
-   * <li>"org"</li>
-   * <li>The root level</li>
-   * </ol>
-   *
-   * @param pClass the class name used for logger name.
-   * @return the level associated to the current class.
-   */
-  private static int getLevel(Class pClass) {
-    String name= pClass.getName();
-    loglog4testng("Getting level for logger " + name);
-    while(true) {
-      Integer level= loggerLevels.get(name);
-      if(level != null) {
-        loglog4testng("Found level " + level + " for logger " + name);
-
-        return level.intValue();
-      }
-      int dot= name.lastIndexOf('.');
-      if(dot != -1) {
-        loglog4testng("Found level " + rootLoggerLevel + " for root logger");
-
-        // Logger name not found. Defaults to root logger level.
-        return rootLoggerLevel;
-      }
-      name= name.substring(0, dot);
-    }
-  }
-
-  private boolean isLevelEnabled(int pLevel) {
-    return level <= pLevel;
-  }
-
-  private void log(int pLevel, Object pMessage, Throwable pT) {
-    if(isLevelEnabled(pLevel)) {
-      PrintStream ps= (pLevel >= ERROR) ? err : out;
-      if(null != pT) {
-        synchronized(ps) {
-          ps.println("[" + m_className + "] [" + levelNames[pLevel] + "] " + pMessage);
-          pT.printStackTrace(ps);
-        }
-      }
-      else {
-        ps.println("[" + m_className + "] [" + levelNames[pLevel] + "] " + pMessage);
-      }
-    }
-  }
-
-  /**
-   * Logs the message to System.out of debug is on.
-   * @param pmessage the message to log to the console
-   */
-  private static void loglog4testng(String pmessage) {
-    if(debug) {
-      out.println("[log4testng] [debug] " + pmessage);
-    }
-  }
-
-  /**
-   * This method is for debugging purpose only.
-   *
-   * @param pProperties a properties bundle initialised as log4testng
-   * property file would be.
-   * @param pOut the standard output stream to be used for logging.
-   * @param pErr the standard error stream to be used for logging.
-   */
-  private static synchronized void testInitialize(Properties pProperties,
-                                                  PrintStream pOut,
-                                                  PrintStream pErr) {
-    initialized= true;
-    loggers.clear();
-    rootLoggerLevel= WARN;
-    debug= false;
-    out= pOut;
-    err= pErr;
-    checkProperties(pProperties);
-  }
-
-  /**
-   * Makes sure the default debug value is false.
-   */
-  private static void testDebugDefault() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.rootLogger", "WARN");
-    testInitialize(props, out2, err2);
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-  }
-
-  /**
-   * Makes sure the debug value can be turned on and actualls logs something.
-   */
-  private static void testDebugOn() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.debug", "true");
-    props.put("log4testng.rootLogger", "WARN");
-    testInitialize(props, out2, err2);
-    Assert.assertTrue(out1.toString().startsWith("[log4testng][debug]"));
-    Assert.assertEquals(err1.toString(), "");
-  }
-
-  /**
-   * Makes sure the debug value can be turned off and logs nothing.
-   */
-  private static void testDebugOff() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.debug", "false");
-    props.put("log4testng.rootLogger", "WARN");
-    testInitialize(props, out2, err2);
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-  }
-
-  /**
-   * Makes sure an illegal debug value throws an exception.
-   */
-  private static void testDebugError() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.debug", "unknown");
-    props.put("log4testng.rootLogger", "WARN");
-    try {
-      testInitialize(props, out2, err2);
-      throw new RuntimeException("failure");
-    }
-    catch(IllegalArgumentException pEx) {
-
-      // Normal case
-      Assert.assertEquals(out1.toString(), "");
-      Assert.assertEquals(err1.toString(), "");
-    }
-  }
-
-  /**
-   * Tests that the root logger's default level is WARN and that loggers do not
-   * log bellow this level and do log in the correct stream for levels equal to
-   * and above WARN.
-   */
-  private static void testRootLoggerDefault() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    testInitialize(props, out2, err2);
-
-    Logger strLogger= Logger.getLogger(String.class);
-    strLogger.trace("trace should not appear");
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.debug("debug should not appear");
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.info("info should not appear");
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.warn("warn should appear");
-    int outlength= out1.toString().length();
-    Assert.assertTrue(out1.toString().startsWith("[java.lang.String] [WARN] warn should appear"));
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.error("error should appear");
-    Assert.assertEquals(out1.toString().length(), outlength);
-    Assert.assertTrue(err1.toString().startsWith("[java.lang.String] [ERROR] error should appear"));
-    strLogger.fatal("fatal should appear");
-    Assert.assertEquals(out1.toString().length(), outlength);
-    Assert.assertTrue(err1.toString().contains("[java.lang.String] [FATAL] fatal should appear"));
-  }
-
-  /**
-   * Test setting the root logger level
-   */
-  private static void testRootLoggerSet() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.rootLogger", "DEBUG");
-    testInitialize(props, out2, err2);
-
-    Logger strLogger= Logger.getLogger(String.class);
-    strLogger.trace("trace should appear");
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.debug("debug should appear");
-    Assert.assertTrue(out1.toString().startsWith("[java.lang.String] [DEBUG] debug should appear"));
-    Assert.assertEquals(err1.toString(), "");
-  }
-
-  /**
-   * Test setting the root logger to an illegal level value throws an exception.
-   */
-  private static void testRootLoggerSetError() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.rootLogger", "unknown");
-    try {
-      testInitialize(props, out2, err2);
-      throw new RuntimeException("failure");
-    }
-    catch(IllegalArgumentException pEx) {
-
-      // Normal case
-      Assert.assertEquals(out1.toString(), "");
-      Assert.assertEquals(err1.toString(), "");
-    }
-  }
-
-  /**
-   * Test setting a user logger level
-   */
-  private static void testUserLoggerSet() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.logger.java.lang.String", "DEBUG");
-    testInitialize(props, out2, err2);
-
-    Logger strLogger= Logger.getLogger(String.class);
-    strLogger.trace("trace should not appear");
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.debug("debug should appear");
-    int outLength= out1.toString().length();
-    Assert.assertTrue(out1.toString().startsWith("[java.lang.String] [DEBUG] debug should appear"));
-    Assert.assertEquals(err1.toString(), "");
-
-    Logger classLogger= Logger.getLogger(Class.class);
-    classLogger.debug("debug should not appear");
-    Assert.assertEquals(out1.toString().length(), outLength);
-    Assert.assertEquals(err1.toString(), "");
-    classLogger.warn("warn should appear");
-    Assert.assertTrue(out1.toString().contains("[java.lang.Class] [WARN] warn should appear"));
-    Assert.assertEquals(err1.toString(), "");
-  }
-
-  /**
-   * Test setting a user logger to an illegal level value throws an exception
-   */
-  private static void testUserLoggerSetError() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.logger.java.lang.String", "unknown");
-    try {
-      testInitialize(props, out2, err2);
-      throw new RuntimeException("failure");
-    }
-    catch(IllegalArgumentException pEx) {
-
-      // Normal case
-      Assert.assertEquals(out1.toString(), "");
-      Assert.assertEquals(err1.toString(), "");
-    }
-  }
-
-  /**
-   * Tests setting a partial logger name (a hierarchy scope)
-   */
-  private static void testUserLoggerSetHierarchy() {
-    Properties props= new Properties();
-    ByteArrayOutputStream out1= new ByteArrayOutputStream();
-    ByteArrayOutputStream err1= new ByteArrayOutputStream();
-    PrintStream out2= new PrintStream(out1);
-    PrintStream err2= new PrintStream(err1);
-    props.put("log4testng.logger.java.lang", "DEBUG");
-    testInitialize(props, out2, err2);
-
-    Logger strLogger= Logger.getLogger(String.class);
-    strLogger.trace("trace should not appear");
-    Assert.assertEquals(out1.toString(), "");
-    Assert.assertEquals(err1.toString(), "");
-    strLogger.debug("debug should appear");
-    Assert.assertTrue(out1.toString().startsWith("[java.lang.String] [DEBUG] debug should appear"));
-    Assert.assertEquals(err1.toString(), "");
-  }
-
-  /**
-   * Run all tests. (very crusty ...)
-   * @param pArgs not used
-   */
-  public static void main(String[] pArgs) {
-    testDebugDefault();
-    testDebugOn();
-    testDebugOff();
-    testDebugError();
-    testRootLoggerDefault();
-    testRootLoggerSet();
-    testRootLoggerSetError();
-    testUserLoggerSet();
-    testUserLoggerSetError();
-    testUserLoggerSetHierarchy();
-  }
-}
diff --git a/src/org/testng/remote/ConnectionInfo.java b/src/org/testng/remote/ConnectionInfo.java
deleted file mode 100755
index 34db6f6..0000000
--- a/src/org/testng/remote/ConnectionInfo.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.testng.remote;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.net.Socket;
-
-public class ConnectionInfo {
-  private Socket m_socket;
-  private ObjectInputStream m_ois;
-  private ObjectOutputStream m_oos;
-  
-  public ObjectInputStream getOis() throws IOException {
-    if (m_ois == null) {
-      m_ois = new ObjectInputStream(m_socket.getInputStream());
-    }
-    return m_ois;
-  }
-  
-  public ObjectOutputStream getOos() throws IOException {
-    if (m_oos == null) {
-      m_oos = new ObjectOutputStream(m_socket.getOutputStream());
-    }
-    return m_oos;
-  }
-
-  public void setSocket(Socket s) {
-    m_socket = s;
-  }
-  
-  public Socket getSocket() {
-    return m_socket;
-  }
-
-}
diff --git a/src/org/testng/remote/RemoteSuiteWorker.java b/src/org/testng/remote/RemoteSuiteWorker.java
deleted file mode 100755
index e2c9ac4..0000000
--- a/src/org/testng/remote/RemoteSuiteWorker.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package org.testng.remote;
-
-import java.util.List;
-
-import org.testng.ISuite;
-import org.testng.SuiteRunner;
-import org.testng.internal.remote.SlavePool;
-import org.testng.remote.adapter.RemoteResultListener;
-import org.testng.xml.XmlSuite;
-
-/**
- * A worker that will be put into an Executor and that sends a suite
- * This class
- * 
- * @author cbeust
- */
-public class RemoteSuiteWorker extends RemoteWorker implements Runnable {
-  private XmlSuite m_suite;
-  
-  public RemoteSuiteWorker(XmlSuite suite, SlavePool slavePool, RemoteResultListener listener) {
-    super(listener, slavePool);
-    m_suite = suite;
-  }
-  
-  public void run() {
-    try {
-      SuiteRunner result = sendSuite(getSlavePool().getSlave(), m_suite);
-      m_listener.onResult(result);
-    }
-    catch (Exception e) {
-      e.printStackTrace();
-    }    
-
-  }
-}
-
diff --git a/src/org/testng/remote/RemoteTestNG.java b/src/org/testng/remote/RemoteTestNG.java
deleted file mode 100644
index 8f7313e..0000000
--- a/src/org/testng/remote/RemoteTestNG.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.testng.remote;
-
-
-import java.util.List;
-import java.util.Map;
-
-import org.testng.IInvokedMethodListener;
-import org.testng.ISuite;
-import org.testng.ISuiteListener;
-import org.testng.ITestRunnerFactory;
-import org.testng.TestNG;
-import org.testng.TestNGCommandLineArgs;
-import org.testng.TestRunner;
-import org.testng.remote.strprotocol.GenericMessage;
-import org.testng.remote.strprotocol.MessageHelper;
-import org.testng.remote.strprotocol.RemoteMessageSenderTestListener;
-import org.testng.remote.strprotocol.StringMessageSenderHelper;
-import org.testng.remote.strprotocol.SuiteMessage;
-import org.testng.reporters.JUnitXMLReporter;
-import org.testng.reporters.TestHTMLReporter;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-/**
- * Extension of TestNG registering a remote TestListener.
- * <p>
- * <i>Developer note</i>: be aware that a copy of this source is distributed along with the
- * Eclipse plugin to assure backward compatibility.
- * </p>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class RemoteTestNG extends TestNG {
-  private static final String LOCALHOST= "127.0.0.1";
-
-  private ITestRunnerFactory m_customTestRunnerFactory;
-  protected String m_host;
-  protected int m_port;
-
-  public void setConnectionParameters(String host, int port) {
-    if((null == host) || "".equals(host)) {
-      m_host= LOCALHOST;
-    }
-    else {
-      m_host= host;
-    }
-
-    m_port= port;
-  }
-
-  public void configure(Map cmdLineArgs) {
-    super.configure(cmdLineArgs);
-    setConnectionParameters((String) cmdLineArgs.get(TestNGCommandLineArgs.HOST_COMMAND_OPT),
-                            Integer.parseInt((String) cmdLineArgs.get(TestNGCommandLineArgs.PORT_COMMAND_OPT)));
-  }
-
-  public void run() {
-    final StringMessageSenderHelper msh= new StringMessageSenderHelper(m_host, m_port);
-    try {
-      if(msh.connect()) {
-        if(m_suites.size() > 0) {
-
-          int testCount= 0;
-
-          for(int i= 0; i < m_suites.size(); i++) {
-            testCount+= ((XmlSuite) m_suites.get(i)).getTests().size();
-          }
-
-          GenericMessage gm= new GenericMessage(MessageHelper.GENERIC_SUITE_COUNT);
-          gm.addProperty("suiteCount", m_suites.size()).addProperty("testCount", testCount);
-          msh.sendMessage(gm);
-
-          addListener(new RemoteSuiteListener(msh));
-          setTestRunnerFactory(new DelegatingTestRunnerFactory(buildTestRunnerFactory(), msh));
-
-          super.run();
-        }
-        else {
-          System.err.println("No test suite found.  Nothing to run");
-        }
-      }
-      else {
-        System.err.println("Cannot connect to " + m_host + " on " + m_port);
-      }
-    }
-    catch(Throwable cause) {
-      cause.printStackTrace(System.err);
-    }
-    finally {
-      msh.shutDown();
-      System.exit(0);
-    }
-  }
-
-  /**
-   * Override by the plugin if you need to configure differently the <code>TestRunner</code>
-   * (usually this is needed if different listeners/reporters are needed).
-   * <b>Note</b>: you don't need to worry about the wiring listener, because it is added
-   * automatically.
-   */
-  protected ITestRunnerFactory buildTestRunnerFactory() {
-    if(null == m_customTestRunnerFactory) {
-      m_customTestRunnerFactory= new ITestRunnerFactory() {
-          public TestRunner newTestRunner(ISuite suite, XmlTest xmlTest,
-              List<IInvokedMethodListener> listeners) {
-            TestRunner runner =
-              new TestRunner(suite, xmlTest, false /*skipFailedInvocationCounts */,
-              listeners);
-            if (m_useDefaultListeners) {
-              runner.addListener(new TestHTMLReporter());
-              runner.addListener(new JUnitXMLReporter());
-            }
-
-            return runner;
-          }
-        };
-    }
-
-    return m_customTestRunnerFactory;
-  }
-
-  public static void main(String[] args) {
-    Map commandLineArgs= TestNGCommandLineArgs.parseCommandLine(args);
-
-    RemoteTestNG testNG= new RemoteTestNG();
-    testNG.configure(commandLineArgs);
-    testNG.initializeSuitesAndJarFile();
-    testNG.run();
-  }
-
-  /** A ISuiteListener wiring the results using the internal string-based protocol. */
-  private static class RemoteSuiteListener implements ISuiteListener {
-    private final StringMessageSenderHelper m_messageSender;
-
-    RemoteSuiteListener(StringMessageSenderHelper smsh) {
-      m_messageSender= smsh;
-    }
-
-    public void onFinish(ISuite suite) {
-      m_messageSender.sendMessage(new SuiteMessage(suite, false /*start*/));
-    }
-
-    public void onStart(ISuite suite) {
-      m_messageSender.sendMessage(new SuiteMessage(suite, true /*start*/));
-    }
-  }
-
-  private static class DelegatingTestRunnerFactory implements ITestRunnerFactory {
-    private final ITestRunnerFactory m_delegateFactory;
-    private final StringMessageSenderHelper m_messageSender;
-
-    DelegatingTestRunnerFactory(ITestRunnerFactory trf, StringMessageSenderHelper smsh) {
-      m_delegateFactory= trf;
-      m_messageSender= smsh;
-    }
-
-    public TestRunner newTestRunner(ISuite suite, XmlTest test,
-        List<IInvokedMethodListener> listeners) {
-      TestRunner tr = m_delegateFactory.newTestRunner(suite, test, listeners);
-      tr.addListener(new RemoteMessageSenderTestListener(suite, test, m_messageSender));
-      return tr;
-    }
-  }
-}
diff --git a/src/org/testng/remote/RemoteWorker.java b/src/org/testng/remote/RemoteWorker.java
deleted file mode 100755
index d10a5fb..0000000
--- a/src/org/testng/remote/RemoteWorker.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.testng.remote;
-
-import java.io.IOException;
-
-import org.testng.SuiteRunner;
-import org.testng.internal.Utils;
-import org.testng.internal.remote.SlavePool;
-import org.testng.remote.adapter.RemoteResultListener;
-import org.testng.xml.XmlSuite;
-
-public class RemoteWorker {
-  protected RemoteResultListener m_listener;
-  private SlavePool m_slavePool;
-
-  public RemoteWorker(RemoteResultListener listener, SlavePool slavePool) {
-    m_listener = listener;
-    m_slavePool = slavePool;
-  }
-  
-  protected SlavePool getSlavePool() {
-    return m_slavePool;
-  }
-  
-  protected SuiteRunner sendSuite(ConnectionInfo ci, XmlSuite suite)
-    throws IOException, ClassNotFoundException 
-  {
-    log("Sending " + suite.getName() + " to " 
-        + ci.getSocket().getInetAddress().getCanonicalHostName() + ":"
-        + ci.getSocket().getRemoteSocketAddress());
-    ci.getOos().writeObject(suite);
-    ci.getOos().flush();
-    SuiteRunner result = (SuiteRunner) ci.getOis().readObject();
-    log("Received results for " + result.getName());
-    return result;
-  }
-  
-  private void log(String string) {
-    Utils.log("", 2, string);
-  }
-
-
-}
diff --git a/src/org/testng/remote/SuiteDispatcher.java b/src/org/testng/remote/SuiteDispatcher.java
deleted file mode 100644
index c08c967..0000000
--- a/src/org/testng/remote/SuiteDispatcher.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package org.testng.remote;
-
-import org.testng.ISuite;
-import org.testng.ISuiteResult;
-import org.testng.ITestListener;
-import org.testng.ITestResult;
-import org.testng.SuiteRunner;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.internal.IConfiguration;
-import org.testng.internal.Invoker;
-import org.testng.internal.PropertiesFile;
-import org.testng.remote.adapter.DefaultMastertAdapter;
-import org.testng.remote.adapter.IMasterAdapter;
-import org.testng.remote.adapter.RemoteResultListener;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Properties;
-
-/**
- * Dispatches test suits according to the strategy defined.
- * 
- *  
- * @author	Guy Korland
- * @date 	April 20, 2007
- */
-public class SuiteDispatcher
-{
-	/**
-	 * Properties allowed in remote.properties
-	 */
-	public static final String MASTER_STRATEGY = "testng.master.strategy";
-	public static final String VERBOSE = "testng.verbose";
-	public static final String MASTER_ADPATER = "testng.master.adpter";
-
-	/**
-	 * Values allowed for STRATEGY
-	 */
-	public static final String STRATEGY_TEST = "test";
-	public static final String STRATEGY_SUITE = "suite";
-
-	final private int m_verbose;
-	final private boolean m_isStrategyTest;
-
-	final private IMasterAdapter m_masterAdpter;
-
-
-	/**
-	 * Creates a new suite dispatcher.
-	 * 
-	 * @param propertiesFile
-	 * @throws Exception
-	 */
-	public SuiteDispatcher( String propertiesFile) throws TestNGException
-	{
-		try
-		{
-			PropertiesFile file = new PropertiesFile( propertiesFile);
-			Properties properties = file.getProperties();
-
-			m_verbose = Integer.parseInt( properties.getProperty(VERBOSE, "1"));
-
-			String strategy = properties.getProperty(MASTER_STRATEGY, STRATEGY_SUITE);
-			m_isStrategyTest = STRATEGY_TEST.equalsIgnoreCase(strategy);
-
-			String adapter = properties.getProperty(MASTER_ADPATER);
-			if( adapter == null)
-			{
-				m_masterAdpter = new DefaultMastertAdapter();
-			}
-			else
-			{
-				Class clazz = Class.forName(adapter);
-				m_masterAdpter = (IMasterAdapter)clazz.newInstance();
-			}
-			m_masterAdpter.init(properties);
-		}
-		catch( Exception e)
-		{
-			throw new TestNGException( "Fail to initialize master mode", e);
-		}
-	}
-
-	/**
-	 * Dispatch test suites 
-	 * @param suites
-	 * @param outputDir
-	 * @param javadocAnnotationFinder
-	 * @param jdkAnnotationFinder
-	 * @param testListeners
-	 * @return suites result
-	 */
-	public List<ISuite> dispatch(IConfiguration configuration,
-	    List<XmlSuite> suites, String outputDir, List<ITestListener> testListeners){
-		List<ISuite> result = Lists.newArrayList();
-		try
-		{
-			//
-			// Dispatch the suites/tests
-			//
-
-			for (XmlSuite suite : suites) {
-				suite.setVerbose(m_verbose);
-				SuiteRunner suiteRunner = new SuiteRunner(configuration, suite, outputDir);
-				RemoteResultListener listener = new RemoteResultListener( suiteRunner);
-				if (m_isStrategyTest) {
-					for (XmlTest test : suite.getTests()) {
-						XmlSuite tmpSuite = new XmlSuite();
-						tmpSuite.setXmlPackages(suite.getXmlPackages());
-						tmpSuite.setAnnotations(suite.getAnnotations());
-						tmpSuite.setJUnit(suite.isJUnit());
-           tmpSuite.setSkipFailedInvocationCounts(suite.skipFailedInvocationCounts());
-						tmpSuite.setName("Temporary suite for " + test.getName());
-						tmpSuite.setParallel(suite.getParallel());
-						tmpSuite.setParameters(suite.getParameters());
-						tmpSuite.setThreadCount(suite.getThreadCount());
-            tmpSuite.setDataProviderThreadCount(suite.getDataProviderThreadCount());
-						tmpSuite.setVerbose(suite.getVerbose());
-						tmpSuite.setObjectFactory(suite.getObjectFactory());
-						XmlTest tmpTest = new XmlTest(tmpSuite);
-						tmpTest.setAnnotations(test.getAnnotations());
-						tmpTest.setBeanShellExpression(test.getExpression());
-						tmpTest.setXmlClasses(test.getXmlClasses());
-						tmpTest.setExcludedGroups(test.getExcludedGroups());
-						tmpTest.setIncludedGroups(test.getIncludedGroups());
-						tmpTest.setJUnit(test.isJUnit());
-						tmpTest.setMethodSelectors(test.getMethodSelectors());
-						tmpTest.setName(test.getName());
-						tmpTest.setParallel(test.getParallel());
-						tmpTest.setParameters(test.getParameters());
-						tmpTest.setVerbose(test.getVerbose());
-						tmpTest.setXmlClasses(test.getXmlClasses());
-						tmpTest.setXmlPackages(test.getXmlPackages());
-
-						m_masterAdpter.runSuitesRemotely(tmpSuite, listener); 
-					}
-				}
-				else
-				{
-					m_masterAdpter.runSuitesRemotely(suite, listener);
-				}
-				result.add(suiteRunner);  
-			}        
-
-			m_masterAdpter.awaitTermination(100000);
-
-			//
-			// Run test listeners
-			//
-			for (ISuite suite : result) {
-				for (ISuiteResult suiteResult : suite.getResults().values()) {
-					Collection<ITestResult> allTests[] = new Collection[] {
-							suiteResult.getTestContext().getPassedTests().getAllResults(),
-							suiteResult.getTestContext().getFailedTests().getAllResults(),  
-							suiteResult.getTestContext().getSkippedTests().getAllResults(),  
-							suiteResult.getTestContext().getFailedButWithinSuccessPercentageTests().getAllResults(),  
-					};
-					for (Collection<ITestResult> all : allTests) {
-						for (ITestResult tr : all) {
-							Invoker.runTestListeners(tr, testListeners);
-						}
-					}
-				}
-			}
-		}
-		catch( Exception ex)
-		{
-			//TODO add to logs
-			ex.printStackTrace();
-		}
-		return result;
-	}
-}
diff --git a/src/org/testng/remote/SuiteSlave.java b/src/org/testng/remote/SuiteSlave.java
deleted file mode 100755
index aa6cdd5..0000000
--- a/src/org/testng/remote/SuiteSlave.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.testng.remote;
-
-import org.testng.ISuite;
-import org.testng.TestNG;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.internal.PropertiesFile;
-import org.testng.internal.Utils;
-import org.testng.remote.adapter.DefaultWorkerAdapter;
-import org.testng.remote.adapter.IWorkerApadter;
-import org.testng.xml.XmlSuite;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Properties;
-
-/**
- * Run test suits sent by the dispatcher.
- * 
- *  
- * @author	Guy Korland
- * @date 	April 20, 2007
- */
-public class SuiteSlave
-{
-
-	/**
-	 * Properties allowed in remote.properties
-	 */
-	public static final String VERBOSE = "testng.verbose";
-	public static final String SLAVE_ADPATER = "testng.slave.adpter";
-
-
-	final private int m_verbose;
-	final private IWorkerApadter m_slaveAdpter;
-	final private TestNG m_testng;
-
-	/**
-	 * Creates a new suite dispatcher.
-	 * 
-	 * @param propertiesFile
-	 * @throws Exception
-	 */
-	public SuiteSlave( String propertiesFile, TestNG testng) throws TestNGException
-	{
-		try
-		{
-			m_testng = testng;
-
-			PropertiesFile file = new PropertiesFile( propertiesFile);
-			Properties properties = file.getProperties();
-
-			m_verbose = Integer.parseInt( properties.getProperty(VERBOSE, "1"));
-
-			String adapter = properties.getProperty(SLAVE_ADPATER);
-			if( adapter == null)
-			{
-				m_slaveAdpter = new DefaultWorkerAdapter();
-			}
-			else
-			{
-				Class clazz = Class.forName(adapter);
-				m_slaveAdpter = (IWorkerApadter)clazz.newInstance();
-			}
-			m_slaveAdpter.init(properties);
-		}
-		catch( Exception e)
-		{
-			throw new TestNGException( "Fail to initialize slave mode", e);
-		}
-	}
-
-	/**
-	 * Invoked in client mode.  In this case, wait for a connection
-	 * on the given port, run the XmlSuite we received and return the SuiteRunner
-	 * created to run it.
-	 * @throws IOException 
-	 */
-	public void waitForSuites() {
-		try {
-			while (true) {
-				//TODO set timeout
-				XmlSuite s = m_slaveAdpter.getSuite(Long.MAX_VALUE);
-				if( s== null)
-					continue;
-				log("Processing " + s.getName());
-				List<XmlSuite> suites = Lists.newArrayList();
-				suites.add(s);
-				m_testng.setXmlSuites(suites);
-				List<ISuite> suiteRunners = m_testng.runSuitesLocally();
-				ISuite sr = suiteRunners.get(0);
-				log("Done processing " + s.getName());
-				m_slaveAdpter.returnResult(sr);
-			}
-		}
-		catch(Exception ex) {
-			ex.printStackTrace(System.out);
-		}
-	}
-
-	private static void log(String string) {
-		Utils.log("", 2, string);
-	}
-
-}
diff --git a/src/org/testng/remote/adapter/DefaultMastertAdapter.java b/src/org/testng/remote/adapter/DefaultMastertAdapter.java
deleted file mode 100755
index b8e5d91..0000000
--- a/src/org/testng/remote/adapter/DefaultMastertAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.testng.remote.adapter;
-
-import org.testng.collections.Lists;
-import org.testng.internal.Utils;
-import org.testng.internal.remote.SlavePool;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.remote.RemoteSuiteWorker;
-import org.testng.xml.XmlSuite;
-
-import java.io.IOException;
-import java.net.Socket;
-import java.net.UnknownHostException;
-import java.util.List;
-import java.util.Properties;
-
-/**
- * Default Master adapter, provides an adapter based on hosts file.
- * 
- *  
- * @author	Guy Korland
- * @date 	April 20, 2007
- */
-public class DefaultMastertAdapter
-implements IMasterAdapter
-{
-	public static final String HOSTS 	= "testng.hosts";
-
-	private String[] m_hosts;
-
-	final private SlavePool m_slavePool = new SlavePool();
-	final private List<Runnable> m_workers = Lists.newArrayList();
-
-	/*
-	 * @see org.testng.remote.adapter.IMasterAdapter#init(java.util.Properties)
-	 */
-	public void init(Properties properties)
-	{
-		String hostLine = properties.getProperty(HOSTS);
-		m_hosts =  hostLine.split(" ");
-
-		//
-		// Create one socket per host found
-		//
-		Socket[] sockets = new Socket[m_hosts.length];
-		for (int i = 0; i < m_hosts.length; i++) {
-			String host = m_hosts[i];
-			String[] s = host.split(":");
-			try {
-				sockets[i] = new Socket(s[0], Integer.parseInt(s[1]));
-			}
-			catch (NumberFormatException e) {
-				e.printStackTrace(System.out);
-			}
-			catch (UnknownHostException e) {
-				e.printStackTrace(System.out);
-			}
-			catch (IOException e) {
-				Utils.error("Couldn't connect to " + host + ": " + e.getMessage());
-			}
-		}
-
-		//
-		// Add these hosts to the pool
-		//
-		try {
-			m_slavePool.addSlaves(sockets);
-		}
-		catch (IOException e1) {
-			e1.printStackTrace(System.out);
-		}
-	}
-
-	/*
-	 * @see org.testng.remote.adapter.IMasterAdapter#runSuitesRemotely(java.util.List, org.testng.internal.annotations.IAnnotationFinder, org.testng.internal.annotations.IAnnotationFinder)
-	 */
-	public void runSuitesRemotely( XmlSuite suite, RemoteResultListener listener) throws IOException
-	{
-		m_workers.add(new RemoteSuiteWorker(suite, m_slavePool, listener));
-	}
-
-	public void awaitTermination(long timeout) throws InterruptedException
-	{
-		ThreadUtil.execute(m_workers, 1, 10 * 1000L, false);
-	}
-}
diff --git a/src/org/testng/remote/adapter/DefaultWorkerAdapter.java b/src/org/testng/remote/adapter/DefaultWorkerAdapter.java
deleted file mode 100755
index d9e98f8..0000000
--- a/src/org/testng/remote/adapter/DefaultWorkerAdapter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.testng.remote.adapter;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.Properties;
-
-import org.testng.ISuite;
-import org.testng.internal.Utils;
-import org.testng.remote.ConnectionInfo;
-import org.testng.xml.XmlSuite;
-
-
-/**
- * Default Slave adapter, provides an adapter based on static port.
- * 
- *  
- * @author	Guy Korland
- * @date 	April 20, 2007
- */
-public class DefaultWorkerAdapter implements IWorkerApadter
-{
-	public static final String SLAVE_PORT = "slave.port";
-	
-	private ConnectionInfo m_connectionInfo;
-	private int m_clientPort; 
-	
-	public void init( Properties prop) throws Exception
-	{
-		m_clientPort = Integer.parseInt( prop.getProperty(SLAVE_PORT, "0"));
-		m_connectionInfo = resetSocket( m_clientPort, null);
-	}
-	
-	/*
-	 * @see org.testng.remote.adapter.IWorkerApadter#getSuite(long)
-	 */
-	public XmlSuite getSuite(long timeout) throws InterruptedException, IOException
-	{
-      try {
-        return (XmlSuite) m_connectionInfo.getOis().readObject();
-      }
-      catch (ClassNotFoundException e) {
-        e.printStackTrace(System.out);
-        throw new RuntimeException( e); 
-      }      
-      catch(IOException ex) {
-        log("Connection closed " + ex.getMessage());
-        m_connectionInfo = resetSocket(m_clientPort, m_connectionInfo);
-        throw ex;
-      }
-	}
-
-	/*
-	 * @see org.testng.remote.adapter.IWorkerApadter#returnResult(org.testng.ISuite)
-	 */
-	public void returnResult(ISuite result) throws IOException
-	{
-		try
-		{
-			m_connectionInfo.getOos().writeObject(result);
-		}
-		catch(IOException ex) {
-			log("Connection closed " + ex.getMessage());
-			m_connectionInfo = resetSocket(m_clientPort, m_connectionInfo);
-			throw ex;
-		}
-	}
-	
-	private static ConnectionInfo resetSocket(int clientPort, ConnectionInfo oldCi) 
-	throws IOException 
-	{
-		ConnectionInfo result = new ConnectionInfo();
-		ServerSocket serverSocket = new ServerSocket(clientPort);
-		serverSocket.setReuseAddress(true);
-		log("Waiting for connections on port " + clientPort);
-		Socket socket = serverSocket.accept();
-		result.setSocket(socket);
-
-		return result;
-	}
-	
-	private static void log(String string) {
-		Utils.log("", 2, string);
-	}
-}
diff --git a/src/org/testng/remote/adapter/IMasterAdapter.java b/src/org/testng/remote/adapter/IMasterAdapter.java
deleted file mode 100755
index 93a539b..0000000
--- a/src/org/testng/remote/adapter/IMasterAdapter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.testng.remote.adapter;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import org.testng.xml.XmlSuite;
-
-/**
- * This interface should be implemented by the Master-Slave transport adapter.
- * This interface is used by the Master to push suites and get results.
- * 
- * @author Guy Korland
- * @date April 9, 2007
- * @see IWorkerApadter
- */
-public interface IMasterAdapter
-{
-	/**
-	 * Initializes the Master adapter.  
-	 * @param properties holds the properties loaded from the remote.properties file. 
-	 * @throws Exception adapter might throw any exception on initialization, which will abort this adapter.
-	 */
-	void init( Properties prop) throws Exception;
-	
-	/**
-	 * Run a suite remotely.
-	 * @param suite the suite to send.
-	 * @param listener the corresponded listener, should be called when result is ready. 
-	 * @throws IOException might be thrown on IO error.  
-	 */
-	void runSuitesRemotely( XmlSuite suite, RemoteResultListener listener) throws IOException;
-	
-	/**
-	 * A blocking wait for the remote results to return.
-	 *   
-	 * @param timeout the maximum time to wait for all the suites to return a result.
-	 * @throws InterruptedException
-	 */
-	public void awaitTermination(long timeout) throws InterruptedException;
-}
\ No newline at end of file
diff --git a/src/org/testng/remote/adapter/IWorkerApadter.java b/src/org/testng/remote/adapter/IWorkerApadter.java
deleted file mode 100755
index 04bb7c8..0000000
--- a/src/org/testng/remote/adapter/IWorkerApadter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.testng.remote.adapter;
-
-import java.io.IOException;
-import java.util.Properties;
-
-import org.testng.ISuite;
-import org.testng.xml.XmlSuite;
-
-/**
- * This interface should be implemented by the Master-Slave transport adapter.
- * This interface is used by the Slave to pull suites and return results.
- *   
- * @author	Guy Korland
- * @date April 9, 2007
- * @see IMasterAdapter
- */
-public interface IWorkerApadter
-{
-	/**
-	 * Initializes the worker adapter.  
-	 * @param properties holds the properties loaded from the remote.properties file.
-	 * @throws Exception adapter might throw any exception on initialization, which will abort this adapter. 
-	 */
-	void init( Properties properties) throws Exception;
-	
-	/**
-	 * A blocking call to get the next Suite to test. 
-	 * @param timeout the maximum time to wait for the next suite. 
-	 * @return the next suite avaliable or <code>null</code> if the timeout has reached.
-	 * @throws IOException might be thrown on IO error.
-	 * @throws InterruptedException if interrupted while waiting.
-	 */
-	XmlSuite getSuite( long timeout) throws InterruptedException, IOException;
-	
-	/**
-	 * Return a suite result.
-	 * @param result the result to return
-	 * @throws IOException might be thrown on IO error.
-	 */
-	void returnResult( ISuite result) throws IOException;
-}
diff --git a/src/org/testng/remote/adapter/RemoteResultListener.java b/src/org/testng/remote/adapter/RemoteResultListener.java
deleted file mode 100755
index ab04018..0000000
--- a/src/org/testng/remote/adapter/RemoteResultListener.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * @(#)ResultListener.java   Apr 9, 2007
- *
- * Copyright 2007 GigaSpaces Technologies Inc.
- */
-
-package org.testng.remote.adapter;
-
-import java.util.Map;
-
-import org.testng.ISuite;
-import org.testng.ISuiteResult;
-import org.testng.ITestContext;
-import org.testng.SuiteRunner;
-import org.testng.reporters.TestHTMLReporter;
-
-/**
- * This listener is called by the {@link IWorkerApadter} implementation when a remote test result is ready.
- * 
- * @author Guy Korland
- * @date April 9, 2007
- * @see IWorkerApadter
- */
-public class RemoteResultListener
-{
-	/**
-	 * Holds the corresponded {@link SuiteRunner} for the processed {@link org.testng.xml.XmlSuite}.
-	 */
-	final private SuiteRunner m_runner;
-
-	/**
-	 * Creates a listener for an {@link org.testng.xml.XmlSuite} result.
-	 * @param runner the corresponded {@link SuiteRunner}
-	 */
-	public RemoteResultListener( SuiteRunner runner)
-	{
-		m_runner = runner;
-	}
-
-	/**
-	 * Should called by the {@link IWorkerApadter} implementation when a remote suite result is ready. 
-	 * @param remoteSuiteRunner remote result.
-	 */
-	public void onResult( ISuite remoteSuiteRunner)
-	{
-		m_runner.setHost(remoteSuiteRunner.getHost());
-		Map<String, ISuiteResult> tmpResults = remoteSuiteRunner.getResults();
-		Map<String, ISuiteResult> suiteResults = m_runner.getResults();
-		for (String tests : tmpResults.keySet()) 
-		{
-			ISuiteResult suiteResult = tmpResults.get(tests);
-			suiteResults.put(tests, suiteResult);
-			ITestContext tc = suiteResult.getTestContext();
-			TestHTMLReporter.generateLog(tc, remoteSuiteRunner.getHost(),
-			                             m_runner.getOutputDirectory(),
-			                             tc.getFailedConfigurations().getAllResults(),
-			                             tc.getSkippedConfigurations().getAllResults(),
-			                             tc.getPassedTests().getAllResults(),
-			                             tc.getFailedTests().getAllResults(),
-			                             tc.getSkippedTests().getAllResults(),
-			                             tc.getFailedButWithinSuccessPercentageTests().getAllResults());
-		}
-	}
-}
diff --git a/src/org/testng/remote/strprotocol/AbstractRemoteTestRunnerClient.java b/src/org/testng/remote/strprotocol/AbstractRemoteTestRunnerClient.java
deleted file mode 100755
index c531486..0000000
--- a/src/org/testng/remote/strprotocol/AbstractRemoteTestRunnerClient.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Julien Ruaux: jruaux at octo.com
- *     Vincent Massol: vmassol at octo.com
- *     
- * Adapted by:
- *     Alexandru Popescu: the_mindstorm at evolva.ro
- ******************************************************************************/
-package org.testng.remote.strprotocol;
-
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-
-/**
- * The client side of the RemoteTestRunner. Handles the
- * marshaling of the different messages.
- */
-public abstract class AbstractRemoteTestRunnerClient {
-  /**
-   * An array of listeners that are informed about test events.
-   */
-  protected IRemoteSuiteListener[] m_suiteListeners;
-  protected IRemoteTestListener[] m_testListeners;
-  
-  /**
-   * The server socket
-   */
-  private ServerSocket       fServerSocket;
-  private Socket             fSocket;
-  private PrintWriter        m_outputWriter;
-  private BufferedReader     m_inputReader;
-
-  /**
-   * Start listening to a test run. Start a server connection that
-   * the RemoteTestRunner can connect to.
-   */
-  public synchronized void startListening(IRemoteSuiteListener[] suiteListeners,
-                                          IRemoteTestListener[] testListeners,
-                                          ServerConnection serverConnection) {
-    m_suiteListeners= suiteListeners;
-    m_testListeners= testListeners;
-    
-    serverConnection.start();
-  }
-  
-  public IRemoteSuiteListener[] getSuiteListeners() {
-    return m_suiteListeners;
-  }
-  
-  public IRemoteTestListener[] getTestListeners() {
-    return m_testListeners;
-  }
-  
-  private synchronized void shutdown() {
-    if(m_outputWriter != null) {
-      m_outputWriter.close();
-      m_outputWriter = null;
-    }
-    try {
-      if(m_inputReader != null) {
-        m_inputReader.close();
-        m_inputReader = null;
-      }
-    }
-    catch(IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      if(fSocket != null) {
-        fSocket.close();
-        fSocket = null;
-      }
-    }
-    catch(IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      if(fServerSocket != null) {
-        fServerSocket.close();
-        fServerSocket = null;
-      }
-    }
-    catch(IOException e) {
-      e.printStackTrace();
-    }
-  }
-
-  public boolean isRunning() {
-    return fSocket != null;
-  }
-
-  /**
-   * Requests to stop the remote test run.
-   */
-  public synchronized void stopTest() {
-    if(isRunning()) {
-      if(null != m_outputWriter) {
-        m_outputWriter.println(MessageHelper.STOP_MSG);
-        m_outputWriter.flush();
-      }
-      shutdown();
-    }
-  }
-  
-  private String readMessage(BufferedReader in) throws IOException {
-    return in.readLine();
-  }
-
-  private void receiveMessage(String message) {
-    int messageType = MessageHelper.getMessageType(message);
-    
-    try {
-      if(messageType < MessageHelper.SUITE) {
-        // Generic message
-        GenericMessage gm = MessageHelper.unmarshallGenericMessage(message);
-        notifyStart(gm);
-      }
-      else if(messageType < MessageHelper.TEST) {
-        // Suite message
-        SuiteMessage sm = MessageHelper.createSuiteMessage(message);
-        notifySuiteEvents(sm);
-      } 
-      else if(messageType < MessageHelper.TEST_RESULT) {
-        // Test message
-        TestMessage tm = MessageHelper.createTestMessage(message);
-        notifyTestEvents(tm);
-      } 
-      else {
-        // TestResult message
-        TestResultMessage trm = MessageHelper.unmarshallTestResultMessage(message);
-        notifyResultEvents(trm);
-      }
-    } 
-    finally {
-      if(isRunning() && (null != m_outputWriter)) {
-        m_outputWriter.println(MessageHelper.ACK_MSG);
-        m_outputWriter.flush();
-      }
-    }
-  }
-
-  protected abstract void notifyStart(final GenericMessage genericMessage);
-
-  protected abstract void notifySuiteEvents(final SuiteMessage suiteMessage);
-  
-  protected abstract void notifyTestEvents(final TestMessage testMessage);
-  
-  protected abstract void notifyResultEvents(final TestResultMessage testResultMessage);
-
-  
-  /**
-   * Reads the message stream from the RemoteTestRunner
-   */
-  public abstract class ServerConnection extends Thread {
-    int fServerPort;
-
-    public ServerConnection(int port) {
-      super("ServerConnection"); //$NON-NLS-1$
-      fServerPort = port;
-    }
-
-    @Override
-    public void run() {
-      try {
-        fServerSocket = new ServerSocket(fServerPort);
-        fSocket = fServerSocket.accept();
-        try {
-          m_inputReader = new BufferedReader(new InputStreamReader(fSocket.getInputStream(),
-                                                                     "UTF-8")); //$NON-NLS-1$
-        }
-        catch(UnsupportedEncodingException e) {
-          m_inputReader = new BufferedReader(new InputStreamReader(fSocket.getInputStream()));
-        }
-        try {
-          m_outputWriter = new PrintWriter(new OutputStreamWriter(fSocket.getOutputStream(), "UTF-8"),
-                                    true); //$NON-NLS-1$
-        }
-        catch(UnsupportedEncodingException e1) {
-          m_outputWriter = new PrintWriter(new OutputStreamWriter(fSocket.getOutputStream()), true);
-        }
-        String message;
-        while((m_inputReader != null) && ((message = readMessage(m_inputReader)) != null)) {
-          receiveMessage(message);
-        }
-      }
-      catch(SocketException e) {
-        handleThrowable(e);
-      }
-      catch(IOException e) {
-        handleThrowable(e);
-      }
-      finally {
-        shutdown();
-      }
-    }
-    
-    protected abstract void handleThrowable(Throwable cause);
-  }
-  
-}
diff --git a/src/org/testng/remote/strprotocol/GenericMessage.java b/src/org/testng/remote/strprotocol/GenericMessage.java
deleted file mode 100755
index b3bbf7f..0000000
--- a/src/org/testng/remote/strprotocol/GenericMessage.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.testng.remote.strprotocol;
-
-import org.testng.collections.Maps;
-
-import java.util.Iterator;
-import java.util.Map;
-
-
-
-/**
- * A generic message to be used with remote listeners.
- * It is described by a {@link #m_messageType} and can contain a <code>Map</code>
- * or values.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class GenericMessage implements IStringMessage {
-  protected Map m_properties;
-  protected final int m_messageType;
-  
-  public GenericMessage(final int type) {
-    this(type, Maps.newHashMap());
-  }
-  
-  public GenericMessage(final int type, Map props) {
-    m_messageType = type;
-    m_properties = props;
-  }
-  
-  public GenericMessage addProperty(final String propName, final Object propValue) {
-    m_properties.put(propName, propValue);
-    
-    return this;
-  }
-  
-  public GenericMessage addProperty(final String propName, final int propValue) {
-    return addProperty(propName, new Integer(propValue));
-  }
-  
-  public String getProperty(final String propName) {
-    return (String) m_properties.get(propName);
-  }
-  
-  /**
-   * @see net.noco.testng.runner.IStringMessage#getMessageAsString()
-   */
-  public String getMessageAsString() {
-    StringBuffer buf = new StringBuffer();
-    
-    buf.append(m_messageType);
-    
-        for(Iterator it = m_properties.entrySet().iterator(); it.hasNext(); ) {
-          Map.Entry entry = (Map.Entry) it.next();
-          
-          buf.append(MessageHelper.DELIMITER)
-              .append(entry.getKey())
-              .append(MessageHelper.DELIMITER)
-              .append(entry.getValue())
-              ;
-        }
-
-    
-    return buf.toString();
-  }
-
-}
diff --git a/src/org/testng/remote/strprotocol/IMessage.java b/src/org/testng/remote/strprotocol/IMessage.java
deleted file mode 100755
index 3e2c6f7..0000000
--- a/src/org/testng/remote/strprotocol/IMessage.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-/**
- * Marker interface for usage with remote listeners.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public interface IMessage {
-}
diff --git a/src/org/testng/remote/strprotocol/IRemoteSuiteListener.java b/src/org/testng/remote/strprotocol/IRemoteSuiteListener.java
deleted file mode 100755
index 6e8d11e..0000000
--- a/src/org/testng/remote/strprotocol/IRemoteSuiteListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-
-/**
- * Interface replicating the <code>ISuiteListener</code> used for remote listeners.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- * @see org.testng.ISuiteListener
- */
-public interface IRemoteSuiteListener {
-  /**
-   * General information about the number of suites to be run.
-   * This is called once before all suites.
-   * 
-   * @param genericMessage a message containing the number of suites that will be run 
-   */
-  void onInitialization(GenericMessage genericMessage);
-
-  /**
-   * @see org.testng.ISuiteListener#onStart(org.testng.ISuite)
-   *
-   * @param sm the suite message containing the description of the suite to be run.
-   */
-  void onStart(SuiteMessage suiteMessage);
-
-  /**
-   * @see org.testng.ISuiteListener#onFinish(org.testng.ISuite)
-   * 
-   * @param suiteMessage the suite message containing infos about the finished suite.
-   */
-  void onFinish(SuiteMessage suiteMessage);
-}
diff --git a/src/org/testng/remote/strprotocol/IRemoteTestListener.java b/src/org/testng/remote/strprotocol/IRemoteTestListener.java
deleted file mode 100755
index 27d6e17..0000000
--- a/src/org/testng/remote/strprotocol/IRemoteTestListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-
-/**
- * Interface replicating <code>ITestListener</code> for remote listeners.
- *
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- * @see org.testng.ITestListener
- */
-public interface IRemoteTestListener {
-  void onStart(TestMessage tm);
-  
-  void onFinish(TestMessage tm);
-
-  void onTestStart(TestResultMessage trm);
-  
-  void onTestSuccess(TestResultMessage trm);
-  
-  void onTestFailure(TestResultMessage trm);
-  
-  void onTestSkipped(TestResultMessage trm);
-  
-  void onTestFailedButWithinSuccessPercentage(TestResultMessage trm);
-}
diff --git a/src/org/testng/remote/strprotocol/IStringMessage.java b/src/org/testng/remote/strprotocol/IStringMessage.java
deleted file mode 100755
index d24b983..0000000
--- a/src/org/testng/remote/strprotocol/IStringMessage.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-/**
- * String based protocol main interface to be used with remote listeners.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public interface IStringMessage extends IMessage {
-  String getMessageAsString();
-}
diff --git a/src/org/testng/remote/strprotocol/MessageHelper.java b/src/org/testng/remote/strprotocol/MessageHelper.java
deleted file mode 100755
index bc978cc..0000000
--- a/src/org/testng/remote/strprotocol/MessageHelper.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-import org.testng.ITestResult;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-
-/**
- * Marshal/unmarshal tool for <code>IStringMessage</code>s.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class MessageHelper {
-  public static final char DELIMITER = '\u0001';
-  public static final char PARAM_DELIMITER = '\u0004';
-  private static final char LINE_SEP_DELIMITER_1 = '\u0002';
-  private static final char LINE_SEP_DELIMITER_2 = '\u0003';
-  
-  public static final int GENERIC_SUITE_COUNT = 1;
-  
-  public static final int SUITE = 10;
-  public static final int SUITE_START = 11;
-  public static final int SUITE_FINISH = 12;
-  
-  public static final int TEST = 100;
-  public static final int TEST_START = 101;
-  public static final int TEST_FINISH = 102;
-  
-  public static final int TEST_RESULT = 1000;
-  public static final int PASSED_TEST = TEST_RESULT + ITestResult.SUCCESS;
-  public static final int FAILED_TEST = TEST_RESULT + ITestResult.FAILURE;
-  public static final int SKIPPED_TEST = TEST_RESULT + ITestResult.SKIP;
-  public static final int FAILED_ON_PERCENTAGE_TEST = TEST_RESULT + ITestResult.SUCCESS_PERCENTAGE_FAILURE;
-  public static final int TEST_STARTED = TEST_RESULT + ITestResult.STARTED;
-  
-  public static final String STOP_MSG = ">STOP";
-  public static final String ACK_MSG = ">ACK";
-  
-  public static int getMessageType(final String message) {
-    int idx = message.indexOf(DELIMITER);
-    
-    return idx == -1 ? Integer.parseInt(message) : Integer.parseInt(message.substring(0, idx));
-  }
-  
-  public static GenericMessage unmarshallGenericMessage(final String message) {
-    String[] messageParts = parseMessage(message);
-    if(messageParts.length == 1) {
-      return new GenericMessage(Integer.parseInt(messageParts[0]));
-    }
-    else {
-      Map props = Maps.newHashMap();
-      
-      for(int i = 1; i < messageParts.length; i+=2) {
-        props.put(messageParts[i], messageParts[i + 1]);
-      }
-      
-      return new GenericMessage(Integer.parseInt(messageParts[0]), props);
-    }
-  }
-  
-  public static SuiteMessage createSuiteMessage(final String message) {
-    int type = getMessageType(message);
-    String[] messageParts = parseMessage(message);
-    
-    return new SuiteMessage(messageParts[1],
-                            MessageHelper.SUITE_START == type,
-                            Integer.parseInt(messageParts[2]));
-  }
-  
-  public static TestMessage createTestMessage(final String message) {
-    int type = getMessageType(message);
-    String[] messageParts = parseMessage(message);
-    
-    return new TestMessage(MessageHelper.TEST_START == type,
-                           messageParts[1],
-                           messageParts[2],
-                           Integer.parseInt(messageParts[3]),
-                           Integer.parseInt(messageParts[4]),
-                           Integer.parseInt(messageParts[5]),
-                           Integer.parseInt(messageParts[6]),
-                           Integer.parseInt(messageParts[7]));
-  }
-  
-  public static TestResultMessage unmarshallTestResultMessage(final String message) {
-    String[] messageParts = parseMessage(message);
-    
-    String parametersFragment= null;
-    String startTimestampFragment= null;
-    String stopTimestampFragment= null;
-    String stackTraceFragment= null;
-    String testDescriptor= null;
-    switch(messageParts.length) {
-      case 10:
-      {
-        parametersFragment= messageParts[5];
-        startTimestampFragment= messageParts[6];
-        stopTimestampFragment= messageParts[7];
-        stackTraceFragment= messageParts[8];
-        testDescriptor= messageParts[9];
-      }
-      break;
-      case 9:
-      {
-        parametersFragment= messageParts[5];
-        startTimestampFragment= messageParts[6];
-        stopTimestampFragment= messageParts[7];
-        stackTraceFragment= messageParts[8];        
-      }
-      break;
-      default:
-      {
-        // HINT: old protocol without parameters
-        parametersFragment= null;
-        startTimestampFragment= messageParts[5];
-        stopTimestampFragment= messageParts[6];
-        stackTraceFragment= messageParts[7];        
-      }
-    }
-    return new TestResultMessage(Integer.parseInt(messageParts[0]),
-                                 messageParts[1],
-                                 messageParts[2],
-                                 messageParts[3],
-                                 messageParts[4],
-                                 replaceAsciiCharactersWithUnicode(replaceNewLineReplacer(testDescriptor)),
-                                 parseParameters(parametersFragment),
-                                 Long.parseLong(startTimestampFragment),
-                                 Long.parseLong(stopTimestampFragment),
-                                 replaceAsciiCharactersWithUnicode(replaceNewLineReplacer(stackTraceFragment))
-            );
-  }
-  
-  public static String replaceNewLine(String message) {
-    if(null == message) {
-      return message;
-    }
-    
-    return message.replace('\n', LINE_SEP_DELIMITER_1).replace('\r', LINE_SEP_DELIMITER_2);
-  }
-
-  public static String replaceUnicodeCharactersWithAscii(String message) {
-    if(null == message) {
-      return message;
-    }
-
-    return replace(
-              replace(
-                  replace(
-                    replace(message, "\u0004", "\\u0004"), 
-                  "\u0003", "\\u0003"), 
-              "\u0002", "\\u0002"), 
-           "\u0001", "\\u0001");
-  }
-
-  public static String replaceAsciiCharactersWithUnicode(String message) {
-    if(null == message) {
-      return message;
-    }
-
-    return replace(
-            replace(
-                replace(
-                    replace(message, "\\u0004", "\u0004"), 
-                    "\\u0003", "\u0003"), 
-                "\\u0002", "\u0002"), 
-            "\\u0001", "\u0001");
-  }
-  
-  public static String replaceNewLineReplacer(String message) {
-    if(null == message) {
-      return message;
-    }
-    
-    return message.replace(LINE_SEP_DELIMITER_1, '\n').replace(LINE_SEP_DELIMITER_2, '\r');
-  }
-  
-  private static String[] parseParameters(final String messagePart) {
-    return tokenize(messagePart, PARAM_DELIMITER);
-  }
-  
-  private static String[] parseMessage(final String message) {
-    return tokenize(message, DELIMITER);
-  }
-  
-  private static String[] tokenize(final String message, final char separator) {
-    if(null == message) {
-      return new String[0];
-    }
-    
-    List<String> tokens = Lists.newArrayList();
-    int start = 0;
-    for(int i = 0; i < message.length(); i++) {
-      if(separator == message.charAt(i)) {
-        tokens.add(message.substring(start, i));
-        start = i + 1;
-      }
-    }
-    if(start < message.length()) {
-      tokens.add(message.substring(start, message.length()));
-    }
-    
-    return tokens.toArray(new String[tokens.size()]);
-  }
-  
-  /**
-   * Implementation according to JDK5 String.replace(CharSequence,CharSequence)
-   */
-  private static final String replace(String original, CharSequence target, CharSequence replacement) {
-      return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(original)
-          .replaceAll(quoteReplacement(replacement.toString()));
-  }
-  
-  /**
-   * Implementation according to JDK5 String.replace(CharSequence,CharSequence)
-   */
-  private static String quoteReplacement(String s) {
-      if ((s.indexOf('\\') == -1) && (s.indexOf('$') == -1))
-          return s;
-      StringBuffer sb = new StringBuffer();
-      for (int i=0; i<s.length(); i++) {
-          char c = s.charAt(i);
-          if (c == '\\') {
-              sb.append('\\'); sb.append('\\');
-          } else if (c == '$') {
-              sb.append('\\'); sb.append('$');
-          } else {
-              sb.append(c);
-          }
-      }
-      return sb.toString();
-  }  
-}
diff --git a/src/org/testng/remote/strprotocol/RemoteMessageSenderTestListener.java b/src/org/testng/remote/strprotocol/RemoteMessageSenderTestListener.java
deleted file mode 100755
index 42a3257..0000000
--- a/src/org/testng/remote/strprotocol/RemoteMessageSenderTestListener.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.testng.remote.strprotocol;
-
-import org.testng.ISuite;
-import org.testng.ITestContext;
-import org.testng.ITestListener;
-import org.testng.ITestResult;
-import org.testng.internal.IResultListener;
-import org.testng.xml.XmlTest;
-
-/**
- * A special listener that remote the event with string protocol.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class RemoteMessageSenderTestListener implements IResultListener {
-  private final StringMessageSenderHelper m_sender;
-  private ISuite m_suite;
-  private XmlTest m_xmlTest;
-  private ITestContext m_currentTestContext;
-  
-  public RemoteMessageSenderTestListener(ISuite suite, XmlTest test, StringMessageSenderHelper msh) {
-    m_sender = msh;
-    m_suite= suite;
-    m_xmlTest= test;
-  }
-
-  public void onStart(ITestContext testCtx) {
-    m_currentTestContext = testCtx;
-    m_sender.sendMessage(new TestMessage(testCtx, true /*start*/));
-  }
-
-  public void onFinish(ITestContext testCtx) {
-    m_sender.sendMessage(new TestMessage(testCtx, false /*end*/));
-    m_currentTestContext = null;
-  }
-
-  public void onTestStart(ITestResult testResult) {
-    TestResultMessage trm= null;
-    
-    if (null == m_currentTestContext) {
-      trm= new TestResultMessage(m_suite.getName(), m_xmlTest.getName(), testResult);
-    }
-    else {
-      trm= new TestResultMessage(m_currentTestContext, testResult);
-    }
-    
-    m_sender.sendMessage(trm);
-  }
-
-  public void onTestFailedButWithinSuccessPercentage(ITestResult testResult) {
-    if (null == m_currentTestContext) {
-      m_sender.sendMessage(new TestResultMessage(m_suite.getName(), m_xmlTest.getName(), testResult));
-    }
-    else {
-      m_sender.sendMessage(new TestResultMessage(m_currentTestContext, testResult));
-    }
-  }
-
-  public void onTestFailure(ITestResult testResult) {
-    if (null == m_currentTestContext) {
-      m_sender.sendMessage(new TestResultMessage(m_suite.getName(), m_xmlTest.getName(), testResult));
-    }
-    else {
-      m_sender.sendMessage(new TestResultMessage(m_currentTestContext, testResult));
-    }
-  }
-
-  public void onTestSkipped(ITestResult testResult) {
-    if (null == m_currentTestContext) {
-      m_sender.sendMessage(new TestResultMessage(m_suite.getName(), m_xmlTest.getName(), testResult));
-    }
-    else {
-      m_sender.sendMessage(new TestResultMessage(m_currentTestContext, testResult));
-    }
-  }
-
-  public void onTestSuccess(ITestResult testResult) {
-    if (null == m_currentTestContext) {
-      m_sender.sendMessage(new TestResultMessage(m_suite.getName(), m_xmlTest.getName(), testResult));
-    }
-    else {
-      m_sender.sendMessage(new TestResultMessage(m_currentTestContext, testResult));
-    }
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationFailure(org.testng.ITestResult)
-   */
-  public void onConfigurationFailure(ITestResult itr) {
-    onTestFailure(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSkip(org.testng.ITestResult)
-   */
-  public void onConfigurationSkip(ITestResult itr) {
-    onTestSkipped(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSuccess(org.testng.ITestResult)
-   */
-  public void onConfigurationSuccess(ITestResult itr) {
-  }
-}
\ No newline at end of file
diff --git a/src/org/testng/remote/strprotocol/StringMessageSenderHelper.java b/src/org/testng/remote/strprotocol/StringMessageSenderHelper.java
deleted file mode 100755
index a402253..0000000
--- a/src/org/testng/remote/strprotocol/StringMessageSenderHelper.java
+++ /dev/null
@@ -1,212 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.net.Socket;
-
-import org.testng.TestNGException;
-
-/**
- * String based socket based communication.
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class StringMessageSenderHelper {
-
-  private boolean        m_debugMode = false;
-
-  private Socket         m_clientSocket;
-  private String         m_host;
-  private int            m_port;
-
-  /** Outgoing message stream. */
-  private PrintWriter    m_outStream;
-
-  /** Ingoing message stream. */
-  private volatile BufferedReader m_inStream;
-
-  private ReaderThread   m_readerThread;
-  private Object lock = new Object();
-
-  public StringMessageSenderHelper(final String host, final int port) {
-    m_host = host;
-    m_port = port;
-  }
-
-  /**
-   * Starts the connection.
-   *
-   * @return <TT>true</TT> if the connection was successfull, <TT>false</TT> otherwise
-   * @throws TestNGException if an exception occured while establishing the connection
-   */
-  public boolean connect() {
-    if(m_debugMode) {
-      ppp("trying to connect " + m_host + ":" + m_port); //$NON-NLS-1$ //$NON-NLS-2$
-    }
-    Exception exception = null;
-
-    for(int i = 1; i < 20; i++) {
-      try {
-        m_clientSocket = new Socket(m_host, m_port);
-
-        try {
-          m_outStream = new PrintWriter(new BufferedWriter(new OutputStreamWriter(m_clientSocket.getOutputStream(), "UTF-8")), //$NON-NLS-1$
-                                        false /*autoflush*/);
-        }
-        catch(UnsupportedEncodingException ueex) {
-          // Should never happen
-          m_outStream = new PrintWriter(new BufferedWriter(
-              new OutputStreamWriter(m_clientSocket.getOutputStream())),
-                  false /*autoflush*/);
-        }
-
-        try {
-          m_inStream = new BufferedReader(new InputStreamReader(m_clientSocket.getInputStream(), "UTF-8")); //$NON-NLS-1$
-        }
-        catch(UnsupportedEncodingException ueex) {
-          // Should never happen
-          m_inStream = new BufferedReader(new InputStreamReader(m_clientSocket.getInputStream()));
-        }
-
-        m_readerThread = new ReaderThread();
-        m_readerThread.start();
-
-        return true;
-      }
-      catch(IOException ioe) {
-        exception = ioe;
-      }
-
-      try {
-        Thread.sleep(2000);
-      }
-      catch(InterruptedException e) {
-        ;
-      }
-    }
-
-    throw new TestNGException("Cannot establish connection: " + m_host + ":" + m_port, exception);
-  }
-
-  /**
-   * Shutsdown the connection to the remote test listener.
-   */
-  public void shutDown() {
-    if(null != m_outStream) {
-      m_outStream.close();
-      m_outStream = null;
-    }
-
-    try {
-      if(null != m_readerThread) {
-        m_readerThread.interrupt();
-      }
-
-      if(null != m_inStream) {
-        m_inStream.close();
-        m_inStream = null;
-      }
-    }
-    catch(IOException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      if(null != m_clientSocket) {
-        m_clientSocket.close();
-        m_clientSocket = null;
-      }
-    }
-    catch(IOException e) {
-      if(m_debugMode) {
-        e.printStackTrace();
-      }
-    }
-  }
-
-  public void sendMessage(IMessage message) {
-    throw new UnsupportedOperationException("This operation is too generic yet.");
-  }
-
-  public void sendMessage(IStringMessage message) {
-    sendMessage(message.getMessageAsString());
-  }
-  
-  private void sendMessage(String msg) {
-    if(null == m_outStream) {
-      ppp("WARNING the outputstream is null. Cannot send message.");
-
-      return;
-    }
-
-    if(m_debugMode) {
-      ppp(msg);
-  
-      StringBuffer buf = new StringBuffer();
-      for(int i = 0; i < msg.length(); i++) {
-        if('\u0001' == msg.charAt(i)) {
-          ppp("word:[" + buf.toString() + "]");
-          buf.delete(0, buf.length());
-        }
-        else {
-          buf.append(msg.charAt(i));
-        }
-      }
-      ppp("word:[" + buf.toString() + "]");
-    }
-
-    synchronized(lock) {
-      m_outStream.println(msg);
-      m_outStream.flush();
-      try {
-          lock.wait();
-      } 
-      catch(InterruptedException e) { }
-    }
-  }
-
-  private static void ppp(String msg) {
-//    System.out.println("[StringMessageSenderHelper]: " + msg); //$NON-NLS-1$
-  }
-  
-  /**
-   * Reader thread that processes messages from the client.
-   */
-  private class ReaderThread extends Thread {
-
-    public ReaderThread() {
-      super("ReaderThread"); //$NON-NLS-1$
-    }
-
-    @Override
-    public void run() {
-      try {
-        String message;
-        while((m_inStream != null) && (message = m_inStream.readLine()) != null) {
-          if(m_debugMode) {
-            ppp("Reply:" + message); //$NON-NLS-1$
-          }
-          boolean acknowledge = MessageHelper.ACK_MSG.equals(message);
-          boolean stop = MessageHelper.STOP_MSG.equals(message);
-          if(acknowledge || stop) {
-            synchronized(lock) {
-              lock.notifyAll();
-            }
-            if (stop) {
-            	break;
-            }
-          }
-        }
-      }
-      catch(IOException ioe) {
-        ;
-      }
-    }
-  }
-}
diff --git a/src/org/testng/remote/strprotocol/SuiteMessage.java b/src/org/testng/remote/strprotocol/SuiteMessage.java
deleted file mode 100755
index 5fe193e..0000000
--- a/src/org/testng/remote/strprotocol/SuiteMessage.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.testng.remote.strprotocol;
-
-import org.testng.ISuite;
-
-
-/**
- * A <code>IStringMessage</code> implementation for suite running events.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class SuiteMessage implements IStringMessage {
-  protected final String m_suiteName;
-  protected final int m_testMethodCount;
-  protected final boolean m_startSuite;
-  
-  SuiteMessage(final String suiteName, final boolean startSuiteRun, final int methodCount) {
-    m_suiteName = suiteName;
-    m_startSuite = startSuiteRun;
-    m_testMethodCount = methodCount;
-  }
-  
-  public SuiteMessage(final ISuite suite, final boolean startSuiteRun) {
-    m_suiteName = suite.getName();
-    m_testMethodCount =suite.getInvokedMethods().size();
-    m_startSuite = startSuiteRun;
-  }
-  
-  public boolean isMessageOnStart() {
-    return m_startSuite;
-  }
-  
-  public String getSuiteName() {
-    return m_suiteName;
-  }
-  
-  public int getTestMethodCount() {
-    return m_testMethodCount;
-  }
-  
-  /**
-   * @see net.noco.testng.runner.IStringMessage#getMessageAsString()
-   */
-  public String getMessageAsString() {
-    StringBuffer buf = new StringBuffer();
-    
-    buf.append(m_startSuite ? MessageHelper.SUITE_START : MessageHelper.SUITE_FINISH)
-        .append(MessageHelper.DELIMITER)
-        .append(m_suiteName)
-        .append(MessageHelper.DELIMITER)
-        .append(m_testMethodCount)
-        ;
-    
-    return buf.toString();
-  }
-}
diff --git a/src/org/testng/remote/strprotocol/TestMessage.java b/src/org/testng/remote/strprotocol/TestMessage.java
deleted file mode 100755
index 4e4ad36..0000000
--- a/src/org/testng/remote/strprotocol/TestMessage.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.testng.remote.strprotocol;
-
-import org.testng.ITestContext;
-
-
-/**
- * An <code>IStringMessage</code> implementation for test events.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class TestMessage implements IStringMessage {
-  protected final boolean m_testStart;
-  protected final String m_suiteName;
-  protected final String m_testName;
-  protected final int m_testMethodCount;
-  protected final int m_passedTestCount;
-  protected final int m_failedTestCount;
-  protected final int m_skippedTestCount;
-  protected final int m_successPercentageFailedTestCount;
-  
-  TestMessage(final boolean isTestStart,
-              final String suiteName,
-              final String testName,
-              final int methodCount,
-              final int passedCount,
-              final int failedCount,
-              final int skippedCount,
-              final int percentageCount) {
-    m_testStart = isTestStart;
-    m_suiteName = suiteName;
-    m_testName = testName;
-    m_testMethodCount = methodCount;
-    m_passedTestCount = passedCount;
-    m_failedTestCount = failedCount;
-    m_skippedTestCount = skippedCount;
-    m_successPercentageFailedTestCount = percentageCount;
-  }
-  
-  public TestMessage(final ITestContext testContext, final boolean isTestStart) {
-    this(isTestStart,
-         testContext.getSuite().getName(),
-         testContext.getName(),
-         testContext.getAllTestMethods().length,
-         testContext.getPassedTests().size(),
-         testContext.getFailedTests().size(),
-         testContext.getSkippedTests().size(),
-         testContext.getFailedButWithinSuccessPercentageTests().size());
-  }
-  
-  public boolean isMessageOnStart() {
-    return m_testStart;
-  }
-  
-  /**
-   * @see net.noco.testng.runner.IStringMessage#getMessageAsString()
-   */
-  public String getMessageAsString() {
-    StringBuffer buf = new StringBuffer();
-    
-    buf.append(m_testStart ? MessageHelper.TEST_START : MessageHelper.TEST_FINISH)
-        .append(MessageHelper.DELIMITER)
-        .append(m_suiteName)
-        .append(MessageHelper.DELIMITER)
-        .append(m_testName)
-        .append(MessageHelper.DELIMITER)
-        .append(m_testMethodCount)
-        .append(MessageHelper.DELIMITER)
-        .append(m_passedTestCount)
-        .append(MessageHelper.DELIMITER)
-        .append(m_failedTestCount)
-        .append(MessageHelper.DELIMITER)
-        .append(m_skippedTestCount)
-        .append(MessageHelper.DELIMITER)
-        .append(m_successPercentageFailedTestCount)
-        ;
-    
-    return buf.toString();
-  }
-
-  public String getSuiteName() {
-    return m_suiteName;
-  }
-  
-  public String getTestName() {
-    return m_testName;
-  }
-  
-  public boolean isTestStart() {
-    return m_testStart;
-  }
-  public int getTestMethodCount() {
-    return m_testMethodCount;
-  }
-  public int getSuccessPercentageFailedTestCount() {
-    return m_successPercentageFailedTestCount;
-  }
-  public int getFailedTestCount() {
-    return m_failedTestCount;
-  }
-  public int getPassedTestCount() {
-    return m_passedTestCount;
-  }
-  public int getSkippedTestCount() {
-    return m_skippedTestCount;
-  }
-}
diff --git a/src/org/testng/remote/strprotocol/TestResultMessage.java b/src/org/testng/remote/strprotocol/TestResultMessage.java
deleted file mode 100755
index f3f2fc7..0000000
--- a/src/org/testng/remote/strprotocol/TestResultMessage.java
+++ /dev/null
@@ -1,304 +0,0 @@
-package org.testng.remote.strprotocol;
-
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.ITestContext;
-import org.testng.ITestResult;
-import org.testng.SkipException;
-import org.testng.collections.Lists;
-
-
-/**
- * An <code>IStringMessage</code> implementation for test results events.
- *
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class TestResultMessage implements IStringMessage {
-  private static final Object[] EMPTY_PARAMS= new Object[0];
-  private static final Class[] EMPTY_TYPES= new Class[0];
-  
-  protected int    m_messageType;
-  protected String m_suiteName;
-  protected String m_testName;
-  protected String m_testClassName;
-  protected String m_testMethodName;
-  protected String m_stackTrace;
-  protected long m_startMillis;
-  protected long m_endMillis;
-  protected String[] m_parameters= new String[0];
-  protected String[] m_paramTypes= new String[0];
-  private String m_testDescription;
-
-  TestResultMessage(final int resultType,
-                    final String suiteName,
-                    final String testName,
-                    final String className,
-                    final String methodName,
-                    final String testDescriptor,
-                    final String[] params,
-                    final long startMillis,
-                    final long endMillis,
-                    final String stackTrace) 
-  {
-    init(resultType,
-         suiteName,
-         testName,
-         className,
-         methodName,
-         stackTrace,
-         startMillis,
-         endMillis,
-         extractParams(params),
-         extractParamTypes(params),
-         testDescriptor
-    );
-  }
-
-  public TestResultMessage(final String suiteName, 
-                           final String testName, 
-                           final ITestResult result) 
-  {
-    String stackTrace = null;
-
-    if((ITestResult.FAILURE == result.getStatus())
-      || (ITestResult.SUCCESS_PERCENTAGE_FAILURE == result.getStatus())) {
-      StringWriter sw = new StringWriter();
-      PrintWriter  pw = new PrintWriter(sw);
-      Throwable cause= result.getThrowable();
-      if (null != cause) {
-        cause.printStackTrace(pw);
-        stackTrace = sw.getBuffer().toString();
-      }
-      else {
-        stackTrace= "unknown stack trace";
-      }
-    }
-    else if(ITestResult.SKIP == result.getStatus() 
-        && (result.getThrowable() != null && SkipException.class.isAssignableFrom(result.getThrowable().getClass()))) {
-      stackTrace= result.getThrowable().getMessage();
-    }
-
-    init(MessageHelper.TEST_RESULT + result.getStatus(),
-         suiteName,
-         testName,
-         result.getTestClass().getName(),
-         result.getMethod().getMethod().getName(),
-         MessageHelper.replaceUnicodeCharactersWithAscii(stackTrace),
-         result.getStartMillis(),
-         result.getEndMillis(),
-         toString(result.getParameters(), result.getMethod().getMethod().getParameterTypes()),
-         toString(result.getMethod().getMethod().getParameterTypes()),
-         MessageHelper.replaceUnicodeCharactersWithAscii(result.getName())
-    );
-  }
-  
-  public TestResultMessage(final ITestContext testCtx, final ITestResult result) {
-    this(testCtx.getSuite().getName(), testCtx.getName(), result);
-  }
-
-  private void init(final int resultType,
-                    final String suiteName,
-                    final String testName,
-                    final String className,
-                    final String methodName,
-                    final String stackTrace,
-                    final long startMillis,
-                    final long endMillis,
-                    final String[] parameters,
-                    final String[] types,
-                    final String testDescription) {
-    m_messageType = resultType;
-    m_suiteName = suiteName;
-    m_testName = testName;
-    m_testClassName = className;
-    m_testMethodName = methodName;
-    m_stackTrace = stackTrace;
-    m_startMillis= startMillis;
-    m_endMillis= endMillis;
-    m_parameters= parameters;
-    m_paramTypes= types;
-    m_testDescription= testDescription;
-  }
-
-  public int getResult() {
-    return m_messageType;
-  }
-
-  public String getMessageAsString() {
-    StringBuffer buf = new StringBuffer();
-    StringBuffer parambuf = new StringBuffer();
-    
-    if(null != m_parameters && m_parameters.length > 0) {
-      for (int j = 0; j < m_parameters.length; j++) {
-        if (j > 0) parambuf.append(MessageHelper.PARAM_DELIMITER);
-        parambuf.append(m_paramTypes[j] + ":" + m_parameters[j]);
-      }
-    }
-
-    buf.append(m_messageType)
-       .append(MessageHelper.DELIMITER)
-       .append(m_suiteName)
-       .append(MessageHelper.DELIMITER)
-       .append(m_testName)
-       .append(MessageHelper.DELIMITER)
-       .append(m_testClassName)
-       .append(MessageHelper.DELIMITER)
-       .append(m_testMethodName)
-       .append(MessageHelper.DELIMITER)
-       .append(parambuf)
-       .append(MessageHelper.DELIMITER)
-       .append(m_startMillis)
-       .append(MessageHelper.DELIMITER)
-       .append(m_endMillis)
-       .append(MessageHelper.DELIMITER)
-       .append(MessageHelper.replaceNewLine(m_stackTrace))
-       .append(MessageHelper.DELIMITER)
-       .append(MessageHelper.replaceNewLine(m_testDescription))
-       ;
-
-    return buf.toString();
-  }
-
-  public String getSuiteName() {
-    return m_suiteName;
-  }
-
-  public String getTestClass() {
-    return m_testClassName;
-  }
-
-  public String getMethod() {
-    return m_testMethodName;
-  }
-
-  public String getName() {
-    return m_testName;
-  }
-  
-  public String getStackTrace() {
-    return m_stackTrace;
-  }
-  
-  public long getEndMillis() {
-    return m_endMillis;
-  }
-  
-  public long getStartMillis() {
-    return m_startMillis;
-  }
-
-  public String[] getParameters() {
-    return m_parameters;
-  }
-  
-  public String[] getParameterTypes() {
-    return m_paramTypes;
-  }
-  
-  public String getTestDescription() {
-    return m_testDescription;
-  }
-  
-  public String toDisplayString() {
-    StringBuffer buf= new StringBuffer(m_testMethodName);
-    
-    if(null != m_parameters && m_parameters.length > 0) {
-      buf.append("(");
-      for(int i= 0; i < m_parameters.length; i++) {
-        if(i > 0) buf.append(", ");
-        if("java.lang.String".equals(m_paramTypes[i]) && !("null".equals(m_parameters[i]) || "\"\"".equals(m_parameters[i]))) {
-          buf.append("\"").append(m_parameters[i]).append("\"");
-        }
-        else {
-          buf.append(m_parameters[i]);
-        }
-
-      }
-      buf.append(")");
-    }
-    
-    return buf.toString();
-  }
-  
-  @Override
-  public boolean equals(Object o) {
-    if(this == o) return true;
-    if(o == null || getClass() != o.getClass()) return false;
-
-    final TestResultMessage that = (TestResultMessage) o;
-
-    if(m_suiteName != null ? !m_suiteName.equals(that.m_suiteName) : that.m_suiteName != null) return false;
-    if(m_testName != null ? !m_testName.equals(that.m_testName) : that.m_testName != null) return false;
-    if(m_testClassName != null ? !m_testClassName.equals(that.m_testClassName) : that.m_testClassName != null) return false;
-    String toDisplayString= toDisplayString();
-    if(toDisplayString != null ? !toDisplayString.equals(that.toDisplayString()) : that.toDisplayString() != null) return false;
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = (m_suiteName != null ? m_suiteName.hashCode() : 0);
-    result = 29 * result + (m_testName != null ? m_testName.hashCode() : 0);
-    result = 29 * result + m_testClassName.hashCode();
-    result = 29 * result + toDisplayString().hashCode();
-    return result;
-  }
-  
-  private String[] toString(Object[] objects, Class[] objectClasses) {
-    if(null == objects) return new String[0];
-    List<String> result= Lists.newArrayList(objects.length);
-    for(Object o: objects) {
-      if(null == o) {
-        result.add("null");
-      }
-      else {
-        String tostring= o.toString();
-        if("".equals(tostring)) {
-          result.add("\"\"");
-        }
-        else {
-          result.add(MessageHelper.replaceNewLine(tostring));
-        }
-      }
-    }
-    
-    return result.toArray(new String[result.size()]);
-  }
-  
-  private String[] toString(Class[] classes) {
-    if(null == classes) return new String[0];
-    List<String> result= Lists.newArrayList(classes.length);
-    for(Class cls: classes) {
-      result.add(cls.getName());
-    }
-    
-    return result.toArray(new String[result.size()]);
-  }
-  
-  /**
-   * @param params
-   * @return
-   */
-  private String[] extractParamTypes(String[] params) {
-    List<String> result= Lists.newArrayList(params.length);
-    for(String s: params) {
-      result.add(s.substring(0, s.indexOf(':')));
-    }
-    
-    return result.toArray(new String[result.size()]);
-  }
-
-  private String[] extractParams(String[] params) {
-    List<String> result= Lists.newArrayList(params.length);
-    for(String s: params) {
-      result.add(MessageHelper.replaceNewLineReplacer(s.substring(s.indexOf(':') + 1)));
-    }
-    
-    return result.toArray(new String[result.size()]);
-  }
-}
diff --git a/src/org/testng/reporters/DotTestListener.java b/src/org/testng/reporters/DotTestListener.java
deleted file mode 100755
index a05aba9..0000000
--- a/src/org/testng/reporters/DotTestListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-
-public class DotTestListener extends TestListenerAdapter {
-  private int m_count = 0;
-
-  @Override
-  public void onTestFailure(ITestResult tr) {
-    log("F");
-  }
-
-  @Override
-  public void onTestSkipped(ITestResult tr) {
-    log("S");
-  }
-
-  @Override
-  public void onTestSuccess(ITestResult tr) {
-    log(".");
-  }
-
-  private void log(String string) {
-    System.out.print(string);
-    if (m_count++ % 40 == 0) {
-      System.out.println("");
-    }
-  }
-
-}
diff --git a/src/org/testng/reporters/EmailableReporter.java b/src/org/testng/reporters/EmailableReporter.java
deleted file mode 100755
index dc46486..0000000
--- a/src/org/testng/reporters/EmailableReporter.java
+++ /dev/null
@@ -1,486 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.IReporter;
-import org.testng.IResultMap;
-import org.testng.ISuite;
-import org.testng.ISuiteResult;
-import org.testng.ITest;
-import org.testng.ITestClass;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.Reporter;
-import org.testng.log4testng.Logger;
-import org.testng.reporters.util.StackTraceTools;
-import org.testng.xml.XmlSuite;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * Reported designed to render self-contained HTML top down view of a testing
- * suite.
- * 
- * @author Paul Mendelson
- * @since 5.2
- * @version $Revision: 719 $
- */
-public class EmailableReporter implements IReporter {
-  private static final Logger L = Logger.getLogger(EmailableReporter.class);
-  
-  // ~ Instance fields ------------------------------------------------------
-
-  private PrintWriter m_out;
-
-  private int m_row;
-
-  private int m_methodIndex;
-
-  private int m_rowTotal;
-
-  // ~ Methods --------------------------------------------------------------
-
-  /** Creates summary of the run */
-  public void generateReport(List<XmlSuite> xml, List<ISuite> suites, String outdir) {
-    try {
-      m_out = createWriter(outdir);
-    } 
-    catch (IOException e) {
-      L.error("output file", e);
-      return;
-    }
-    startHtml(m_out);
-    generateSuiteSummaryReport(suites);
-    generateMethodSummaryReport(suites);
-    generateMethodDetailReport(suites);
-    endHtml(m_out);
-    m_out.flush();
-    m_out.close();
-  }
-
-  protected PrintWriter createWriter(String outdir) throws IOException {
-    return new PrintWriter(new BufferedWriter(new FileWriter(new File(outdir, "emailable-report.html"))));
-  }
-
-  /** Creates a table showing the highlights of each test method with links to the method details */
-  protected void generateMethodSummaryReport(List<ISuite> suites) {
-    m_methodIndex = 0;
-    m_out.println("<a id=\"summary\"></a>");
-    startResultSummaryTable("passed");
-    for (ISuite suite : suites) {
-      if(suites.size()>1) {
-        titleRow(suite.getName(), 4);
-      }
-      Map<String, ISuiteResult> r = suite.getResults();
-      for (ISuiteResult r2 : r.values()) {
-        ITestContext testContext = r2.getTestContext();
-        String testName = testContext.getName();
-        resultSummary(testContext.getFailedConfigurations(), testName, "failed", " (configuration methods)");
-        resultSummary(testContext.getFailedTests(), testName, "failed", "");
-        resultSummary(testContext.getSkippedConfigurations(), testName, "skipped", " (configuration methods)");
-        resultSummary(testContext.getSkippedTests(), testName, "skipped", "");
-        resultSummary(testContext.getPassedTests(), testName, "passed", "");
-      }
-    }
-    m_out.println("</table>");
-  }
-
-  /** Creates a section showing known results for each method */
-  protected void generateMethodDetailReport(List<ISuite> suites) {
-    m_methodIndex = 0;
-    for (ISuite suite : suites) {
-      Map<String, ISuiteResult> r = suite.getResults();
-      for (ISuiteResult r2 : r.values()) {
-        ITestContext testContext = r2.getTestContext();
-        if (r.values().size() > 0) {
-          m_out.println("<h1>" + testContext.getName() + "</h1>");
-        }
-        resultDetail(testContext.getFailedConfigurations(), "failed");
-        resultDetail(testContext.getFailedTests(), "failed");
-        resultDetail(testContext.getSkippedConfigurations(), "skipped");
-        resultDetail(testContext.getSkippedTests(), "skipped");
-        resultDetail(testContext.getPassedTests(), "passed");
-      }
-    }
-  }
-
-  /**
-   * @param tests
-   */
-  private void resultSummary(IResultMap tests, String testname, String style, String details) {
-    if (tests.getAllResults().size() > 0) {
-      StringBuffer buff = new StringBuffer();
-      String lastClassName = "";
-      String lastTestName = "";
-      int mq = 0;
-      int cq = 0;
-      for (ITestNGMethod method : getMethodSet(tests)) {
-        m_row += 1;
-        m_methodIndex += 1;
-        ITestClass testClass = method.getTestClass();
-        String className = testClass.getName();
-        if (mq == 0) {
-          titleRow(testname + " — " + style + details, 4);
-        }
-        if (!className.equalsIgnoreCase(lastClassName)) {
-          if (mq > 0) {
-            cq += 1;
-            m_out.println("<tr class=\"" + style
-                + (cq % 2 == 0 ? "even" : "odd") + "\">" + "<td rowspan=\""
-                + mq + "\">" + lastClassName + buff);
-          }
-          mq = 0;
-          buff.setLength(0);
-          lastClassName = className;
-          lastTestName = testClass.getTestName();
-        }
-        Set<ITestResult> resultSet = tests.getResults(method);
-        long end = Long.MIN_VALUE;
-        long start = Long.MAX_VALUE;
-        for (ITestResult testResult : tests.getResults(method)) {
-          if (testResult.getEndMillis() > end) {
-            end = testResult.getEndMillis();
-          }
-          if (testResult.getStartMillis() < start) {
-            start = testResult.getStartMillis();
-          }
-        }
-        mq += 1;
-        if (mq > 1) {
-          buff.append("<tr class=\"" + style + (cq % 2 == 0 ? "odd" : "even")
-              + "\">");
-        }
-        String description = method.getDescription();
-        buff.append("<td><a href=\"#m" + m_methodIndex + "\">"
-            + qualifiedName(method)
-            + " " + (description != null && description.length() > 0
-                ? "(\"" + description + "\")" 
-                : "")
-            + "</a></td>" + "<td class=\"numi\">"
-            + resultSet.size() + "</td><td class=\"numi\">" + (end - start)
-            + "</td></tr>");
-      }
-      if (mq > 0) {
-        cq += 1;
-        m_out.println("<tr class=\"" + style + (cq % 2 == 0 ? "even" : "odd")
-            + "\">" + "<td rowspan=\"" + mq + "\">" + lastClassName
-            + "<br>\"" + lastTestName + "\"" + buff);
-      }
-    }
-  }
-
-  /** Starts and defines columns result summary table */
-  private void startResultSummaryTable(String style) {
-    tableStart(style);
-    m_out.println("<tr><th>Class</th>"
-            + "<th>Method</th><th># of<br/>Scenarios</th><th>Time<br/>(Msecs)</th></tr>");
-    m_row = 0;
-  }
-
-  private String qualifiedName(ITestNGMethod method) {
-    StringBuilder addon = new StringBuilder();
-    String[] groups = method.getGroups();
-    int length = groups.length;
-    if (length > 0 && !"basic".equalsIgnoreCase(groups[0])) {
-      addon.append("(");
-      for (int i = 0; i < length; i++) {
-        if (i > 0) addon.append(", ");
-          addon.append(groups[i]);
-        }
-      addon.append(")");
-    }
-
-    return "<b>" + method.getMethodName() + "</b> " + addon;
-  }
-
-  private void resultDetail(IResultMap tests, final String style) {
-    if (tests.getAllResults().size() > 0) {
-      int row = 0;
-      for (ITestNGMethod method : getMethodSet(tests)) {
-        row += 1;
-        m_methodIndex += 1;
-        String cname = method.getTestClass().getName();
-        m_out.println("<a id=\"m" + m_methodIndex + "\"></a><h2>" + cname + ":"
-            + method.getMethodName() + "</h2>");
-        int rq = 0;
-        Set<ITestResult> resultSet = tests.getResults(method);
-        for (ITestResult ans : resultSet) {
-          rq += 1;
-          Object[] parameters = ans.getParameters();
-          boolean hasParameters = parameters != null && parameters.length > 0;
-          if (hasParameters) {
-            if (rq == 1) {
-              tableStart("param");
-              m_out.print("<tr>");
-              for (int x = 1; x <= parameters.length; x++) {
-                m_out
-                    .print("<th style=\"padding-left:1em;padding-right:1em\">Parameter #"
-                        + x + "</th>");
-              }
-              m_out.println("</tr>");
-            }
-            m_out.print("<tr" + (rq % 2 == 0 ? " class=\"stripe\"" : "") + ">");
-            for (Object p : parameters) {
-              m_out
-                  .println("<td style=\"padding-left:.5em;padding-right:2em\">"
-                      + (p != null ? p.toString() : "null") + "</td>");
-            }
-            m_out.println("</tr>");
-          }
-          List<String> msgs = Reporter.getOutput(ans);
-          boolean hasReporterOutput = msgs.size() > 0;
-          Throwable exception=ans.getThrowable();
-          boolean hasThrowable = exception!=null;
-          if (hasReporterOutput||hasThrowable) {
-            String indent = " style=\"padding-left:3em\"";
-            if (hasParameters) {
-              m_out.println("<tr" + (rq % 2 == 0 ? " class=\"stripe\"" : "")
-                  + "><td" + indent + " colspan=\"" + parameters.length + "\">");
-            } 
-            else {
-              m_out.println("<div" + indent + ">");
-            }
-            if (hasReporterOutput) {
-              if(hasThrowable)
-                m_out.println("<h3>Test Messages</h3>");
-              for (String line : msgs) {
-                m_out.println(line + "<br/>");
-              }
-            }
-            if(hasThrowable) {
-              boolean wantsMinimalOutput = ans.getStatus()==ITestResult.SUCCESS;
-              if(hasReporterOutput)
-                m_out.println("<h3>"
-                    +(wantsMinimalOutput?"Expected Exception":"Failure")
-                    +"</h3>");
-              generateExceptionReport(exception,method);
-            }
-            if (hasParameters) {
-              m_out.println("</td></tr>");
-            } 
-            else {
-              m_out.println("</div>");
-            }
-          }
-          if (hasParameters) {
-            if (rq == resultSet.size()) {
-              m_out.println("</table>");
-            }
-          }
-        }
-        m_out.println("<p class=\"totop\"><a href=\"#summary\">back to summary</a></p>");
-      }
-    }
-  }
-
-  protected void generateExceptionReport(Throwable exception,ITestNGMethod method) {
-    generateExceptionReport(exception, method, exception.getLocalizedMessage());
-  }
-  
-  private void generateExceptionReport(Throwable exception,ITestNGMethod method,String title) {
-    m_out.println("<p>" + escape(title) + "</p>");
-    StackTraceElement[] s1= exception.getStackTrace();
-    Throwable t2= exception.getCause();
-    if(t2 == exception) {
-      t2= null;
-    }
-    int maxlines= Math.min(100,StackTraceTools.getTestRoot(s1, method));
-    for(int x= 0; x <= maxlines; x++) {
-      m_out.println((x>0 ? "<br/>at " : "") + escape(s1[x].toString()));
-    }
-    if(maxlines < s1.length) {
-      m_out.println("<br/>" + (s1.length-maxlines) + " lines not shown");
-    }
-    if(t2 != null) {
-      generateExceptionReport(t2, method, "Caused by " + t2.getLocalizedMessage());
-    }
-  }
-
-  private static String escape(String string) {
-    if(null == string) return string;
-    return string.replaceAll("<", "<").replaceAll(">", ">");
-  }
-  
-  /**
-   * @param tests
-   * @return
-   */
-  private Collection<ITestNGMethod> getMethodSet(IResultMap tests) {
-    Set r = new TreeSet<ITestNGMethod>(new TestSorter<ITestNGMethod>());
-    r.addAll(tests.getAllMethods());
-    return r;
-  }
-
-  public void generateSuiteSummaryReport(List<ISuite> suites) {
-    tableStart("param");
-    m_out.print("<tr><th>Test</th>");
-    tableColumnStart("Methods<br/>Passed");
-    tableColumnStart("Scenarios<br/>Passed");
-    tableColumnStart("# skipped");
-    tableColumnStart("# failed");
-    tableColumnStart("Total<br/>Time");
-    tableColumnStart("Included<br/>Groups");
-    tableColumnStart("Excluded<br/>Groups");
-    m_out.println("</tr>");
-    NumberFormat formatter = new DecimalFormat("#,##0.0");
-    int qty_tests = 0;
-    int qty_pass_m = 0;
-    int qty_pass_s = 0;
-    int qty_skip = 0;
-    int qty_fail = 0;
-    long time_start = Long.MAX_VALUE;
-    long time_end = Long.MIN_VALUE;
-    for (ISuite suite : suites) {
-      if (suites.size() > 1) {
-        titleRow(suite.getName(), 7);
-      }
-      Map<String, ISuiteResult> tests = suite.getResults();
-      for (ISuiteResult r : tests.values()) {
-        qty_tests += 1;
-        ITestContext overview = r.getTestContext();
-        startSummaryRow(overview.getName());
-        int q = getMethodSet(overview.getPassedTests()).size();
-        qty_pass_m += q;
-        summaryCell(q,Integer.MAX_VALUE);
-        q = overview.getPassedTests().size();
-        qty_pass_s += q;
-        summaryCell(q,Integer.MAX_VALUE);
-        q = getMethodSet(overview.getSkippedTests()).size();
-        qty_skip += q;
-        summaryCell(q,0);
-        q = getMethodSet(overview.getFailedTests()).size();
-        qty_fail += q;
-        summaryCell(q,0);
-        time_start = Math.min(overview.getStartDate().getTime(), time_start);
-        time_end = Math.max(overview.getEndDate().getTime(), time_end);
-        summaryCell(formatter.format(
-            (overview.getEndDate().getTime() - overview.getStartDate().getTime()) / 1000.)
-            + " seconds", true);
-        summaryCell(overview.getIncludedGroups());
-        summaryCell(overview.getExcludedGroups());
-        m_out.println("</tr>");
-      }
-    }
-    if (qty_tests > 1) {
-      m_out.println("<tr class=\"total\"><td>Total</td>");
-      summaryCell(qty_pass_m,Integer.MAX_VALUE);
-      summaryCell(qty_pass_s,Integer.MAX_VALUE);
-      summaryCell(qty_skip,0);
-      summaryCell(qty_fail,0);
-      summaryCell(formatter.format((time_end - time_start) / 1000.) + " seconds", true);
-      m_out.println("<td colspan=\"2\"> </td></tr>");
-    }
-    m_out.println("</table>");
-  }
-
-  private void summaryCell(String[] val) {
-    StringBuffer b = new StringBuffer();
-    for (String v : val) {
-      b.append(v + " ");
-    }
-    summaryCell(b.toString(),true);
-  }
-
-  private void summaryCell(String v,boolean isgood) {
-    m_out.print("<td class=\"numi"+(isgood?"":"_attn")+"\">" + v + "</td>");
-  }
-
-  private void startSummaryRow(String label) {
-    m_row += 1;
-    m_out.print("<tr" + (m_row % 2 == 0 ? " class=\"stripe\"" : "")
-            + "><td style=\"text-align:left;padding-right:2em\">" + label
-            + "</td>");
-  }
-
-  private void summaryCell(int v,int maxexpected) {
-    summaryCell(String.valueOf(v),v<=maxexpected);
-    m_rowTotal += v;
-  }
-
-  /**
-   * 
-   */
-  private void tableStart(String cssclass) {
-    m_out.println("<table cellspacing=0 cellpadding=0"
-        + (cssclass != null ? " class=\"" + cssclass + "\""
-            : " style=\"padding-bottom:2em\"") + ">");
-    m_row = 0;
-  }
-
-  private void tableColumnStart(String label) {
-    m_out.print("<th class=\"numi\">" + label + "</th>");
-  }
-
-  private void titleRow(String label, int cq) {
-    m_out.println("<tr><th colspan=\"" + cq + "\">" + label + "</th></tr>");
-    m_row = 0;
-  }
-  
-  protected void writeStyle(String[] formats,String[] targets) {
-    
-  }
-
-  /** Starts HTML stream */
-  protected void startHtml(PrintWriter out) {
-    out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">");
-    out.println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
-    out.println("<head>");
-    out.println("<title>TestNG:  Unit Test</title>");
-    out.println("<style type=\"text/css\">");
-    out.println("table caption,table.info_table,table.param,table.passed,table.failed {margin-bottom:10px;border:1px solid #000099;border-collapse:collapse;empty-cells:show;}");
-    out.println("table.info_table td,table.info_table th,table.param td,table.param th,table.passed td,table.passed th,table.failed td,table.failed th {");
-    out.println("border:1px solid #000099;padding:.25em .5em .25em .5em");
-    out.println("}");
-    out.println("table.param th {vertical-align:bottom}");
-    out.println("td.numi,th.numi,td.numi_attn {");
-    out.println("text-align:right");
-    out.println("}");
-    out.println("tr.total td {font-weight:bold}");
-    out.println("table caption {");
-    out.println("text-align:center;font-weight:bold;");
-    out.println("}");
-    out.println("table.passed tr.stripe td,table tr.passedodd td {background-color: #00AA00;}");
-    out.println("table.passed td,table tr.passedeven td {background-color: #33FF33;}");
-    out.println("table.passed tr.stripe td,table tr.skippedodd td {background-color: #cccccc;}");
-    out.println("table.passed td,table tr.skippedodd td {background-color: #dddddd;}");
-    out.println("table.failed tr.stripe td,table tr.failedodd td,table.param td.numi_attn {background-color: #FF3333;}");
-    out.println("table.failed td,table tr.failedeven td,table.param tr.stripe td.numi_attn {background-color: #DD0000;}");
-    out.println("tr.stripe td,tr.stripe th {background-color: #E6EBF9;}");
-    out.println("p.totop {font-size:85%;text-align:center;border-bottom:2px black solid}");
-    out.println("div.shootout {padding:2em;border:3px #4854A8 solid}");
-    out.println("</style>");
-    out.println("</head>");
-    out.println("<body>");
-  }
-
-  /** Finishes HTML stream */
-  protected void endHtml(PrintWriter out) {
-    out.println("</body></html>");
-  }
-
-  // ~ Inner Classes --------------------------------------------------------
-  /** Arranges methods by classname and method name */
-  private class TestSorter<T extends ITestNGMethod> implements Comparator {
-    // ~ Methods -------------------------------------------------------------
-
-    /** Arranges methods by classname and method name */
-    public int compare(Object o1, Object o2) {
-      int r = ((T) o1).getTestClass().getName().compareTo(((T) o2).getTestClass().getName());
-      if (r == 0) {
-        r = ((T) o1).getMethodName().compareTo(((T) o2).getMethodName());
-      }
-      return r;
-    }
-  }
-}
diff --git a/src/org/testng/reporters/ExitCodeListener.java b/src/org/testng/reporters/ExitCodeListener.java
deleted file mode 100755
index baf7f5c..0000000
--- a/src/org/testng/reporters/ExitCodeListener.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.TestNG;
-
-/**
- * A very simple <code>ITestListener</code> used by the TestNG runner to 
- * find out the exit code.
- * 
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class ExitCodeListener extends TestNG.ExitCodeListener {
-  public ExitCodeListener() {
-    super();
-  }
-
-  public ExitCodeListener(TestNG runner) {
-    super(runner);
-  }
-}
diff --git a/src/org/testng/reporters/FailedReporter.java b/src/org/testng/reporters/FailedReporter.java
deleted file mode 100755
index 6017b9c..0000000
--- a/src/org/testng/reporters/FailedReporter.java
+++ /dev/null
@@ -1,227 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.IReporter;
-import org.testng.ISuite;
-import org.testng.ISuiteResult;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.MethodHelper;
-import org.testng.internal.Utils;
-import org.testng.internal.annotations.Sets;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlInclude;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * This reporter is responsible for creating testng-failed.xml
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class FailedReporter extends TestListenerAdapter implements IReporter {
-  public static final String TESTNG_FAILED_XML = "testng-failed.xml";
-  
-  private XmlSuite m_xmlSuite;
-
-  public FailedReporter() {
-  }
-
-  public FailedReporter(XmlSuite xmlSuite) {
-    m_xmlSuite = xmlSuite;
-  }
-
-  public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
-    for(int i= 0; i < xmlSuites.size(); i++) {
-      generateFailureSuite(xmlSuites.get(i), suites.get(i), outputDirectory);
-    }
-  }
-
-  protected void generateFailureSuite(XmlSuite xmlSuite, ISuite suite, String outputDir) {
-    XmlSuite failedSuite = (XmlSuite) xmlSuite.clone();
-    failedSuite.setName("Failed suite [" + xmlSuite.getName() + "]");
-    m_xmlSuite= failedSuite;
-
-    Map<String, XmlTest> xmlTests= Maps.newHashMap();
-    for(XmlTest xmlT: xmlSuite.getTests()) {
-      xmlTests.put(xmlT.getName(), xmlT);
-    }
-    
-    Map<String, ISuiteResult> results= suite.getResults();
-    
-    for(String name: results.keySet()) {
-      ISuiteResult suiteResult= results.get(name);
-      ITestContext testContext= suiteResult.getTestContext();
-
-      generateXmlTest(suite, 
-                      xmlTests.get(testContext.getName()), 
-                      testContext, 
-                      testContext.getFailedTests().getAllResults(), 
-                      testContext.getSkippedTests().getAllResults());
-    }
-
-    if(null != failedSuite.getTests() && failedSuite.getTests().size() > 0) {
-      Utils.writeUtf8File(outputDir, TESTNG_FAILED_XML, failedSuite.toXml());
-      Utils.writeUtf8File(suite.getOutputDirectory(), TESTNG_FAILED_XML, failedSuite.toXml());
-    }
-  }
-
-  /**
-   * Do not rely on this method. The class is used as <code>IReporter</code>.
-   * 
-   * @see org.testng.TestListenerAdapter#onFinish(org.testng.ITestContext)
-   * @deprecated this class is used now as IReporter
-   */
-  @Override
-  public void onFinish(ITestContext context) {
-    // Delete the previous file
-//    File f = new File(context.getOutputDirectory(), getFileName(context));
-//    f.delete();
-    
-    // Calculate the methods we need to rerun :  failed tests and
-    // their dependents
-//    List<ITestResult> failedTests = getFailedTests();
-//    List<ITestResult> skippedTests = getSkippedTests();
-  }
-  
-  private void generateXmlTest(ISuite suite, 
-                               XmlTest xmlTest, 
-                               ITestContext context, 
-                               Collection<ITestResult> failedTests, 
-                               Collection<ITestResult> skippedTests) {
-    // Note:  we can have skipped tests and no failed tests
-    // if a method depends on nonexistent groups
-    if (skippedTests.size() > 0 || failedTests.size() > 0) {
-      Set<ITestNGMethod> methodsToReRun = Sets.newHashSet();
-      
-      // Get the transitive closure of all the failed methods and the methods
-      // they depend on
-      Collection[] allTests = new Collection[] {
-          failedTests, skippedTests
-      };
-
-      for (Collection<ITestResult> tests : allTests) {
-        for (ITestResult failedTest : tests) {
-          ITestNGMethod current = failedTest.getMethod();
-          if (current.isTest()) {
-            methodsToReRun.add(current);
-            ITestNGMethod method = failedTest.getMethod();
-            // Don't count configuration methods
-            if (method.isTest()) {
-              List<ITestNGMethod> methodsDependedUpon =
-                  MethodHelper.getMethodsDependedUpon(method, context.getAllTestMethods());
-              
-              for (ITestNGMethod m : methodsDependedUpon) {
-                if (m.isTest()) {
-                  methodsToReRun.add(m);
-                }
-              }
-            }
-          }
-        }
-      }
-      
-      //
-      // Now we have all the right methods.  Go through the list of
-      // all the methods that were run and only pick those that are
-      // in the methodToReRun map.  Since the methods are already
-      // sorted, we don't need to sort them again.
-      //
-      List<ITestNGMethod> result = Lists.newArrayList();
-      for (ITestNGMethod m : context.getAllTestMethods()) {
-        if (methodsToReRun.contains(m)) {
-          result.add(m);
-        }
-      }
-
-      methodsToReRun.clear();
-      Collection<ITestNGMethod> invoked= suite.getInvokedMethods();
-      for(ITestNGMethod tm: invoked) {
-        if(!tm.isTest()) {
-          methodsToReRun.add(tm);
-        }
-      }
-      
-      result.addAll(methodsToReRun);
-      createXmlTest(context, result, xmlTest);
-    }
-  }
-
-  /**
-   * Generate testng-failed.xml
-   */
-  private void createXmlTest(ITestContext context, List<ITestNGMethod> methods, XmlTest srcXmlTest) {
-    XmlTest xmlTest = new XmlTest(m_xmlSuite);
-    xmlTest.setName(context.getName() + "(failed)");
-    xmlTest.setAnnotations(srcXmlTest.getAnnotations());
-    xmlTest.setBeanShellExpression(srcXmlTest.getExpression());
-    xmlTest.setIncludedGroups(srcXmlTest.getIncludedGroups());
-    xmlTest.setExcludedGroups(srcXmlTest.getExcludedGroups());
-    xmlTest.setParallel(srcXmlTest.getParallel());
-    xmlTest.setParameters(srcXmlTest.getParameters());
-    xmlTest.setJUnit(srcXmlTest.isJUnit());
-    List<XmlClass> xmlClasses = createXmlClasses(methods);
-    xmlTest.setXmlClasses(xmlClasses);
-  }
-    
-  /**
-   * @param methods The methods we want to represent
-   * @return A list of XmlClass objects (each representing a <class> tag) based
-   * on the parameter methods
-   */
-  private List<XmlClass> createXmlClasses(List<ITestNGMethod> methods) {
-    List<XmlClass> result = Lists.newArrayList();
-    Map<Class, Set<ITestNGMethod>> methodsMap= Maps.newHashMap();
-    
-    for (ITestNGMethod m : methods) {
-      Object[] instances= m.getInstances();
-      Class clazz= instances == null || instances.length == 0 ? m.getRealClass() : instances[0].getClass();
-      Set<ITestNGMethod> methodList= methodsMap.get(clazz);
-      if(null == methodList) {
-        methodList= new HashSet<ITestNGMethod>();
-        methodsMap.put(clazz, methodList);
-      }
-      methodList.add(m);
-    }
-    
-    for(Map.Entry<Class, Set<ITestNGMethod>> entry: methodsMap.entrySet()) {
-      Class clazz= entry.getKey();
-      Set<ITestNGMethod> methodList= entry.getValue();
-      // @author Borojevic 
-      // Need to check all the methods, not just @Test ones.
-      XmlClass xmlClass= new XmlClass(clazz.getName(), Boolean.FALSE);
-      List<XmlInclude> methodNames= Lists.newArrayList(methodList.size());
-      for(ITestNGMethod m: methodList) {
-        methodNames.add(new XmlInclude(m.getMethod().getName(), m.getFailedInvocationNumbers()));
-      }
-      xmlClass.setIncludedMethods(methodNames);
-      result.add(xmlClass);
-      
-    }
-        
-    return result;
-  }
-  
-  /**
-   * TODO:  we might want to make that more flexible in the future, but for
-   * now, hardcode the file name
-   */
-  private String getFileName(ITestContext context) {
-    return TESTNG_FAILED_XML;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FailedReporter] " + s);
-  }
-}
diff --git a/src/org/testng/reporters/HtmlHelper.java b/src/org/testng/reporters/HtmlHelper.java
deleted file mode 100755
index 0718ce2..0000000
--- a/src/org/testng/reporters/HtmlHelper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.testng.reporters;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.testng.internal.Utils;
-
-public class HtmlHelper {
-  private static final String CSS_FILE_NAME = "testng.css";
-  private static final String MY_CSS_FILE_NAME = "my-testng.css";
-
-  static public String getCssString() {
-    return getCssString("..");
-  }
-
-  static public String getCssString(String directory) {
-    return
-      "<link href=\"" + directory + "/" + CSS_FILE_NAME + "\" rel=\"stylesheet\" type=\"text/css\" />\n" +
-      "<link href=\"" + directory + "/"+ MY_CSS_FILE_NAME + "\" rel=\"stylesheet\" type=\"text/css\" />\n";
-  }
-
-  public static File generateStylesheet(String outputDirectory) throws IOException {
-    File stylesheetFile = new File(outputDirectory, CSS_FILE_NAME);
-    if (!stylesheetFile.exists()) {
-      Utils.writeResourceToFile(stylesheetFile, CSS_FILE_NAME, TestHTMLReporter.class);
-    }
-    return stylesheetFile;
-  }
-}
diff --git a/src/org/testng/reporters/JUnitXMLReporter.java b/src/org/testng/reporters/JUnitXMLReporter.java
deleted file mode 100755
index fb6a53d..0000000
--- a/src/org/testng/reporters/JUnitXMLReporter.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package org.testng.reporters;
-
-
-import org.testng.ITestContext;
-import org.testng.ITestResult;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.IResultListener;
-import org.testng.internal.Utils;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.regex.Pattern;
-
-/**
- * A JUnit XML report generator (replacing the original JUnitXMLReporter that was
- * based on XML APIs).
- *
- * @author <a href='mailto:the[dot]mindstorm[at]gmail[dot]com'>Alex Popescu</a>
- */
-public class JUnitXMLReporter implements IResultListener {
-  private static final Pattern ENTITY= Pattern.compile("&[a-zA-Z]+;.*");
-  private static final Pattern LESS= Pattern.compile("<");
-  private static final Pattern GREATER= Pattern.compile(">");
-  private static final Pattern SINGLE_QUOTE = Pattern.compile("'");
-  private static final Pattern QUOTE = Pattern.compile("\"");
-  private static final Map<String, Pattern> ATTR_ESCAPES= Maps.newHashMap();
-  
-  static {
-    ATTR_ESCAPES.put("<", LESS);
-    ATTR_ESCAPES.put(">", GREATER);
-    ATTR_ESCAPES.put("'", SINGLE_QUOTE);
-    ATTR_ESCAPES.put(""", QUOTE);
-  }
-  
-
-  /**
-   * keep lists of all the results
-   */
-  private int m_numPassed= 0;
-  private int m_numFailed= 0;
-  private int m_numSkipped= 0;
-  private int m_numFailedButIgnored= 0;
-  private List<ITestResult> m_allTests =
-      Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_configIssues =
-      Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private Map<String, String> m_fileNameMap = Maps.newHashMap();
-  private int m_fileNameIncrementer = 0;
-
-  public void onTestStart(ITestResult result) {
-  }
-
-  /**
-   * Invoked each time a test succeeds.
-   */
-  public void onTestSuccess(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numPassed++;
-  }
-
-  public void onTestFailedButWithinSuccessPercentage(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numFailedButIgnored++;
-  }
-
-  /**
-   * Invoked each time a test fails.
-   */
-  public void onTestFailure(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numFailed++;
-  }
-
-  /**
-   * Invoked each time a test is skipped.
-   */
-  public void onTestSkipped(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numSkipped++;
-  }
-
-  /**
-   * Invoked after the test class is instantiated and before
-   * any configuration method is called.
-   *
-   */
-  public void onStart(ITestContext context) {
-	  
-  }
-
-  /**
-   * Invoked after all the tests have run and all their
-   * Configuration methods have been called.
-   *
-   */
-  public void onFinish(ITestContext context) {
-	generateReport(context);
-    resetAll();
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationFailure(org.testng.ITestResult)
-   */
-  public void onConfigurationFailure(ITestResult itr) {
-    m_configIssues.add(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSkip(org.testng.ITestResult)
-   */
-  public void onConfigurationSkip(ITestResult itr) {
-    m_configIssues.add(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSuccess(org.testng.ITestResult)
-   */
-  public void onConfigurationSuccess(ITestResult itr) {
-  }
-
-  /**
-   * generate the XML report given what we know from all the test results
-   */
-  protected void generateReport(ITestContext context) {
-	  
-      XMLStringBuffer document= new XMLStringBuffer("");
-      document.setXmlDetails("1.0", "UTF-8");
-      Properties attrs= new Properties();
-      attrs.setProperty(XMLConstants.ATTR_NAME, encodeAttr(context.getName())); // ENCODE
-      attrs.setProperty(XMLConstants.ATTR_TESTS, "" + m_allTests.size());
-      attrs.setProperty(XMLConstants.ATTR_FAILURES, "" + m_numFailed);
-      attrs.setProperty(XMLConstants.ATTR_ERRORS, "0");
-      attrs.setProperty(XMLConstants.ATTR_TIME, ""
-          + ((context.getEndDate().getTime() - context.getStartDate().getTime()) / 1000.0));
-
-      document.push(XMLConstants.TESTSUITE, attrs);
-      document.addEmptyElement(XMLConstants.PROPERTIES);
-
-      for(ITestResult tr : m_configIssues) {
-        createElement(document, tr);
-      }
-      for(ITestResult tr : m_allTests) {
-        createElement(document, tr);
-      }
-
-      document.pop();
-      Utils.writeUtf8File(context.getOutputDirectory(),generateFileName(context) + ".xml", document.toXML());
-  }
-
-  private void createElement(XMLStringBuffer doc, ITestResult tr) {
-    Properties attrs= new Properties();
-    long elapsedTimeMillis= tr.getEndMillis() - tr.getStartMillis();
-    String name= tr.getMethod().isTest() ? tr.getName() : Utils.detailedMethodName(tr.getMethod(), false);
-    attrs.setProperty(XMLConstants.ATTR_NAME, name);
-    attrs.setProperty(XMLConstants.ATTR_CLASSNAME, tr.getTestClass().getRealClass().getName());
-    attrs.setProperty(XMLConstants.ATTR_TIME, "" + (((double) elapsedTimeMillis) / 1000));
-
-    if((ITestResult.FAILURE == tr.getStatus()) || (ITestResult.SKIP == tr.getStatus())) {
-      doc.push(XMLConstants.TESTCASE, attrs);
-
-      if(ITestResult.FAILURE == tr.getStatus()) {
-        createFailureElement(doc, tr);
-      }
-      else if(ITestResult.SKIP == tr.getStatus()) {
-        createSkipElement(doc, tr);
-      }
-
-      doc.pop();
-    }
-    else {
-      doc.addEmptyElement(XMLConstants.TESTCASE, attrs);
-    }
-  }
-
-  private void createFailureElement(XMLStringBuffer doc, ITestResult tr) {
-    Properties attrs= new Properties();
-    Throwable t= tr.getThrowable();
-    if(t != null) {
-      attrs.setProperty(XMLConstants.ATTR_TYPE, t.getClass().getName());
-      String message= t.getMessage();
-      if((message != null) && (message.length() > 0)) {
-        attrs.setProperty(XMLConstants.ATTR_MESSAGE, encodeAttr(message)); // ENCODE
-      }
-      doc.push(XMLConstants.FAILURE, attrs);
-      doc.addCDATA(Utils.stackTrace(t, false)[0]);
-      doc.pop();
-    }
-    else {
-      doc.addEmptyElement(XMLConstants.FAILURE); // THIS IS AN ERROR
-    }
-  }
-
-  private void createSkipElement(XMLStringBuffer doc, ITestResult tr) {
-    doc.addEmptyElement("skipped");
-  }
-  
-  private String encodeAttr(String attr) {
-    String result= replaceAmpersand(attr, ENTITY);
-    for(Map.Entry<String, Pattern> e: ATTR_ESCAPES.entrySet()) {
-      result= e.getValue().matcher(result).replaceAll(e.getKey());
-    }
-
-    return result;
-  }
-
-  private String replaceAmpersand(String str, Pattern pattern) {
-    int start = 0;
-    int idx = str.indexOf('&', start);
-    if(idx == -1) return str;
-    StringBuffer result= new StringBuffer();
-    while(idx != -1) {
-      result.append(str.substring(start, idx));
-      if(pattern.matcher(str.substring(idx)).matches()) {
-        // do nothing it is an entity;
-        result.append("&");
-      }
-      else {
-        result.append("&");
-      }
-      start= idx + 1;
-      idx= str.indexOf('&', start);
-    }
-    result.append(str.substring(start));
-    
-    return result.toString();
-  }
-  
-  
-  /**
-	 * Reset all member variables for next test.
-	 * */
-	private void resetAll() {
-		m_allTests = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-		m_configIssues = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-		m_numFailed = 0;
-		m_numFailedButIgnored = 0;
-		m_numPassed = 0;
-		m_numSkipped = 0;
-	}
-	
-	/**
-	 * @author Borojevic Created this method to guarantee unique file names for
-	 *         reports.<br>
-	 *         Also, this will guarantee that the old reports are overwritten
-	 *         when tests are run again.
-	 * @param context
-	 *            test context
-	 * @return unique name for the file associated with this test context.
-	 * */
-	private String generateFileName(ITestContext context) {
-		String fileName = null;
-		String keyToSearch = context.getSuite().getName() + context.getName();
-		if (m_fileNameMap.get(keyToSearch) == null) {
-			fileName = context.getName();
-		} else {
-			fileName = context.getName() + m_fileNameIncrementer++;
-		}
-
-		m_fileNameMap.put(keyToSearch, fileName);
-		return fileName;
-	}
-}
diff --git a/src/org/testng/reporters/JUnitXMLReporter2.java b/src/org/testng/reporters/JUnitXMLReporter2.java
deleted file mode 100755
index e1b516b..0000000
--- a/src/org/testng/reporters/JUnitXMLReporter2.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package org.testng.reporters;
-
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.testng.ISuite;
-import org.testng.ITestContext;
-import org.testng.ITestResult;
-import org.testng.collections.Lists;
-import org.testng.internal.IResultListener;
-import org.testng.internal.Utils;
-import org.w3c.dom.CDATASection;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * this XML Reporter will produce XML format compatible with the XMLJUnitResultFormatter from ant
- * this enables TestNG output to be processed by tools that already handle this format
- *
- * borrows heavily from ideas in org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
- * 
- * this is the original version which was replaced by JUnitXMLReporter
- * @TODO: clean up
- */
-public class JUnitXMLReporter2 implements IResultListener {
-
-  private String m_outputFileName= null;
-  private File m_outputFile= null;
-  private ITestContext m_testContext= null;
-
-  /**
-   * keep lists of all the results
-   */
-  private int m_numPassed= 0;
-  private int m_numFailed= 0;
-  private int m_numSkipped= 0;
-  private int m_numFailedButIgnored= 0;
-  private List<ITestResult> m_allTests 
-      = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-  private List<ITestResult> m_configIssues
-      = Collections.synchronizedList(Lists.<ITestResult>newArrayList());
-
-  public void onTestStart(ITestResult result) {
-  }
-
-  /**
-   * Invoked each time a test succeeds.
-   */
-  public void onTestSuccess(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numPassed++;
-  }
-
-  public void onTestFailedButWithinSuccessPercentage(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numFailedButIgnored++;
-  }
-
-  /**
-   * Invoked each time a test fails.
-   */
-  public void onTestFailure(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numFailed++;
-  }
-
-  /**
-   * Invoked each time a test is skipped.
-   */
-  public void onTestSkipped(ITestResult tr) {
-    m_allTests.add(tr);
-    m_numSkipped++;
-  }
-
-  /**
-   * Invoked after the test class is instantiated and before
-   * any configuration method is called.
-   *
-   */
-  public void onStart(ITestContext context) {
-    m_outputFileName= context.getOutputDirectory() + File.separator + context.getName() + ".xml";
-    m_outputFile= new File(m_outputFileName);
-    m_testContext= context;
-  }
-
-  /**
-   * Invoked after all the tests have run and all their
-   * Configuration methods have been called.
-   *
-   */
-  public void onFinish(ITestContext context) {
-    generateReport();
-  }
-
-  /**
-   * generate the XML report given what we know from all the test results
-   */
-  protected void generateReport() {
-    try {
-      DocumentBuilderFactory docBuilderFactory= DocumentBuilderFactory.newInstance();
-      docBuilderFactory.setNamespaceAware(true); // so we can transform it later
-      DocumentBuilder docBuilder= docBuilderFactory.newDocumentBuilder();
-      Document d= docBuilder.newDocument();
-      Element rootElement= d.createElement(XMLConstants.TESTSUITE);
-      rootElement.setAttribute(XMLConstants.ATTR_NAME, m_testContext.getName());
-
-      Element propsElement= d.createElement(XMLConstants.PROPERTIES);
-      rootElement.appendChild(propsElement);
-
-      // properties. just TestNG properties or also System properties?
-      ISuite suite= m_testContext.getSuite();
-
-      rootElement.setAttribute(XMLConstants.ATTR_TESTS, "" + m_allTests.size());
-      rootElement.setAttribute(XMLConstants.ATTR_FAILURES, "" + m_numFailed);
-      rootElement.setAttribute(XMLConstants.ATTR_ERRORS, "0"); // FIXME
-
-      long elapsedTimeMillis= m_testContext.getEndDate().getTime()
-        - m_testContext.getStartDate().getTime();
-      rootElement.setAttribute(XMLConstants.ATTR_TIME, "" + (elapsedTimeMillis / 1000.0));
-
-      for(ITestResult tr: m_configIssues) {
-        Element element= createElement(d, tr);
-        rootElement.appendChild(element);
-      }
-      for(ITestResult tr : m_allTests) {
-        Element testCaseElement= createElement(d, tr);
-        rootElement.appendChild(testCaseElement);
-      }
-
-      BufferedWriter fw= new BufferedWriter(new FileWriter(m_outputFile));
-
-      Transformer transformer= TransformerFactory.newInstance().newTransformer();
-      transformer.transform(new DOMSource(rootElement), new StreamResult(fw));
-      fw.flush();
-      fw.close();
-    }
-    catch(IOException ioe) {
-      ioe.printStackTrace();
-      System.err.println("failed to create JUnitXML because of " + ioe);
-    }
-    catch(ParserConfigurationException pce) {
-      pce.printStackTrace();
-      System.err.println("failed to create JUnitXML because of " + pce);
-    }
-    catch(TransformerException te) {
-      te.printStackTrace();
-      System.err.println("Error while writing out JUnitXML because of " + te);
-    }
-  }
-
-  private Element createElement(Document doc, ITestResult tr) {
-    Element resultElement= doc.createElement(XMLConstants.TESTCASE);
-    long elapsedTimeMillis= tr.getEndMillis() - tr.getStartMillis();
-    String name= tr.getMethod().isTest() ? tr.getName() : Utils.detailedMethodName(tr.getMethod(), false);
-    resultElement.setAttribute(XMLConstants.ATTR_NAME, name);
-    resultElement.setAttribute(XMLConstants.ATTR_CLASSNAME,
-                               tr.getTestClass().getRealClass().getName());
-    resultElement.setAttribute(XMLConstants.ATTR_TIME, 
-                               "" + ((double) elapsedTimeMillis)/1000);
-    if (ITestResult.FAILURE == tr.getStatus()) {
-      Element nested = createFailureElement(doc, tr); 
-      resultElement.appendChild(nested);
-    }
-    else if (ITestResult.SKIP == tr.getStatus()) {
-      Element nested = createSkipElement(doc, tr);
-      resultElement.appendChild(nested);
-    }
-    
-    return resultElement;
-  }
-  
-  private Element createFailureElement(Document doc, ITestResult tr) {
-    Element nested= doc.createElement(XMLConstants.FAILURE);
-    Throwable t = tr.getThrowable();
-    if (t != null) {
-      nested.setAttribute(XMLConstants.ATTR_TYPE, t.getClass().getName());
-      String message = t.getMessage();
-      if ((message != null) && (message.length() > 0)) {
-        nested.setAttribute(XMLConstants.ATTR_MESSAGE, message);
-      }
-      CDATASection trace= doc.createCDATASection(Utils.stackTrace(t, false)[0]);
-      nested.appendChild(trace);
-    }
-    
-    return nested;
-  }
-  
-  private Element createSkipElement(Document doc, ITestResult tr) {
-    return doc.createElement("skipped");
-  }
-  
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationFailure(org.testng.ITestResult)
-   */
-  public void onConfigurationFailure(ITestResult itr) {
-    m_configIssues.add(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSkip(org.testng.ITestResult)
-   */
-  public void onConfigurationSkip(ITestResult itr) {
-    m_configIssues.add(itr);
-  }
-
-  /**
-   * @see org.testng.internal.IConfigurationListener#onConfigurationSuccess(org.testng.ITestResult)
-   */
-  public void onConfigurationSuccess(ITestResult itr) {
-  }
-}
diff --git a/src/org/testng/reporters/SuiteHTMLReporter.java b/src/org/testng/reporters/SuiteHTMLReporter.java
deleted file mode 100755
index c703339..0000000
--- a/src/org/testng/reporters/SuiteHTMLReporter.java
+++ /dev/null
@@ -1,733 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.IReporter;
-import org.testng.ISuite;
-import org.testng.ISuiteResult;
-import org.testng.ITestClass;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.Reporter;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.Utils;
-import org.testng.xml.XmlSuite;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This class implements an HTML reporter for suites.
- * 
- * @author cbeust
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class SuiteHTMLReporter implements IReporter {
-  public static final String METHODS_CHRONOLOGICAL = "methods.html";
-  public static final String METHODS_ALPHABETICAL = "methods-alphabetical.html";
-  public static final String GROUPS = "groups.html";
-  public static final String CLASSES = "classes.html";
-  public static final String REPORTER_OUTPUT = "reporter-output.html";
-  public static final String METHODS_NOT_RUN = "methods-not-run.html";
-  public static final String TESTNG_XML = "testng.xml.html";
-  
-  private Map<String, ITestClass> m_classes = Maps.newHashMap();
-  private String m_outputDirectory;
-  
-  public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
-    m_outputDirectory = outputDirectory;
-    
-    try {
-      HtmlHelper.generateStylesheet(outputDirectory);
-    } catch (IOException e) {
-      //  TODO Propagate the exception properly.
-      e.printStackTrace();
-    }
-    
-    for (int i = 0; i < xmlSuites.size(); i++) {
-      
-      //
-      // Generate the various reports
-      //
-      XmlSuite xmlSuite = xmlSuites.get(i);
-      if (xmlSuite.getTests().size() == 0) continue;
-      ISuite suite = suites.get(i);
-      generateTableOfContents(xmlSuite, suite);
-      generateSuites(xmlSuite, suite);
-      generateIndex(xmlSuite, suite);
-      generateMain(xmlSuite, suite);
-      generateMethodsAndGroups(xmlSuite, suite);
-      generateMethodsChronologically(xmlSuite, suite, METHODS_CHRONOLOGICAL, false);
-      generateMethodsChronologically(xmlSuite, suite, METHODS_ALPHABETICAL, true);
-      generateClasses(xmlSuite, suite);
-      generateReporterOutput(xmlSuite, suite);
-      generateExcludedMethodsReport(xmlSuite, suite);
-      generateXmlFile(xmlSuite, suite);
-    }
-
-    generateIndex(suites);
-  }
-  
-  private void generateXmlFile(XmlSuite xmlSuite, ISuite suite) {
-    String content = 
-      new String(xmlSuite.toXml().replaceAll("<", "<").replaceAll(">", ">"))
-          .replaceAll(" ", " ").replaceAll("\n", "<br/>");
-    
-    StringBuffer sb = new StringBuffer("<html>");
-    
-    sb.append("<head><title>").append("testng.xml for ")
-      .append(xmlSuite.getName()).append("</title></head><body><tt>")
-      .append(content)
-      .append("</tt></body></html>");
-    
-    Utils.writeFile(getOutputDirectory(xmlSuite), TESTNG_XML, sb.toString());
-  }
-
-  /**
-   * Generate the main index.html file that lists all the suites
-   * and their result
-   */
-  private void generateIndex(List<ISuite> suites) {
-    StringBuffer sb = new StringBuffer();
-    String title = "Test results";
-    sb.append("<html>\n<head><title>" + title + "</title>")
-      .append(HtmlHelper.getCssString("."))
-      .append("</head><body>\n")
-      .append("<h2><p align='center'>").append(title).append("</p></h2>\n")
-      .append("<table border='1' width='100%' class='main-page'>")
-      .append("<tr><th>Suite</th><th>Passed</th><th>Failed</th><th>Skipped</th><th>testng.xml</th></tr>\n");
-    
-    int totalFailedTests = 0;
-    int totalPassedTests = 0;
-    int totalSkippedTests = 0;
-    
-    StringBuffer suiteBuf= new StringBuffer();
-    for (ISuite suite : suites) {
-      if (suite.getResults().size() == 0) continue;
-      
-      String name = suite.getName();
-    
-      int failedTests= 0;
-      int passedTests= 0;
-      int skippedTests= 0;
-      
-      Map<String, ISuiteResult> results = suite.getResults();
-      for (String suiteName : results.keySet()) {
-        ISuiteResult result = results.get(suiteName);
-        ITestContext context = result.getTestContext();
-        failedTests += context.getFailedTests().size();
-        totalFailedTests += context.getFailedTests().size();
-        passedTests += context.getPassedTests().size();
-        totalPassedTests += context.getPassedTests().size();
-        skippedTests += context.getSkippedTests().size();
-        totalSkippedTests += context.getSkippedTests().size();
-      }
-      
-      String cls = failedTests > 0 ? "invocation-failed" 
-          : (passedTests > 0  ? "invocation-passed" : "invocation-failed");
-      suiteBuf.append("<tr align='center' class='").append(cls).append("'>")
-        .append("<td><a href='").append(name).append("/index.html'>")
-        .append(name).append("</a></td>\n");
-      suiteBuf.append("<td>" + passedTests + "</td>")
-        .append("<td>" + failedTests + "</td>")
-        .append("<td>" + skippedTests + "</td>")
-        .append("<td><a href='").append(name).append("/").append(TESTNG_XML).append("'>Link").append("</a></td>")
-        .append("</tr>");
-      
-    }
-    
-    String cls= totalFailedTests > 0 ? "invocation-failed" 
-        : (totalPassedTests > 0 ? "invocation-passed" : "invocation-failed");
-    sb.append("<tr align='center' class='").append(cls).append("'>")
-      .append("<td><em>Total</em></td>")
-      .append("<td><em>").append(totalPassedTests).append("</em></td>")
-      .append("<td><em>").append(totalFailedTests).append("</em></td>")
-      .append("<td><em>").append(totalSkippedTests).append("</em></td>")
-      .append("<td> </td>")
-      .append("</tr>\n");
-    sb.append(suiteBuf);
-    sb.append("</table>").append("</body></html>\n");
-  
-    Utils.writeFile(m_outputDirectory, "index.html", sb.toString());
-  }
-
-  private void generateExcludedMethodsReport(XmlSuite xmlSuite, ISuite suite) {
-      Collection<ITestNGMethod> excluded = suite.getExcludedMethods(); 
-      StringBuffer sb2 = new StringBuffer("<h2>Methods that were not run</h2><table>\n");
-      for (ITestNGMethod method : excluded) {
-        Method m = method.getMethod();
-        if (m != null) {
-          sb2.append("<tr><td>")
-          .append(m.getDeclaringClass().getName() + "." + m.getName());
-          if(null != method.getDescription() && !"".equals(method.getDescription())) {
-            sb2.append("<br/>").append(SP2).append("<i>").append(method.getDescription()).append("</i>");
-          }
-          sb2.append("</td></tr>\n");
-        }
-      }
-      sb2.append("</table>");
-      
-      Utils.writeFile(getOutputDirectory(xmlSuite), METHODS_NOT_RUN, sb2.toString());
-  }
-
-  private void generateReporterOutput(XmlSuite xmlSuite, ISuite suite) {
-    StringBuffer sb = new StringBuffer();
-    List<ITestNGMethod> methodsNotRun = Lists.newArrayList();
-    
-    //
-    // Reporter output
-    //
-    sb.append("<h2>Reporter output</h2>")
-      .append("<table>");
-    List<String> output = Reporter.getOutput();
-    for (String line : output) {
-      sb.append("<tr><td>").append(line).append("</td></tr>\n");
-    }
-    
-    sb.append("</table>");
-    
-    Utils.writeFile(getOutputDirectory(xmlSuite), REPORTER_OUTPUT, sb.toString());    
-  }
-    
-  private void generateClasses(XmlSuite xmlSuite, ISuite suite) {
-    StringBuffer sb = new StringBuffer();
-    sb.append("<table border='1'>\n")
-    .append("<tr>\n")
-    .append("<th>Class name</th>\n")
-    .append("<th>Method name</th>\n")
-    .append("<th>Groups</th>\n")
-    .append("</tr>")
-    ;
-    for (ITestClass tc : m_classes.values()) {
-      sb.append(generateClass(tc));      
-    }
-    
-    sb.append("</table>\n");
-    
-    Utils.writeFile(getOutputDirectory(xmlSuite), CLASSES, sb.toString());    
-  }
-  
-  private final static String SP = " ";
-  private final static String SP2 = SP + SP + SP + SP;
-  private final static String SP3 = SP2 + SP2;
-  private final static String SP4 = SP3 + SP3;
-  
-  private String generateClass(ITestClass cls) {
-    StringBuffer sb = new StringBuffer();
-    
-    sb.append("<tr>\n")
-      .append("<td>").append(cls.getRealClass().getName()).append("</td>\n")
-      .append("<td> </td>")
-      .append("<td> </td>")
-      .append("</tr>\n")
-      ;
-    
-    String[] tags = new String[] {
-        "@Test",
-        "@BeforeClass",
-        "@BeforeMethod",
-        "@AfterMethod",
-        "@AfterClass"
-    };
-    ITestNGMethod[][] methods = new ITestNGMethod[][] {
-      cls.getTestMethods(),
-      cls.getBeforeClassMethods(),
-      cls.getBeforeTestMethods(),
-      cls.getAfterTestMethods(),
-      cls.getAfterClassMethods()
-    };
-    
-    for (int i = 0; i < tags.length; i++) {
-      sb.append("<tr>\n")
-      .append("<td align='center' colspan='3'>").append(tags[i]).append("</td>\n")
-      .append("</tr>\n")
-      .append(dumpMethods(methods[i]))
-      ;
-    }
-//    sb.append("<hr width='100%'/>")
-//    .append("<h3>").append(cls.getRealClass().getName()).append("</h3>\n");
-//
-//    sb.append("<div>").append(SP3).append("Test methods\n")
-//      .append(dumpMethods(cls.getTestMethods())).append("</div>\n")
-//      .append("<div>").append(SP3).append("@BeforeClass\n") 
-//      .append(dumpMethods(cls.getBeforeClassMethods())).append("</div>\n")
-//      .append("<div>").append(SP3).append("@BeforeMethod\n") 
-//      .append(dumpMethods(cls.getBeforeTestMethods())).append("</div>\n")
-//      .append("<div>").append(SP3).append("@AfterMethod\n") 
-//      .append(dumpMethods(cls.getAfterTestMethods())).append("</div>\n")
-//      .append("<div>").append(SP3).append("@AfterClass\n") 
-//      .append(dumpMethods(cls.getAfterClassMethods())).append("</div>\n")
-//     ;
-    
-    String result = sb.toString();
-    return result;
-  }
-  
-  private String dumpMethods(ITestNGMethod[] testMethods) {
-    StringBuffer sb = new StringBuffer();
-    if(null == testMethods || testMethods.length == 0) {
-      return "";
-    }
-    
-    for (ITestNGMethod m : testMethods) {
-      sb.append("<tr>\n");
-      sb.append("<td> </td>\n")
-        .append("<td>").append(m.getMethodName()).append("</td>\n")
-        ;
-      String[] groups = m.getGroups();
-      if (groups != null && groups.length > 0) {
-        sb.append("<td>");
-        for (String g : groups) {
-          sb.append(g).append(" ");
-        }
-        sb.append("</td>\n");
-      }
-      else {
-        sb.append("<td> </td>");
-      }
-      sb.append("</tr>\n");
-    }    
-    
-//    StringBuffer sb = new StringBuffer("<br/>");  //"<table bgcolor=\"#c0c0c0\"/>");
-//    for (ITestNGMethod tm : testMethods) {
-//      sb
-//      .append(SP4).append(tm.getMethodName()).append("()\n")
-//      .append(dumpGroups(tm.getGroups()))
-//      .append("<br/>");
-//      ;
-//    }
-    
-    
-    String result = sb.toString();
-    return result;
-  }
-  
-  private String dumpGroups(String[] groups) {
-    StringBuffer sb = new StringBuffer();
-    
-    if (null != groups && groups.length > 0) {
-      sb.append(SP4).append("<em>[");
-      
-      for (String g : groups) {
-        sb.append(g).append(" ");
-      }
-      
-      sb.append("]</em><br/>\n");
-    }
-    
-    String result = sb.toString();
-    return result;
-  }
-  
-  /**
-   * Generate information about the methods that were run
-   */
-  public static final String AFTER= "<<";
-  public static final String BEFORE = ">>";
-  private void generateMethodsChronologically(XmlSuite xmlSuite, ISuite suite,
-      String outputFileName, boolean alphabetical) 
-  {
-    StringBuffer sb = new StringBuffer();
-    
-    sb.append("<h2>Methods run, sorted chronologically</h2>");
-    sb.append("<h3>" + BEFORE + " means before, " + AFTER + " means after</h3><p/>");
-    
-    long startDate = -1;
-    Map<Long, StringBuffer> tables = Maps.newHashMap();
-    sb.append("<br/><em>").append(suite.getName()).append("</em><p/>");
-    sb.append("<small><i>(Hover the method name to see the test class name)</i></small><p/>\n");
-    Collection<ITestNGMethod> invokedMethods = suite.getInvokedMethods();
-    
-    if (alphabetical) {
-      @SuppressWarnings({"unchecked"})
-      Comparator<? super ITestNGMethod>  alphabeticalComparator = new Comparator(){
-        public int compare(Object o1, Object o2) {
-          ITestNGMethod m1 = (ITestNGMethod) o1;
-          ITestNGMethod m2 = (ITestNGMethod) o2;
-          return m1.getMethodName().compareTo(m2.getMethodName());
-        }
-      };
-      Collections.sort((List) invokedMethods, alphabeticalComparator);
-    }
-    
-    for (ITestNGMethod tm : invokedMethods) {
-      Long id = new Long(0);      
-      StringBuffer table = tables.get(id);
-      if (null == table) {
-        table = new StringBuffer();
-        tables.put(id, table);
-        table.append("<table border=\"1\">\n")
-          .append("<tr>")
-          .append("<th>Time</th>")
-          .append("<th>Delta (ms)</th>")
-          .append("<th>Suite<br>configuration</th>")
-          .append("<th>Test<br>configuration</th>")
-          .append("<th>Class<br>configuration</th>")
-          .append("<th>Groups<br>configuration</th>")
-          .append("<th>Method<br>configuration</th>")
-          .append("<th>Test<br>method</th>")
-          .append("<th>Thread</th>")
-          .append("<th>Instances</th>")
-          .append("</tr>\n");
-      }
-      String methodName = tm.toString();
-      boolean bc = tm.isBeforeClassConfiguration();
-      boolean ac = tm.isAfterClassConfiguration();
-      boolean bt = tm.isBeforeTestConfiguration();
-      boolean at = tm.isAfterTestConfiguration();
-      boolean bs = tm.isBeforeSuiteConfiguration();
-      boolean as = tm.isAfterSuiteConfiguration();
-      boolean bg = tm.isBeforeGroupsConfiguration();
-      boolean ag = tm.isAfterGroupsConfiguration();
-      boolean setUp = tm.isBeforeMethodConfiguration();
-      boolean tearDown = tm.isAfterMethodConfiguration();
-      boolean isClassConfiguration = bc || ac;
-      boolean isGroupsConfiguration = bg || ag;
-      boolean isTestConfiguration = bt || at;
-      boolean isSuiteConfiguration = bs || as;
-      boolean isSetupOrTearDown = setUp || tearDown;
-      String configurationClassMethod = isClassConfiguration ? (bc ? BEFORE : AFTER) + methodName : SP;
-      String configurationTestMethod = isTestConfiguration ? (bt ? BEFORE : AFTER) + methodName : SP;
-      String configurationGroupsMethod = isGroupsConfiguration ? (bg ? BEFORE : AFTER) + methodName : SP;
-      String configurationSuiteMethod = isSuiteConfiguration ? (bs ? BEFORE : AFTER) + methodName : SP;
-      String setUpOrTearDownMethod = isSetupOrTearDown ? (setUp ? BEFORE : AFTER) + methodName : SP;
-      String testMethod = tm.isTest() ? methodName : SP;
-      
-      StringBuffer instances = new StringBuffer();
-      for (long o : tm.getInstanceHashCodes()) {
-        instances.append(o).append(" ");
-      }
-      
-      if (startDate == -1) startDate = tm.getDate();
-      SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
-      String date = format.format(tm.getDate());
-      table.append("<tr bgcolor=\"" + createColor(tm) + "\">")
-        .append("  <td>").append(date).append("</td> ")
-        .append("  <td>").append(tm.getDate() - startDate).append("</td> ")
-        .append(td(configurationSuiteMethod))
-        .append(td(configurationTestMethod))
-        .append(td(configurationClassMethod))
-        .append(td(configurationGroupsMethod))
-        .append(td(setUpOrTearDownMethod))
-        .append(td(testMethod))
-        .append("  <td>").append(tm.getId()).append("</td> ")
-        .append("  <td>").append(instances).append("</td> ")
-        .append("</tr>\n")
-        ;
-    }
-    
-    /// Close all the tables
-    for (StringBuffer table : tables.values()) {
-      table.append("</table>\n");
-      sb.append(table.toString());
-    }
-    Utils.writeFile(getOutputDirectory(xmlSuite), outputFileName, sb.toString());    
-    
-  }
-  
-  private static String toHex(int n) {
-    return Integer.toHexString(0x10 | n).substring(1).toUpperCase();
-  }
-
-  /**
-   * Generate a HTML color based on the class of the method
-   */
-  private String createColor(ITestNGMethod tm) {
-    // real class can be null if this client is remote (not serializable)
-    long color = tm.getRealClass() != null ? tm.getRealClass().hashCode() & 0xffffff: 0xffffff;
-    long[] rgb = {
-        ((color & 0xff0000) >> 16) & 0xff,
-        ((color & 0x00ff00) >> 8) & 0xff,
-        color & 0xff
-    };
-    // Not too dark
-    for (int i = 0; i < rgb.length; i++) {
-      if (rgb[i] < 0x60) rgb[i] += 0x60;
-    }
-    long adjustedColor = (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];
-    String result = Long.toHexString(adjustedColor);
-    
-    return result;
-  }
-
-  private String td(String s) {
-    StringBuffer result = new StringBuffer();
-    String prefix = "";
-    
-    if (s.startsWith(BEFORE)) {
-      prefix = BEFORE;
-    }
-    else if (s.startsWith(AFTER)) {
-      prefix = AFTER;
-    }
-    
-    if (! s.equals(SP)) {
-      result.append("<td title=\"").append(s).append("\">");
-      int open = s.lastIndexOf("(");
-      int start = s.substring(0, open).lastIndexOf(".");
-//      int end = s.lastIndexOf(")");
-      if (start >= 0) {
-        result.append(prefix + s.substring(start + 1, open));
-      }
-      else {
-        result.append(prefix + s);
-      }
-      result.append("</td> \n");
-    }
-    else {
-      result.append("<td>").append(SP).append("</td>");
-    }
-    
-    return result.toString();
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[SuiteHTMLReporter] " + s);
-  }
-  
-  /**
-   * Generate information about methods and groups
-   */
-  private void generateMethodsAndGroups(XmlSuite xmlSuite, ISuite suite) {
-    StringBuffer sb = new StringBuffer();
-    
-    Map<String, Collection<ITestNGMethod>> groups = suite.getMethodsByGroups();
-    
-    sb.append("<h2>Groups used for this test run</h2>");
-    if (groups.size() > 0) {
-      sb.append("<table border=\"1\">\n")
-        .append("<tr> <td align=\"center\"><b>Group name</b></td>")
-        .append("<td align=\"center\"><b>Methods</b></td></tr>");
-
-      String[] groupNames = groups.keySet().toArray(new String[groups.size()]);
-      Arrays.sort(groupNames);
-      for (String group : groupNames) {
-        Collection<ITestNGMethod> methods = groups.get(group);
-        sb.append("<tr><td>").append(group).append("</td>");
-        StringBuffer methodNames = new StringBuffer();
-        Map<ITestNGMethod, ITestNGMethod> uniqueMethods = Maps.newHashMap();
-        for (ITestNGMethod tm : methods) {
-          uniqueMethods.put(tm, tm);
-        }
-        for (ITestNGMethod tm : uniqueMethods.values()) {
-          methodNames.append(tm.toString()).append("<br/>");
-        }
-        sb.append("<td>" + methodNames.toString() + "</td></tr>\n");
-      }
-  
-      sb.append("</table>\n");
-    }
-    Utils.writeFile(getOutputDirectory(xmlSuite), GROUPS, sb.toString());    
-  }
-  
-  private void generateIndex(XmlSuite xmlSuite, ISuite sr) {
-    StringBuffer index = new StringBuffer()
-    .append("<html><head><title>Results for " + sr.getName() + "</title></head>\n")
-    .append("<frameset cols=\"26%,74%\">\n")
-    .append("<frame src=\"toc.html\" name=\"navFrame\">\n")
-    .append("<frame src=\"main.html\" name=\"mainFrame\">\n")
-    .append("</frameset>\n")
-    .append("</html>\n")
-    ;
-    
-    Utils.writeFile(getOutputDirectory(xmlSuite), "index.html", index.toString());    
-  }
-  
-  private String makeTitle(ISuite suite) {
-    return "Results for<br/><em>" + suite.getName() + "</em>";
-  }
-  
-  private void generateMain(XmlSuite xmlSuite, ISuite sr) {
-    StringBuffer index = new StringBuffer()
-    .append("<html><head><title>Results for " + sr.getName() + "</title></head>\n")
-    .append("<body>Select a result on the left-hand pane.</body>")
-    .append("</html>\n")
-    ;
-    
-    Utils.writeFile(getOutputDirectory(xmlSuite), "main.html", index.toString());    
-  }  
-  
-  /**
-   * 
-   */
-  private void generateTableOfContents(XmlSuite xmlSuite, ISuite suite) {
-    StringBuffer tableOfContents = new StringBuffer();
-    
-    //
-    // Generate methods and groups hyperlinks
-    //
-    Map<String, ISuiteResult> suiteResults = suite.getResults();
-    int groupCount = suite.getMethodsByGroups().size();
-    int methodCount = 0;
-    for (ISuiteResult sr : suiteResults.values()) {
-      ITestNGMethod[] methods = sr.getTestContext().getAllTestMethods();
-      methodCount += Utils.calculateInvokedMethodCount(methods);
-        
-      // Collect testClasses
-      for (ITestNGMethod tm : methods) {
-        ITestClass tc = tm.getTestClass();
-        m_classes.put(tc.getRealClass().getName(), tc);
-      }
-    }
-      
-    String name = "Results for " + suite.getName();
-    tableOfContents
-        .append("<html>\n")
-        .append("<head>\n")
-        .append("<title>" + name + "</title>\n")
-        .append(HtmlHelper.getCssString())
-        .append("</head>\n")
-        ;
-    tableOfContents
-        .append("<body>\n")
-        .append("<h3><p align=\"center\">" + makeTitle(suite) + "</p></h3>\n")
-        .append("<table border='1' width='100%'>\n")
-        .append("<tr valign='top'>\n")
-          .append("<td>")
-            .append(suiteResults.size()).append(" ").append(pluralize(suiteResults.size(), "test"))
-          .append("</td>\n")
-          .append("<td>")
-              .append("<a target='mainFrame' href='").append(CLASSES).append("'>")
-              .append(m_classes.size() + " " + pluralize(m_classes.size(), "class"))
-              .append("</a>")
-          .append("</td>\n")
-          .append("<td>" + methodCount + " " + pluralize(methodCount, "method") + ":<br/>\n")
-            .append("  <a target='mainFrame' href='").append(METHODS_CHRONOLOGICAL).append("'>").append("chronological</a><br/>\n")
-            .append("  <a target='mainFrame' href='").append(METHODS_ALPHABETICAL).append("\'>").append("alphabetical</a><br/>\n")
-            .append("  <a target='mainFrame' href='").append(METHODS_NOT_RUN).append("'>not run (" + suite.getExcludedMethods().size() + ")</a>")
-          .append("</td>\n")
-        .append("</tr>\n")
-
-        .append("<tr>\n")
-        .append("<td><a target='mainFrame' href='").append(GROUPS).append("'>").append(groupCount + pluralize(groupCount, " group") + "</a></td>\n")
-        .append("<td><a target='mainFrame' href='").append(REPORTER_OUTPUT).append("'>reporter output</a></td>\n")
-        .append("<td><a target='mainFrame' href='").append(TESTNG_XML).append("'>testng.xml</a></td>\n")
-        .append("</tr>")
-        .append("</table>");
-      
-      //
-      // Generate results for individual tests
-      //
-      
-      // Order the results so we can show the failures first, then the skip and
-      // finally the successes
-      Map<String, ISuiteResult> redResults = Maps.newHashMap();
-      Map<String, ISuiteResult> yellowResults = Maps.newHashMap();
-      Map<String, ISuiteResult> greenResults = Maps.newHashMap();
-      
-      for (String suiteName : suiteResults.keySet()) {
-        ISuiteResult sr = suiteResults.get(suiteName);
-        ITestContext tc = sr.getTestContext();
-        int failed = tc.getFailedTests().size(); 
-        int skipped = tc.getSkippedTests().size();
-        int passed = tc.getPassedTests().size();
-        
-        if (failed > 0) {
-          redResults.put(suiteName, sr);
-        }
-        else if (skipped > 0) {
-          yellowResults.put(suiteName, sr);
-        }
-        else if (passed > 0) {
-          greenResults.put(suiteName, sr);
-        }
-        else {
-          redResults.put(suiteName, sr);
-        }
-      }
-  
-      
-      ISuiteResult[][] results = new ISuiteResult[][] {
-        sortResults(redResults.values()), sortResults(yellowResults.values()), sortResults(greenResults.values())
-      };
-      
-      String[] colors = {"failed", "skipped", "passed"};
-      for (int i = 0; i < colors.length; i++) {
-        ISuiteResult[] r = results[i];
-        for (ISuiteResult sr: r) {
-          String suiteName = sr.getTestContext().getName();
-          generateSuiteResult(suiteName, sr, colors[i], tableOfContents, m_outputDirectory);
-        }
-      }
-    
-    tableOfContents.append("</body></html>");
-    Utils.writeFile(getOutputDirectory(xmlSuite), "toc.html", tableOfContents.toString());
-  }
-  
-  private String pluralize(int count, String singular) {
-    return count > 1 ? (singular.endsWith("s") ? singular + "es" : singular + "s") : singular;
-  }
-
-  private String getOutputDirectory(XmlSuite xmlSuite) {
-    return m_outputDirectory + File.separatorChar + xmlSuite.getName();
-  }
-
-  private ISuiteResult[] sortResults(Collection<ISuiteResult> r) {
-    ISuiteResult[] result = r.toArray(new ISuiteResult[r.size()]);
-    Arrays.sort(result);
-    return result;
-  }
-
-  private void generateSuiteResult(String suiteName, 
-                                   ISuiteResult sr, 
-                                   String cssClass, 
-                                   StringBuffer tableOfContents, 
-                                   String outputDirectory)
-  {
-    ITestContext tc = sr.getTestContext();
-    int passed = tc.getPassedTests().size();
-    int failed = tc.getFailedTests().size(); 
-    int skipped = tc.getSkippedTests().size();
-    String baseFile = tc.getName();
-    tableOfContents
-      .append("\n<table width='100%' class='test-").append(cssClass).append("'>\n")
-      .append("<tr><td>\n")
-      .append("<table style='width: 100%'><tr>")
-      .append("<td valign='top'>")
-      .append(suiteName).append(" (").append(passed).append("/").append(failed).append("/").append(skipped).append(")")
-      .append("</td>")
-      .append("<td valign='top' align='right'>\n")
-      .append("  <a href='" + baseFile + ".html' target='mainFrame'>Results</a>\n")
-//      .append("  <a href=\"" + baseFile + ".out\" target=\"mainFrame\"\">Output</a>\n")
-//      .append("  <a href=\"file://" + baseFile + ".properties\" target=\"mainFrame\"\">Property file</a><br>\n")
-      .append("</td>")
-      .append("</tr></table>\n")
-      .append("</td></tr><p/>\n")
-      ;
-    
-    tableOfContents.append("</table>\n");
-  }
-  
-  /**
-   * Writes a property file for each suite result.
-   *
-   * @param xmlSuite
-   * @param suite
-   */
-  private void generateSuites(XmlSuite xmlSuite, ISuite suite) {
-    Map<String, ISuiteResult> suiteResults = suite.getResults();
-
-    // TODO CQ why not iterate over entry set if were going to use the key to get the value?
-    for (String propertyFileName : suiteResults.keySet()) {
-      
-      ISuiteResult sr = suiteResults.get(propertyFileName);
-      ITestContext testContext = sr.getTestContext();
-      
-      StringBuffer sb = new StringBuffer();
-      
-      // TODO CQ why not iterate over entry set if were going to use the key to get the value?
-      for (String name : suiteResults.keySet()) {
-        ISuiteResult suiteResult = suiteResults.get(name);
-        sb.append(suiteResult.toString());
-      }
-      Utils.writeFile(getOutputDirectory(xmlSuite), testContext.getName() + ".properties", sb.toString());
-    }    
-  }
-}
diff --git a/src/org/testng/reporters/TestHTMLReporter.java b/src/org/testng/reporters/TestHTMLReporter.java
deleted file mode 100755
index e84df91..0000000
--- a/src/org/testng/reporters/TestHTMLReporter.java
+++ /dev/null
@@ -1,367 +0,0 @@
-package org.testng.reporters;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
-
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.Reporter;
-import org.testng.TestListenerAdapter;
-import org.testng.internal.Utils;
-
-
-/**
- * This class implements an HTML reporter for individual tests.
- *
- * @author Cedric Beust, May 2, 2004
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TestHTMLReporter extends TestListenerAdapter {
-  private static final Comparator<ITestResult> NAME_COMPARATOR= new NameComparator();
-  private static final Comparator<ITestResult> CONFIGURATION_COMPARATOR= new ConfigurationComparator();
-  
-  private ITestContext m_testContext = null;
-  
-  /////
-  // implements ITestListener
-  //
-  @Override
-  public void onStart(ITestContext context) {
-    m_testContext = context;
-  }
-
-  @Override
-  public void onFinish(ITestContext context) {
-    generateLog(m_testContext, 
-                null /* host */,
-                m_testContext.getOutputDirectory(),
-                getConfigurationFailures(),
-                getConfigurationSkips(),
-                getPassedTests(), 
-                getFailedTests(),
-                getSkippedTests(), 
-                getFailedButWithinSuccessPercentageTests());
-  }
-  //
-  // implements ITestListener
-  /////
-
-  private static String getOutputFile(ITestContext context) {
-    return context.getName() + ".html";
-  }
-  
-  public static void generateTable(StringBuffer sb, String title, 
-      Collection<ITestResult> tests, String cssClass, Comparator<ITestResult> comparator)
-  {
-    sb.append("<table width='100%' border='1' class='invocation-").append(cssClass).append("'>\n")
-      .append("<tr><td colspan='4' align='center'><b>").append(title).append("</b></td></tr>\n")    
-      .append("<tr>")
-      .append("<td><b>Test method</b></td>\n")
-      .append("<td><b>Instance</b></td>\n")
-      .append("<td width=\"10%\"><b>Time (seconds)</b></td>\n")
-      .append("<td width=\"30%\"><b>Exception</b></td>\n")
-      .append("</tr>\n");
-    
-    if (tests instanceof List) {
-      Collections.sort((List<ITestResult>) tests, comparator);
-    }
-
-    // User output?
-    String id = "";
-    Throwable tw = null;
-    
-    for (ITestResult tr : tests) {
-      sb.append("<tr>\n");
-
-      // Test method
-      ITestNGMethod method = tr.getMethod();
-
-      sb.append("<td title='").append(tr.getTestClass().getName()).append(".")
-        .append(tr.getName())
-        .append("()'>")
-        .append("<b>").append(tr.getName()).append("</b>");
-      
-      // Test name
-      String testName = method.getTestClass().getTestName();
-      if (testName != null) {
-        sb.append("<br>").append("Test class:" + testName);
-      }
-      
-      // Method description
-      if (! Utils.isStringEmpty(method.getDescription())) {
-        sb.append("<br>").append("Test method:").append(method.getDescription());
-      }
-      
-      Object[] parameters = tr.getParameters();
-      if (parameters != null && parameters.length > 0) {
-        sb.append("<br>Parameters: ");
-        for (int j = 0; j < parameters.length; j++) {
-          if (j > 0) sb.append(", ");
-          sb.append(parameters[j] == null ? "null" : parameters[j].toString());
-        }
-      }
-
-      //
-      // Output from the method, created by the user calling Reporter.log()
-      //
-      {
-        List<String> output = Reporter.getOutput(tr);
-        if (null != output && output.size() > 0) {
-          sb.append("<br/>");
-          // Method name
-          String divId = "Output-" + tr.hashCode();
-          sb.append("\n<a href=\"#").append(divId).append("\"")
-            .append(" onClick='toggleBox(\"").append(divId).append("\", this, \"Show output\", \"Hide output\");'>")
-            .append("Show output</a>\n")
-            .append("\n<a href=\"#").append(divId).append("\"")
-            .append(" onClick=\"toggleAllBoxes();\">Show all outputs</a>\n")
-            ;
-          
-          // Method output
-          sb.append("<div class='log' id=\"").append(divId).append("\">\n");
-          for (String s : output) {
-            sb.append(s).append("<br/>\n");
-          }
-          sb.append("</div>\n");
-        }
-      }
-      
-      sb.append("</td>\n");
-
-      // Instance
-      Object instance = tr.getInstance();
-      String instanceString = instance != null ? instance.toString() : " ";
-      sb.append("<td>").append(instance).append("</td>");
-
-      // Time
-      long time = (tr.getEndMillis() - tr.getStartMillis()) / 1000;
-      String strTime = new Long(time).toString();
-      sb.append("<td>").append(strTime).append("</td>\n");
-      
-      // Exception
-      tw = tr.getThrowable();
-      String stackTrace = "";
-      String fullStackTrace = "";
-      
-      id = "stack-trace" + tr.hashCode();
-      sb.append("<td>");
-      
-      if (null != tw) {
-        String[] stackTraces = Utils.stackTrace(tw, true);
-        fullStackTrace = stackTraces[1];
-        stackTrace = "<div><pre>" + stackTraces[0]  + "</pre></div>";
-        
-        sb.append(stackTrace);
-        // JavaScript link
-        sb.append("<a href='#' onClick='toggleBox(\"")
-        .append(id).append("\", this, \"Click to show all stack frames\", \"Click to hide stack frames\")'>")
-        .append("Click to show all stack frames").append("</a>\n")
-        .append("<div class='stack-trace' id='" + id + "'>")
-        .append("<pre>" + fullStackTrace + "</pre>")
-        .append("</div>")
-        ;
-      }
-      
-      sb.append("</td>\n").append("</tr>\n");
-    }
-    
-    sb.append("</table><p>\n");
-
-  }
-  
-  private static String arrayToString(String[] array) {
-    StringBuffer result = new StringBuffer("");
-    for (int i = 0; i < array.length; i++) {
-      result.append(array[i]).append(" ");
-    }
-    
-    return result.toString();
-  }
-  
-  private static String HEAD =
-    "\n<style type=\"text/css\">\n" +
-    ".log { display: none;} \n" +
-    ".stack-trace { display: none;} \n" +
-    "</style>\n" +
-    "<script type=\"text/javascript\">\n" +
-      "<!--\n" +
-      "function flip(e) {\n" +
-      "  current = e.style.display;\n" +
-      "  if (current == 'block') {\n" +
-      "    e.style.display = 'none';\n" +
-      "    return 0;\n" +
-      "  }\n" +
-      "  else {\n" +
-      "    e.style.display = 'block';\n" +
-      "    return 1;\n" +
-      "  }\n" +
-      "}\n" +
-      "\n" +
-      "function toggleBox(szDivId, elem, msg1, msg2)\n" +
-      "{\n" +
-      "  var res = -1;" +
-      "  if (document.getElementById) {\n" +
-      "    res = flip(document.getElementById(szDivId));\n" +
-      "  }\n" +
-      "  else if (document.all) {\n" +
-      "    // this is the way old msie versions work\n" +
-      "    res = flip(document.all[szDivId]);\n" +
-      "  }\n" +
-      "  if(elem) {\n" +
-      "    if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;\n" + 
-      "  }\n" +
-      "\n" +
-      "}\n" +
-      "\n" +
-      "function toggleAllBoxes() {\n" +
-      "  if (document.getElementsByTagName) {\n" +
-      "    d = document.getElementsByTagName('div');\n" +
-      "    for (i = 0; i < d.length; i++) {\n" +
-      "      if (d[i].className == 'log') {\n" +
-      "        flip(d[i]);\n" +
-      "      }\n" +
-      "    }\n" +
-      "  }\n" +
-      "}\n" +
-      "\n" +
-      "// -->\n" +
-      "</script>\n" +
-      "\n";
-  
-  public static void generateLog(ITestContext testContext, 
-      String host,
-      String outputDirectory,
-      Collection<ITestResult> failedConfs,
-      Collection<ITestResult> skippedConfs,
-      Collection<ITestResult> passedTests, 
-      Collection<ITestResult> failedTests,
-      Collection<ITestResult> skippedTests, 
-      Collection<ITestResult> percentageTests)
-  {
-    StringBuffer sb = new StringBuffer();
-    sb.append("<html>\n<head>\n")
-      .append("<title>TestNG:  ").append(testContext.getName()).append("</title>\n")
-      .append(HtmlHelper.getCssString())
-      .append(HEAD)
-      .append("</head>\n")
-      .append("<body>\n");
-    
-    Date startDate = testContext.getStartDate();
-    Date endDate = testContext.getEndDate();
-    long duration = (endDate.getTime() - startDate.getTime()) / 1000;
-    int passed = 
-      testContext.getPassedTests().size() +
-      testContext.getFailedButWithinSuccessPercentageTests().size();
-    int failed = testContext.getFailedTests().size();
-    int skipped = testContext.getSkippedTests().size();
-    String hostLine = Utils.isStringEmpty(host) ? "" : "<tr><td>Remote host:</td><td>" + host
-        + "</td>\n</tr>";
-    
-    sb
-    .append("<h2 align='center'>").append(testContext.getName()).append("</h2>")
-    .append("<table border='1' align=\"center\">\n")
-    .append("<tr>\n")
-//    .append("<td>Property file:</td><td>").append(m_testRunner.getPropertyFileName()).append("</td>\n")
-//    .append("</tr><tr>\n")
-    .append("<td>Tests passed/Failed/Skipped:</td><td>").append(passed).append("/").append(failed).append("/").append(skipped).append("</td>\n")
-    .append("</tr><tr>\n")
-    .append("<td>Started on:</td><td>").append(testContext.getStartDate().toString()).append("</td>\n")
-    .append("</tr>\n")
-    .append(hostLine)
-    .append("<tr><td>Total time:</td><td>").append(duration).append(" seconds (").append(endDate.getTime() - startDate.getTime())
-      .append(" ms)</td>\n")
-    .append("</tr><tr>\n")
-    .append("<td>Included groups:</td><td>").append(arrayToString(testContext.getIncludedGroups())).append("</td>\n")
-    .append("</tr><tr>\n")
-    .append("<td>Excluded groups:</td><td>").append(arrayToString(testContext.getExcludedGroups())).append("</td>\n")
-    .append("</tr>\n")
-    .append("</table><p/>\n")
-    ;
-    
-    sb.append("<small><i>(Hover the method name to see the test class name)</i></small><p/>\n");
-    if (failedConfs.size() > 0) {
-      generateTable(sb, "FAILED CONFIGURATIONS", failedConfs, "failed", CONFIGURATION_COMPARATOR);
-    }
-    if (skippedConfs.size() > 0) {
-      generateTable(sb, "SKIPPED CONFIGURATIONS", skippedConfs, "skipped", CONFIGURATION_COMPARATOR);
-    }
-    if (failedTests.size() > 0) {
-      generateTable(sb, "FAILED TESTS", failedTests, "failed", NAME_COMPARATOR);
-    }
-    if (percentageTests.size() > 0) {
-      generateTable(sb, "FAILED TESTS BUT WITHIN SUCCESS PERCENTAGE",
-          percentageTests, "percent", NAME_COMPARATOR);
-    }
-    if (passedTests.size() > 0) {
-      generateTable(sb, "PASSED TESTS", passedTests, "passed", NAME_COMPARATOR);
-    }
-    if (skippedTests.size() > 0) {
-      generateTable(sb, "SKIPPED TESTS", skippedTests, "skipped", NAME_COMPARATOR);
-    }
-    
-    sb.append("</body>\n</html>");
-    
-    Utils.writeFile(outputDirectory, getOutputFile(testContext), sb.toString());
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[TestHTMLReporter] " + s);
-  }
-  
-  private static class NameComparator implements Comparator<ITestResult> {
-    public int compare(ITestResult o1, ITestResult o2) {
-      String c1 = o1.getMethod().getMethodName();
-      String c2 = o2.getMethod().getMethodName();
-      return c1.compareTo(c2);
-    }
-  
-  }
-  
-  private static class ConfigurationComparator implements Comparator<ITestResult> {
-    public int compare(ITestResult o1, ITestResult o2) {
-      ITestNGMethod tm1= o1.getMethod();
-      ITestNGMethod tm2= o2.getMethod();
-      return annotationValue(tm2) - annotationValue(tm1);
-    }
-    
-    private static int annotationValue(ITestNGMethod method) {
-      if(method.isBeforeSuiteConfiguration()) {
-        return 10;
-      }
-      if(method.isBeforeTestConfiguration()) {
-        return 9;
-      }
-      if(method.isBeforeClassConfiguration()) {
-        return 8;
-      }
-      if(method.isBeforeGroupsConfiguration()) {
-        return 7;
-      }
-      if(method.isBeforeMethodConfiguration()) {
-        return 6;
-      }
-      if(method.isAfterMethodConfiguration()) {
-        return 5;
-      }
-      if(method.isAfterGroupsConfiguration()) {
-        return 4;
-      }
-      if(method.isAfterClassConfiguration()) {
-        return 3;
-      }
-      if(method.isAfterTestConfiguration()) {
-        return 2;
-      }
-      if(method.isAfterSuiteConfiguration()) {
-        return 1;
-      }
-      
-      return 0;
-    }
-  }
-  
-}
diff --git a/src/org/testng/reporters/TextReporter.java b/src/org/testng/reporters/TextReporter.java
deleted file mode 100644
index bfdd05d..0000000
--- a/src/org/testng/reporters/TextReporter.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package org.testng.reporters;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.internal.Utils;
-
-/**
- * A simple reporter that collects the results and does nothing else.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TextReporter extends TestListenerAdapter {
-  private int m_verbose = 0;
-  private String m_testName = null;
-
-
-  public TextReporter(String testName, int verbose) {
-    m_testName = testName;
-    m_verbose = verbose;
-  }
-  
-  @Override
-  public void onFinish(ITestContext context) {
-    if (m_verbose >= 2) {
-      logResults();
-    }
-  }
-
-
-  private ITestNGMethod[] resultsToMethods(List<ITestResult> results) {
-    ITestNGMethod[] result = new ITestNGMethod[results.size()];
-    int i = 0;
-    for (ITestResult tr : results) {
-      result[i++] = tr.getMethod();
-    }
-    
-    return result;
-  }
-  
-
-  private void logResults() {
-    //
-    // Log Text
-    //
-    for(Object o : getConfigurationFailures()) {
-      ITestResult tr = (ITestResult) o;
-      Throwable ex = tr.getThrowable();
-      String stackTrace= "";
-      if (ex != null) {
-        if (m_verbose >= 2) {
-          stackTrace= Utils.stackTrace(ex, false)[0];
-        }
-      }
-
-      logResult("FAILED CONFIGURATION", 
-          Utils.detailedMethodName(tr.getMethod(), false), 
-          tr.getMethod().getDescription(), 
-          stackTrace, 
-          tr.getParameters(), 
-          tr.getMethod().getMethod().getParameterTypes()
-      );
-    }
-
-    for(Object o : getConfigurationSkips()) {
-      ITestResult tr = (ITestResult) o;
-      logResult("SKIPPED CONFIGURATION", 
-          Utils.detailedMethodName(tr.getMethod(), false), 
-          tr.getMethod().getDescription(), 
-          null, 
-          tr.getParameters(), 
-          tr.getMethod().getMethod().getParameterTypes()
-      );
-    }
-    
-    for(Object o : getPassedTests()) {
-      ITestResult tr = (ITestResult) o;
-      logResult("PASSED", tr, null);
-    }
-
-    for(Object o : getFailedTests()) {
-      ITestResult tr = (ITestResult) o;
-      Throwable ex = tr.getThrowable();
-      String stackTrace= "";
-      if (ex != null) {
-        if (m_verbose >= 2) {
-          stackTrace= Utils.stackTrace(ex, false)[0];
-        }
-      }
-
-      logResult("FAILED", tr, stackTrace);
-    }
-
-    for(Object o : getSkippedTests()) {
-      ITestResult tr = (ITestResult) o;
-      logResult("SKIPPED", tr, null);
-    }
-
-    ITestNGMethod[] ft = resultsToMethods(getFailedTests());
-    StringBuffer logBuf= new StringBuffer("\n===============================================\n");
-    logBuf.append("    ").append(m_testName).append("\n");
-    logBuf.append("    Tests run: ").append(Utils.calculateInvokedMethodCount(getAllTestMethods()))
-        .append(", Failures: ").append(Utils.calculateInvokedMethodCount(ft))
-        .append(", Skips: ").append(Utils.calculateInvokedMethodCount(resultsToMethods(getSkippedTests())));
-    int confFailures= getConfigurationFailures().size();
-    int confSkips= getConfigurationSkips().size();
-    if(confFailures > 0 || confSkips > 0) {
-      logBuf.append("\n").append("    Configuration Failures: ").append(confFailures)
-          .append(", Skips: ").append(confSkips);
-    }
-    logBuf.append("\n===============================================\n");
-    logResult("", logBuf.toString());
-  }
-  
-  private String getName() {
-    return m_testName;
-  }
-
-  private void logResult(String status, ITestResult tr, String stackTrace) {
-    logResult(status, tr.getName(), tr.getMethod().getDescription(), stackTrace,
-        tr.getParameters(), tr.getMethod().getMethod().getParameterTypes());
-  }
-
-  private void logResult(String status, String message) {
-    StringBuffer buf= new StringBuffer();
-    if(!"".equals(status)) {
-      buf.append(status).append(": ");
-    }
-    buf.append(message);
-    
-    System.out.println(buf);
-  }
-  
-  private void logResult(String status, String name, 
-          String description, String stackTrace, 
-          Object[] params, Class[] paramTypes) {
-    StringBuffer msg= new StringBuffer(name);
-
-    if(null != params && params.length > 0) {
-      msg.append("(");
-      
-      // The error might be a data provider parameter mismatch, so make
-      // a special case here
-      if (params.length != paramTypes.length) {
-        msg.append(name + ": Wrong number of arguments were passed by " +
-                "the Data Provider: found " + params.length + " but " +
-                "expected " + paramTypes.length
-                + ")");
-      }
-      else {
-        for(int i= 0; i < params.length; i++) {
-          if(i > 0) msg.append(", ");
-          msg.append(Utils.toString(params[i], paramTypes[i]));
-        }
-          
-        msg.append(")");
-      }
-    }
-    if (! Utils.isStringEmpty(description)) {
-      msg.append("\n");
-      for (int i = 0; i < status.length() + 2; i++) {
-        msg.append(" ");
-      }
-      msg.append(description);
-    }
-    if ( ! Utils.isStringEmpty(stackTrace)) {
-      msg.append("\n").append(stackTrace);
-    }
-    
-    logResult(status, msg.toString());
-  }
-  
-  public void ppp(String s) {
-    System.out.println("[TextReporter " + getName() + "] " + s);
-  }
-}
diff --git a/src/org/testng/reporters/XMLConstants.java b/src/org/testng/reporters/XMLConstants.java
deleted file mode 100755
index dab939b..0000000
--- a/src/org/testng/reporters/XMLConstants.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.testng.reporters;
-
-/**
- * interface groups the XML constants
- * tries to emulate what's in org.apache.tools.ant.taskdefs.optional.junit.XMLConstants
- * to be compatible with junitreport
- *
- * @see org.apache.tools.ant.taskdefs.optional.junit.XMLConstants
- * @see org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
- */
-public interface XMLConstants {
-    /** the testsuites element for the aggregate document */
-    String TESTSUITES = "testsuites";
-
-    /** the testsuite element */
-    String TESTSUITE = "testsuite";
-
-    /** the testcase element */
-    String TESTCASE = "testcase";
-
-    /** the error element */
-    String ERROR = "error";
-
-    /** the failure element */
-    String FAILURE = "failure";
-
-    /** the system-err element */
-    String SYSTEM_ERR = "system-err";
-
-    /** the system-out element */
-    String SYSTEM_OUT = "system-out";
-
-    /** package attribute for the aggregate document */
-    String ATTR_PACKAGE = "package";
-
-    /** name attribute for property, testcase and testsuite elements */
-    String ATTR_NAME = "name";
-
-    /** time attribute for testcase and testsuite elements */
-    String ATTR_TIME = "time";
-
-    /** errors attribute for testsuite elements */
-    String ATTR_ERRORS = "errors";
-
-    /** failures attribute for testsuite elements */
-    String ATTR_FAILURES = "failures";
-
-    /** tests attribute for testsuite elements */
-    String ATTR_TESTS = "tests";
-
-    /** type attribute for failure and error elements */
-    String ATTR_TYPE = "type";
-
-    /** message attribute for failure elements */
-    String ATTR_MESSAGE = "message";
-
-    /** the properties element */
-    String PROPERTIES = "properties";
-
-    /** the property element */
-    String PROPERTY = "property";
-
-    /** value attribute for property elements */
-    String ATTR_VALUE = "value";
-
-    /** classname attribute for testcase elements */
-    String ATTR_CLASSNAME = "classname";
-}
\ No newline at end of file
diff --git a/src/org/testng/reporters/XMLReporter.java b/src/org/testng/reporters/XMLReporter.java
deleted file mode 100755
index 3bdb0cd..0000000
--- a/src/org/testng/reporters/XMLReporter.java
+++ /dev/null
@@ -1,224 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.*;
-import org.testng.internal.Utils;
-import org.testng.xml.XmlSuite;
-
-import java.io.File;
-import java.util.*;
-import java.text.SimpleDateFormat;
-
-/**
- * The main entry for the XML generation operation
- *
- * @author Cosmin Marginean, Mar 16, 2007
- */
-public class XMLReporter implements IReporter {
-
-  private XMLReporterConfig config = new XMLReporterConfig();
-  private XMLStringBuffer rootBuffer;
-
-  public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
-    if (Utils.isStringEmpty(config.getOutputDirectory())) {
-      config.setOutputDirectory(outputDirectory);
-    }
-
-    rootBuffer = new XMLStringBuffer("");
-    rootBuffer.push(XMLReporterConfig.TAG_TESTNG_RESULTS);
-    writeReporterOutput(rootBuffer);
-    for (int i = 0; i < suites.size(); i++) {
-      writeSuite(xmlSuites.get(i), suites.get(i));
-    }
-    rootBuffer.pop();
-    Utils.writeUtf8File(config.getOutputDirectory(), "testng-results.xml", rootBuffer.toXML());
-  }
-
-  private void writeReporterOutput(XMLStringBuffer xmlBuffer) {
-    //TODO: Cosmin - maybe a <line> element isn't indicated for each line
-    xmlBuffer.push(XMLReporterConfig.TAG_REPORTER_OUTPUT);
-    List<String> output = Reporter.getOutput();
-    for (String line : output) {
-      if (line != null) {
-        xmlBuffer.push(XMLReporterConfig.TAG_LINE);
-        xmlBuffer.addCDATA(line);
-        xmlBuffer.pop();
-      }
-    }
-    xmlBuffer.pop();
-  }
-
-  private void writeSuite(XmlSuite xmlSuite, ISuite suite) {
-    switch (config.getFileFragmentationLevel()) {
-      case XMLReporterConfig.FF_LEVEL_NONE:
-        writeSuiteToBuffer(rootBuffer, suite);
-        break;
-      case XMLReporterConfig.FF_LEVEL_SUITE:
-      case XMLReporterConfig.FF_LEVEL_SUITE_RESULT:
-        File suiteFile = referenceSuite(rootBuffer, suite);
-        writeSuiteToFile(suiteFile, suite);
-    }
-  }
-
-  private void writeSuiteToFile(File suiteFile, ISuite suite) {
-    XMLStringBuffer xmlBuffer = new XMLStringBuffer("");
-    writeSuiteToBuffer(xmlBuffer, suite);
-    File parentDir = suiteFile.getParentFile();
-    if (parentDir.exists() || suiteFile.getParentFile().mkdirs()) {
-      Utils.writeFile(parentDir.getAbsolutePath(), "testng-results.xml", xmlBuffer.toXML());
-    }
-  }
-
-  private File referenceSuite(XMLStringBuffer xmlBuffer, ISuite suite) {
-    String relativePath = suite.getName() + File.separatorChar + "testng-results.xml";
-    File suiteFile = new File(config.getOutputDirectory(), relativePath);
-    Properties attrs = new Properties();
-    attrs.setProperty(XMLReporterConfig.ATTR_URL, relativePath);
-    xmlBuffer.addEmptyElement(XMLReporterConfig.TAG_SUITE, attrs);
-    return suiteFile;
-  }
-
-  private void writeSuiteToBuffer(XMLStringBuffer xmlBuffer, ISuite suite) {
-    xmlBuffer.push(XMLReporterConfig.TAG_SUITE, getSuiteAttributes(suite));
-    writeSuiteGroups(xmlBuffer, suite);
-
-    Map<String, ISuiteResult> results = suite.getResults();
-    XMLSuiteResultWriter suiteResultWriter = new XMLSuiteResultWriter(config);
-    for (Map.Entry<String, ISuiteResult> result : results.entrySet()) {
-      suiteResultWriter.writeSuiteResult(xmlBuffer, result.getValue());
-    }
-
-    xmlBuffer.pop();
-  }
-
-  private void writeSuiteGroups(XMLStringBuffer xmlBuffer, ISuite suite) {
-    xmlBuffer.push(XMLReporterConfig.TAG_GROUPS);
-    Map<String, Collection<ITestNGMethod>> methodsByGroups = suite.getMethodsByGroups();
-    for (String groupName : methodsByGroups.keySet()) {
-      Properties groupAttrs = new Properties();
-      groupAttrs.setProperty(XMLReporterConfig.ATTR_NAME, groupName);
-      xmlBuffer.push(XMLReporterConfig.TAG_GROUP, groupAttrs);
-      Set<ITestNGMethod> groupMethods = getUniqueMethodSet(methodsByGroups.get(groupName));
-      for (ITestNGMethod groupMethod : groupMethods) {
-        Properties methodAttrs = new Properties();
-        methodAttrs.setProperty(XMLReporterConfig.ATTR_NAME, groupMethod.getMethodName());
-        methodAttrs.setProperty(XMLReporterConfig.ATTR_METHOD_SIG, groupMethod.toString());
-        methodAttrs.setProperty(XMLReporterConfig.ATTR_CLASS, groupMethod.getRealClass().getName());
-        xmlBuffer.addEmptyElement(XMLReporterConfig.TAG_METHOD, methodAttrs);
-      }
-      xmlBuffer.pop();
-    }
-    xmlBuffer.pop();
-  }
-
-  private Properties getSuiteAttributes(ISuite suite) {
-    Properties props = new Properties();
-    props.setProperty(XMLReporterConfig.ATTR_NAME, suite.getName());
-
-    // Calculate the duration
-    Map<String, ISuiteResult> results = suite.getResults();
-    Date minStartDate = new Date();
-    Date maxEndDate = null;
-    // TODO: We could probably optimize this in order not to traverse this twice   
-    for (Map.Entry<String, ISuiteResult> result : results.entrySet()) {
-      Date startDate = result.getValue().getTestContext().getStartDate();
-      Date endDate = result.getValue().getTestContext().getEndDate();
-      if (minStartDate.after(startDate)) {
-        minStartDate = startDate;
-      }
-      if (maxEndDate == null || maxEndDate.before(endDate)) {
-        maxEndDate = endDate;
-      }
-    }
-
-    addDurationAttributes(config, props, minStartDate, maxEndDate);
-    return props;
-  }
-
-  /**
-   * Add started-at, finished-at and duration-ms attributes to the <suite> tag
-   */
-  public static void addDurationAttributes(XMLReporterConfig config, Properties attributes,
-      Date minStartDate, Date maxEndDate) {
-    SimpleDateFormat format = new SimpleDateFormat(config.getTimestampFormat());
-    String startTime = format.format(minStartDate);
-    String endTime = format.format(maxEndDate);
-    long duration = maxEndDate.getTime() - minStartDate.getTime();
-
-    attributes.setProperty(XMLReporterConfig.ATTR_STARTED_AT, startTime);
-    attributes.setProperty(XMLReporterConfig.ATTR_FINISHED_AT, endTime);
-    attributes.setProperty(XMLReporterConfig.ATTR_DURATION_MS, Long.toString(duration));
-  }
-
-  private Set<ITestNGMethod> getUniqueMethodSet(Collection<ITestNGMethod> methods) {
-    Set<ITestNGMethod> result = new LinkedHashSet<ITestNGMethod>();
-    for (ITestNGMethod method : methods) {
-      result.add(method);
-    }
-    return result;
-  }
-
-  //TODO: This is not the smartest way to implement the config
-  public int getFileFragmentationLevel() {
-    return config.getFileFragmentationLevel();
-  }
-
-  public void setFileFragmentationLevel(int fileFragmentationLevel) {
-    config.setFileFragmentationLevel(fileFragmentationLevel);
-  }
-
-  public int getStackTraceOutputMethod() {
-    return config.getStackTraceOutputMethod();
-  }
-
-  public void setStackTraceOutputMethod(int stackTraceOutputMethod) {
-    config.setStackTraceOutputMethod(stackTraceOutputMethod);
-  }
-
-  public String getOutputDirectory() {
-    return config.getOutputDirectory();
-  }
-
-  public void setOutputDirectory(String outputDirectory) {
-    config.setOutputDirectory(outputDirectory);
-  }
-
-  public boolean isGenerateGroupsAttribute() {
-    return config.isGenerateGroupsAttribute();
-  }
-
-  public void setGenerateGroupsAttribute(boolean generateGroupsAttribute) {
-    config.setGenerateGroupsAttribute(generateGroupsAttribute);
-  }
-
-  public boolean isSplitClassAndPackageNames() {
-    return config.isSplitClassAndPackageNames();
-  }
-
-  public void setSplitClassAndPackageNames(boolean splitClassAndPackageNames) {
-    config.setSplitClassAndPackageNames(splitClassAndPackageNames);
-  }
-
-  public String getTimestampFormat() {
-    return config.getTimestampFormat();
-  }
-
-  public void setTimestampFormat(String timestampFormat) {
-    config.setTimestampFormat(timestampFormat);
-  }
-
-  public boolean isGenerateDependsOnMethods() {
-    return config.isGenerateDependsOnMethods();
-  }
-
-  public void setGenerateDependsOnMethods(boolean generateDependsOnMethods) {
-    config.setGenerateDependsOnMethods(generateDependsOnMethods);
-  }
-
-  public void setGenerateDependsOnGroups(boolean generateDependsOnGroups) {
-    config.setGenerateDependsOnGroups(generateDependsOnGroups);
-  }
-
-  public boolean isGenerateDependsOnGroups() {
-    return config.isGenerateDependsOnGroups();
-  }
-}
diff --git a/src/org/testng/reporters/XMLReporterConfig.java b/src/org/testng/reporters/XMLReporterConfig.java
deleted file mode 100755
index 3a83f56..0000000
--- a/src/org/testng/reporters/XMLReporterConfig.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package org.testng.reporters;
-
-/**
- * @author Hani Suleiman Date: Mar 27, 2007 Time: 9:16:28 AM
- */
-public class XMLReporterConfig {
-
-  public static final String TAG_TEST = "test";
-  public static final String TAG_TEST_METHOD = "test-method";
-  public static final String TAG_EXCEPTION = "exception";
-  public static final String TAG_MESSAGE = "message";
-  public static final String TAG_SHORT_STACKTRACE = "short-stacktrace";
-  public static final String TAG_FULL_STACKTRACE = "full-stacktrace";
-  public static final String TAG_TESTNG_RESULTS = "testng-results";
-  public static final String TAG_SUITE = "suite";
-  public static final String TAG_GROUPS = "groups";
-  public static final String TAG_GROUP = "group";
-  public static final String TAG_CLASS = "class";
-  public static final String TAG_METHOD = "method";
-  public static final String TAG_PARAMS = "params";
-  public static final String TAG_PARAM = "param";
-  public static final String TAG_PARAM_VALUE = "value";
-  public static final String TAG_REPORTER_OUTPUT = "reporter-output";
-  public static final String TAG_LINE = "line";
-
-  public static final String ATTR_URL = "url";
-  public static final String ATTR_NAME = "name";
-  public static final String ATTR_STATUS = "status";
-  public static final String ATTR_DESC = "description";
-  public static final String ATTR_METHOD_SIG = "signature";
-  public static final String ATTR_GROUPS = "groups";
-  public static final String ATTR_CLASS = "class";
-  public static final String ATTR_INDEX = "index";
-  public static final String ATTR_IS_NULL = "is-null";
-  public static final String ATTR_PACKAGE = "package";
-  public static final String ATTR_STARTED_AT = "started-at";
-  public static final String ATTR_FINISHED_AT = "finished-at";
-  public static final String ATTR_DURATION_MS = "duration-ms";
-  public static final String ATTR_IS_CONFIG = "is-config";
-  public static final String ATTR_DEPENDS_ON_METHODS = "depends-on-methods";
-  public static final String ATTR_DEPENDS_ON_GROUPS = "depends-on-groups";
-
-  public static final String TEST_PASSED = "PASS";
-  public static final String TEST_FAILED = "FAIL";
-  public static final String TEST_SKIPPED = "SKIP";
-
-  /**
-   * Indicates that no file fragmentation should be performed. This value indicates the XML generator to write all the
-   * results in one big file. Not recommended for large test suites.
-   */
-  public static final int FF_LEVEL_NONE = 1;
-  /**
-   * Will cause the XML generator to create separate files for each of the suites. A separate directory will be
-   * generated for each suite having the name of the suite and containing a <code>suite.xml</code> file that will be
-   * referenced in the main file with an <code>url</code> attribute
-   */
-  public static final int FF_LEVEL_SUITE = 2;
-  /**
-   * It behaves like <code>FF_LEVEL_SUITE</code>, except that it will also create a file for each
-   * <code>ISuiteResult</code>
-   */
-  public static final int FF_LEVEL_SUITE_RESULT = 3;
-
-  /**
-   * No stacktrace will be written in the output file
-   */
-  public static final int STACKTRACE_NONE = 0;
-  /**
-   * Write only a short version of the stacktrace
-   */
-  public static final int STACKTRACE_SHORT = 1;
-  /**
-   * Write only the full version of the stacktrace
-   */
-  public static final int STACKTRACE_FULL = 2;
-  /**
-   * Write both types of stacktrace
-   */
-  public static final int STACKTRACE_BOTH = 3;
-
-  //note: We're hardcoding the 'Z' because Java doesn't support all the intricacies of ISO-8601.
-  static final String FMT_DEFAULT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
-
-  /**
-   * Indicates the way that the file fragmentation should be performed. Set this property to one of the FF_LEVEL_*
-   * values for the desired output structure
-   */
-  private int fileFragmentationLevel = FF_LEVEL_NONE;
-
-  /**
-   * Stack trace output method for the failed tests using one of the STACKTRACE_* constants.
-   */
-  private int stackTraceOutputMethod = STACKTRACE_FULL;
-
-  /**
-   * The root output directory where the XMLs will be written. This will default for now to the default TestNG output
-   * directory
-   */
-  private String outputDirectory;
-
-  /**
-   * Indicates whether the <code>groups</code> attribute should be generated for a <code>test-method</code> element.
-   * Defaults to false due to the fact that this might be considered reduntant because of the group generation in the
-   * suite file.
-   */
-  private boolean generateGroupsAttribute = false;
-
-  /**
-   * When <code>true</code> it will generate the <class< element with a <code>name</code> and a
-   * <code>package</code> attribute. Otherwise, the fully qualified name will be used for the <code>name</code>
-   * attribute.
-   */
-  private boolean splitClassAndPackageNames = false;
-
-  /**
-   * Indicates whether the <code>depends-on-methods</code> attribute should be generated for a <code>test-method</code>
-   * element
-   */
-  private boolean generateDependsOnMethods = true;
-
-  /**
-   * Indicates whether the <code>depends-on-groups</code> attribute should be generated for a <code>test-method</code>
-   * element
-   */
-  private boolean generateDependsOnGroups = true;
-
-  /**
-   * The output format for timestamps
-   */
-  private String timestampFormat = FMT_DEFAULT;
-
-  public int getFileFragmentationLevel() {
-    return fileFragmentationLevel;
-  }
-
-  public void setFileFragmentationLevel(int fileFragmentationLevel) {
-    this.fileFragmentationLevel = fileFragmentationLevel;
-  }
-
-  public int getStackTraceOutputMethod() {
-    return stackTraceOutputMethod;
-  }
-
-  public void setStackTraceOutputMethod(int stackTraceOutputMethod) {
-    this.stackTraceOutputMethod = stackTraceOutputMethod;
-  }
-
-  public String getOutputDirectory() {
-    return outputDirectory;
-  }
-
-  public void setOutputDirectory(String outputDirectory) {
-    this.outputDirectory = outputDirectory;
-  }
-
-  public boolean isGenerateGroupsAttribute() {
-    return generateGroupsAttribute;
-  }
-
-  public void setGenerateGroupsAttribute(boolean generateGroupsAttribute) {
-    this.generateGroupsAttribute = generateGroupsAttribute;
-  }
-
-  public boolean isSplitClassAndPackageNames() {
-    return splitClassAndPackageNames;
-  }
-
-  public void setSplitClassAndPackageNames(boolean splitClassAndPackageNames) {
-    this.splitClassAndPackageNames = splitClassAndPackageNames;
-  }
-
-  public String getTimestampFormat() {
-    return timestampFormat;
-  }
-
-  public void setTimestampFormat(String timestampFormat) {
-    this.timestampFormat = timestampFormat;
-  }
-
-  public boolean isGenerateDependsOnMethods() {
-    return generateDependsOnMethods;
-  }
-
-  public void setGenerateDependsOnMethods(boolean generateDependsOnMethods) {
-    this.generateDependsOnMethods = generateDependsOnMethods;
-  }
-
-  public boolean isGenerateDependsOnGroups() {
-    return generateDependsOnGroups;
-  }
-
-  public void setGenerateDependsOnGroups(boolean generateDependsOnGroups) {
-    this.generateDependsOnGroups = generateDependsOnGroups;
-  }
-}
diff --git a/src/org/testng/reporters/XMLStringBuffer.java b/src/org/testng/reporters/XMLStringBuffer.java
deleted file mode 100755
index abf464d..0000000
--- a/src/org/testng/reporters/XMLStringBuffer.java
+++ /dev/null
@@ -1,301 +0,0 @@
-package org.testng.reporters;
-
-import java.util.Properties;
-import java.util.Stack;
-
-/**
- * This class allows you to generate an XML text document by pushing
- * and popping tags from a stack maintained internally.
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a> Jul 21, 2003
- */
-public class XMLStringBuffer {
-  /** End of line */
-  private static final String EOL = System.getProperty("line.separator");
-  
-  /** Tab space indent for XML document */
-  private static final String DEFAULT_INDENT_INCREMENT = "  ";
-  
-  /** The buffer to hold the xml document */
-  private final StringBuffer m_buffer;
-  
-  /** The stack of tags to make sure XML document is well formed. */
-  private final Stack<Tag> m_tagStack = new Stack<Tag>();
-
-  /** A string of space character representing the current indentation. */
-  private String m_currentIndent = "";
-  
-  /**
-   * 
-   * @param start A string of spaces indicating the indentation at which
-   * to start the generation.
-   */
-  public XMLStringBuffer(String start) {
-    this(new StringBuffer(), start);
-  }
-
-  /**
-   * Set the xml version and encoding for this document.
-   * 
-   * @param v the XML version
-   * @param enc the XML encoding
-   */
-  public void setXmlDetails(String v, String enc) {
-    m_buffer.append("<?xml version=\"" + v + "\" encoding=\"" + enc + "\"?>").append(EOL);
-  }
-  
-  /**
-   * Set the doctype for this document.
-   * 
-   * @param docType The DOCTYPE string, without the "<!DOCTYPE " ">"
-   */
-  public void setDocType(String docType) {
-    m_buffer.append("<!DOCTYPE " + docType + ">" + EOL);
-  }
-  
-  
-  /**
-   * 
-   * @param buffer The StringBuffer to use internally to represent the
-   * document.
-   * @param start A string of spaces indicating the indentation at which
-   * to start the generation.
-   */
-  public XMLStringBuffer(StringBuffer buffer, String start) {
-    m_buffer = buffer;
-    m_currentIndent = start;
-  }
-  
-  
-  /**
-   * Push a new tag.  Its value is stored and will be compared against the parameter
-   * passed to pop().
-   * 
-   * @param tagName The name of the tag.
-   * @param schema The schema to use (can be null or an empty string).
-   * @param attributes A Properties file representing the attributes (or null)
-   */
-  public void push(String tagName, String schema, Properties attributes) {
-    XMLUtils.xmlOpen(m_buffer, m_currentIndent, tagName + schema, attributes);
-    m_tagStack.push(new Tag(m_currentIndent, tagName));
-    m_currentIndent += DEFAULT_INDENT_INCREMENT;
-  }
-
-  /**
-   * Push a new tag.  Its value is stored and will be compared against the parameter
-   * passed to pop().
-   * 
-   * @param tagName The name of the tag.
-   * @param schema The schema to use (can be null or an empty string).
-   */
-  public void push(String tagName, String schema) {
-    push(tagName, schema, null);
-  }
-  
-  /**
-   * Push a new tag.  Its value is stored and will be compared against the parameter
-   * passed to pop().
-   * 
-   * @param tagName The name of the tag.
-   * @param attributes A Properties file representing the attributes (or null)
-   */
-  public void push(String tagName, Properties attributes) {
-    push(tagName, "", attributes);
-  }
-  
-  /**
-   * Push a new tag.  Its value is stored and will be compared against the parameter
-   * passed to pop().
-   * 
-   * @param tagName The name of the tag.
-   */
-  public void push(String tagName) {
-    push(tagName, "");
-  }
-    
-  /**
-   * Pop the last pushed element without verifying it if matches the previously
-   * pushed tag.
-   */
-  public void pop() {
-    pop(null);
-  }
-  
-  /**
-   * Pop the last pushed element and throws an AssertionError if it doesn't
-   * match the corresponding tag that was pushed earlier.
-   * 
-   * @param tagName The name of the tag this pop() is supposed to match.
-   */
-  public void pop(String tagName) {
-    m_currentIndent = m_currentIndent.substring(DEFAULT_INDENT_INCREMENT.length());
-    Tag t = m_tagStack.pop();
-    if (null != tagName) {
-      if (!tagName.equals(t.tagName)) {
-        // TODO Is it normal to throw an Error here?
-        throw new AssertionError(
-            "Popping the wrong tag: " + t.tagName + " but expected " + tagName);
-      }
-    }
-    XMLUtils.xmlClose(m_buffer, m_currentIndent, t.tagName);
-  }
-  
-  /**
-   * Add a required element to the current tag.  An opening and closing tag
-   * will be generated even if value is null.
-   * @param tagName The name of the tag
-   * @param value The value for this tag
-   */
-  public void addRequired(String tagName, String value) {
-    addRequired(tagName, value, null);
-  }
-
-  /**
-   * Add a required element to the current tag.  An opening and closing tag
-   * will be generated even if value is null.
-   * @param tagName The name of the tag
-   * @param value The value for this tag
-   * @param attributes A Properties file containing the attributes (or null)
-   */
-  public void addRequired(String tagName, String value, Properties attributes) {
-    XMLUtils.xmlRequired(m_buffer, m_currentIndent, tagName, value, attributes);
-  }
-
-  /**
-   * Add an optional String element to the current tag.  If value is null, nothing is
-   * added.
-   * @param tagName The name of the tag
-   * @param value The value for this tag
-   * @param attributes A Properties file containing the attributes (or null)
-   */
-  public void addOptional(String tagName, String value, Properties attributes) {
-    XMLUtils.xmlOptional(m_buffer, m_currentIndent, tagName, value, attributes);
-  }
-  
-  /**
-   * Add an optional String element to the current tag.  If value is null, nothing is
-   * added.
-   * @param tagName The name of the tag
-   * @param value The value for this tag
-   */
-  public void addOptional(String tagName, String value) {
-    addOptional(tagName, value, null);
-  }
-  
-  /**
-   * Add an optional Boolean element to the current tag.  If value is null, nothing is
-   * added.
-   * @param tagName The name of the tag
-   * @param value The value for this tag
-   * @param attributes A Properties file containing the attributes (or null)
-   */
-  public void addOptional(String tagName, Boolean value, Properties attributes) {
-    if (null != value) {
-      XMLUtils.xmlOptional(m_buffer, m_currentIndent, tagName, value.toString(), attributes);
-    }
-  }
-  
-  /**
-   * Add an optional Boolean element to the current tag.  If value is null, nothing is
-   * added.
-   * @param tagName The name of the tag
-   * @param value The value for this tag
-   * @param attributes A Properties file containing the attributes (or null)
-   */
-  public void addOptional(String tagName, Boolean value) {
-    addOptional(tagName, value, null);
-  }
-
-  /**
-   * Add an empty element tag (e.g. <foo/>)
-   * 
-   * @param tagName The name of the tag
-   * 
-   */
-  public void addEmptyElement(String tagName) {
-    addEmptyElement(tagName, null);
-  }
-  
-  /**
-   * Add an empty element tag (e.g. <foo/>)
-   * @param tagName The name of the tag
-   * @param attributes A Properties file containing the attributes (or null)
-   */
-  public void addEmptyElement(String tagName, Properties attributes) {
-    m_buffer.append(m_currentIndent).append("<").append(tagName);
-    XMLUtils.appendAttributes(m_buffer, attributes);
-    m_buffer.append("/>").append(EOL);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[XMLStringBuffer] " + s);
-  }
-  
-  /**
-   * Add a CDATA tag.
-   */
-  public void addCDATA(String content) {
-    if (content.indexOf("]]>") > -1) {
-      String[] subStrings = content.split("]]>");
-      m_buffer.append(m_currentIndent).append("<![CDATA[").append(subStrings[0]).append("]]]]>");
-      for (int i = 1; i < subStrings.length - 1; i++) {
-        m_buffer.append("<![CDATA[>").append(subStrings[i]).append("]]]]>");
-      }
-      m_buffer.append("<![CDATA[>").append(subStrings[subStrings.length - 1]).append("]]>");
-      if (content.endsWith("]]>")) {
-        m_buffer.append("<![CDATA[]]]]>").append("<![CDATA[>]]>");
-      }
-      m_buffer.append(EOL);
-    } else {
-      m_buffer.append(m_currentIndent).append("<![CDATA[").append(content).append("]]>" + EOL);
-    }
-  }
-  
-  /**
-   * 
-   * @return The StringBuffer used to create the document.
-   */
-  public StringBuffer getStringBuffer() {
-    return m_buffer;
-  }
-  
-  /**
-   * 
-   * @return The String representation of the XML for this XMLStringBuffer.
-   */
-  public String toXML() {
-    return m_buffer.toString();
-  }
-  
-  public static void main(String[] argv) {
-    StringBuffer result = new StringBuffer();
-    XMLStringBuffer sb = new XMLStringBuffer(result, "");
-    
-    sb.push("family");
-    Properties p = new Properties();
-    p.setProperty("prop1", "value1");
-    p.setProperty("prop2", "value2");
-    sb.addRequired("cedric", "true", p);
-    sb.addRequired("alois", "true");
-    sb.addOptional("anne-marie", (String) null);
-    sb.pop();
-    
-    System.out.println(result.toString());
-    
-    assert ("<family>" + EOL + "<cedric>true</cedric>" + EOL + "<alois>true</alois>" + EOL + "</family>"  + EOL)
-      .equals(result.toString());
-  }
-}
-
-
-////////////////////////
-
-class Tag {
-  public final String tagName;
-  public final String indent;
-  
-  public Tag(String ind, String n) {
-    tagName = n;
-    indent = ind;
-  }
-}
diff --git a/src/org/testng/reporters/XMLSuiteResultWriter.java b/src/org/testng/reporters/XMLSuiteResultWriter.java
deleted file mode 100755
index fb8b9d1..0000000
--- a/src/org/testng/reporters/XMLSuiteResultWriter.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package org.testng.reporters;
-
-import org.testng.IResultMap;
-import org.testng.ISuiteResult;
-import org.testng.ITestResult;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.Utils;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-/**
- * Utility writing an ISuiteResult to an XMLStringBuffer. Depending on the settings in the <code>config</code> property
- * it might generate an additional XML file with the actual content and only reference the file with an <code>url</code>
- * attribute in the passed XMLStringBuffer.
- *
- * @author Cosmin Marginean, Mar 16, 2007
- */
-
-public class XMLSuiteResultWriter {
-
-  private XMLReporterConfig config;
-
-  public XMLSuiteResultWriter(XMLReporterConfig config) {
-    this.config = config;
-  }
-
-  /**
-   * Writes the specified ISuiteResult in the given XMLStringBuffer. Please consider that depending on the settings in
-   * the <code>config</code> property it might generate an additional XML file with the actual content and only
-   * reference the file with an <code>url</code> attribute in the passed XMLStringBuffer.
-   *
-   * @param xmlBuffer   The XML buffer where to write or reference the suite result
-   * @param suiteResult The <code>ISuiteResult</code> to serialize
-   */
-  public void writeSuiteResult(XMLStringBuffer xmlBuffer, ISuiteResult suiteResult) {
-    if (XMLReporterConfig.FF_LEVEL_SUITE_RESULT != config.getFileFragmentationLevel()) {
-      writeAllToBuffer(xmlBuffer, suiteResult);
-    } else {
-      String parentDir =
-              config.getOutputDirectory() + File.separatorChar + suiteResult.getTestContext().getSuite().getName();
-      File file = referenceSuiteResult(xmlBuffer, parentDir, suiteResult);
-      XMLStringBuffer suiteXmlBuffer = new XMLStringBuffer("");
-      writeAllToBuffer(suiteXmlBuffer, suiteResult);
-      Utils.writeUtf8File(file.getAbsoluteFile().getParent(), file.getName(), suiteXmlBuffer.toXML());
-    }
-  }
-
-  private void writeAllToBuffer(XMLStringBuffer xmlBuffer, ISuiteResult suiteResult) {
-    xmlBuffer.push(XMLReporterConfig.TAG_TEST, getSuiteResultAttributes(suiteResult));
-    Set<ITestResult> testResults = new HashSet();
-    addAllTestResults(testResults, suiteResult.getTestContext().getPassedTests());
-    addAllTestResults(testResults, suiteResult.getTestContext().getFailedTests());
-    addAllTestResults(testResults, suiteResult.getTestContext().getSkippedTests());
-    addAllTestResults(testResults, suiteResult.getTestContext().getPassedConfigurations());
-    addAllTestResults(testResults, suiteResult.getTestContext().getSkippedConfigurations());
-    addAllTestResults(testResults, suiteResult.getTestContext().getFailedConfigurations());
-    addAllTestResults(testResults, suiteResult.getTestContext().getFailedButWithinSuccessPercentageTests());
-    addTestResults(xmlBuffer, testResults);
-    xmlBuffer.pop();
-  }
-
-  private void addAllTestResults(Set<ITestResult> testResults, IResultMap resultMap) {
-    if (resultMap != null) {
-      testResults.addAll(resultMap.getAllResults());
-    }
-  }
-
-  private File referenceSuiteResult(XMLStringBuffer xmlBuffer, String parentDir, ISuiteResult suiteResult) {
-    Properties attrs = new Properties();
-    String suiteResultName = suiteResult.getTestContext().getName() + ".xml";
-    attrs.setProperty(XMLReporterConfig.ATTR_URL, suiteResultName);
-    xmlBuffer.addEmptyElement(XMLReporterConfig.TAG_TEST, attrs);
-    return new File(parentDir + File.separatorChar + suiteResultName);
-  }
-
-  private Properties getSuiteResultAttributes(ISuiteResult suiteResult) {
-    Properties attributes = new Properties();
-    attributes.setProperty(XMLReporterConfig.ATTR_NAME, suiteResult.getTestContext().getName());
-    XMLReporter.addDurationAttributes(config, attributes, suiteResult.getTestContext().getStartDate(), suiteResult.getTestContext().getEndDate());
-    return attributes;
-  }
-
-  private void addTestResults(XMLStringBuffer xmlBuffer, Set<ITestResult> testResults) {
-    Map<String, List<ITestResult>> testsGroupedByClass = buildTestClassGroups(testResults);
-    for (Map.Entry<String, List<ITestResult>> result : testsGroupedByClass.entrySet()) {
-      Properties attributes = new Properties();
-      String className = result.getKey();
-      if (config.isSplitClassAndPackageNames()) {
-        int dot = className.lastIndexOf('.');
-        attributes.setProperty(XMLReporterConfig.ATTR_NAME,
-                dot > -1 ? className.substring(dot + 1, className.length()) : className);
-        attributes.setProperty(XMLReporterConfig.ATTR_PACKAGE, dot > -1 ? className.substring(0, dot) : "[default]");
-      } else {
-        attributes.setProperty(XMLReporterConfig.ATTR_NAME, className);
-      }
-
-      xmlBuffer.push(XMLReporterConfig.TAG_CLASS, attributes);
-      List<ITestResult> sortedResults = result.getValue();
-      Collections.sort( sortedResults );
-      for (ITestResult testResult : sortedResults) {
-        addTestResult(xmlBuffer, testResult);
-      }
-      xmlBuffer.pop();
-    }
-  }
-
-  private Map<String, List<ITestResult>> buildTestClassGroups(Set<ITestResult> testResults) {
-    Map<String, List<ITestResult>> map = Maps.newHashMap();
-    for (ITestResult result : testResults) {
-      String className = result.getTestClass().getName();
-      List<ITestResult> list = map.get(className);
-      if (list == null) {
-        list = Lists.newArrayList();
-        map.put(className, list);
-      }
-      list.add(result);
-    }
-    return map;
-  }
-
-  private void addTestResult(XMLStringBuffer xmlBuffer, ITestResult testResult) {
-    Properties attribs = getTestResultAttributes(testResult);
-    attribs.setProperty(XMLReporterConfig.ATTR_STATUS, getStatusString(testResult.getStatus()));
-    xmlBuffer.push(XMLReporterConfig.TAG_TEST_METHOD, attribs);
-    addTestMethodParams(xmlBuffer, testResult);
-    addTestResultException(xmlBuffer, testResult);
-    xmlBuffer.pop();
-  }
-
-  private String getStatusString(int testResultStatus) {
-    switch (testResultStatus) {
-      case ITestResult.SUCCESS:
-        return "PASS";
-      case ITestResult.FAILURE:
-        return "FAIL";
-      case ITestResult.SKIP:
-        return "SKIP";
-      case ITestResult.SUCCESS_PERCENTAGE_FAILURE:
-        return "SUCCESS_PERCENTAGE_FAILURE";
-    }
-    return null;
-  }
-
-  private Properties getTestResultAttributes(ITestResult testResult) {
-    Properties attributes = new Properties();
-    if (!testResult.getMethod().isTest()) {
-      attributes.setProperty(XMLReporterConfig.ATTR_IS_CONFIG, "true");
-    }
-    attributes.setProperty(XMLReporterConfig.ATTR_NAME, testResult.getName());
-    String description = testResult.getMethod().getDescription();
-    if (!Utils.isStringEmpty(description)) {
-      attributes.setProperty(XMLReporterConfig.ATTR_DESC, description);
-    }
-
-    attributes.setProperty(XMLReporterConfig.ATTR_METHOD_SIG, removeClassName(testResult.getMethod().toString()));
-
-    SimpleDateFormat format = new SimpleDateFormat(config.getTimestampFormat());
-    String startTime = format.format(testResult.getStartMillis());
-    String endTime = format.format(testResult.getEndMillis());
-    attributes.setProperty(XMLReporterConfig.ATTR_STARTED_AT, startTime);
-    attributes.setProperty(XMLReporterConfig.ATTR_FINISHED_AT, endTime);
-    long duration = testResult.getEndMillis() - testResult.getStartMillis();
-    String strDuration = Long.toString(duration);
-    attributes.setProperty(XMLReporterConfig.ATTR_DURATION_MS, strDuration);
-
-    if (config.isGenerateGroupsAttribute()) {
-      String groupNamesStr = Utils.arrayToString(testResult.getMethod().getGroups());
-      if (!Utils.isStringEmpty(groupNamesStr)) {
-        attributes.setProperty(XMLReporterConfig.ATTR_GROUPS, groupNamesStr);
-      }
-    }
-
-    if (config.isGenerateDependsOnMethods()) {
-      String dependsOnStr = Utils.arrayToString(testResult.getMethod().getMethodsDependedUpon());
-      if (!Utils.isStringEmpty(dependsOnStr)) {
-        attributes.setProperty(XMLReporterConfig.ATTR_DEPENDS_ON_METHODS, dependsOnStr);
-      }
-    }
-
-    if (config.isGenerateDependsOnGroups()) {
-      String dependsOnStr = Utils.arrayToString(testResult.getMethod().getGroupsDependedUpon());
-      if (!Utils.isStringEmpty(dependsOnStr)) {
-        attributes.setProperty(XMLReporterConfig.ATTR_DEPENDS_ON_GROUPS, dependsOnStr);
-      }
-    }
-
-    return attributes;
-  }
-
-  private String removeClassName(String methodSignature) {
-    int firstParanthesisPos = methodSignature.indexOf("(");
-    int dotAferClassPos = methodSignature.substring(0, firstParanthesisPos).lastIndexOf(".");
-    return methodSignature.substring(dotAferClassPos + 1, methodSignature.length());
-  }
-
-  public void addTestMethodParams(XMLStringBuffer xmlBuffer, ITestResult testResult) {
-    Object[] parameters = testResult.getParameters();
-    if ((parameters != null) && (parameters.length > 0)) {
-      xmlBuffer.push(XMLReporterConfig.TAG_PARAMS);
-      for (int i = 0; i < parameters.length; i++) {
-        addParameter(xmlBuffer, parameters[i], i);
-      }
-      xmlBuffer.pop();
-    }
-  }
-
-  private void addParameter(XMLStringBuffer xmlBuffer, Object parameter, int i) {
-    Properties attrs = new Properties();
-    attrs.setProperty(XMLReporterConfig.ATTR_INDEX, String.valueOf(i));
-    xmlBuffer.push(XMLReporterConfig.TAG_PARAM, attrs);
-    if (parameter == null) {
-      Properties valueAttrs = new Properties();
-      valueAttrs.setProperty(XMLReporterConfig.ATTR_IS_NULL, "true");
-      xmlBuffer.addEmptyElement(XMLReporterConfig.TAG_PARAM_VALUE, valueAttrs);
-    } else {
-      xmlBuffer.push(XMLReporterConfig.TAG_PARAM_VALUE);
-      xmlBuffer.addCDATA(parameter.toString());
-      xmlBuffer.pop();
-    }
-    xmlBuffer.pop();
-  }
-
-  private void addTestResultException(XMLStringBuffer xmlBuffer, ITestResult testResult) {
-    Throwable exception = testResult.getThrowable();
-    if (exception != null) {
-      Properties exceptionAttrs = new Properties();
-      exceptionAttrs.setProperty(XMLReporterConfig.ATTR_CLASS, exception.getClass().getName());
-      xmlBuffer.push(XMLReporterConfig.TAG_EXCEPTION, exceptionAttrs);
-
-      if (!Utils.isStringEmpty(exception.getMessage())) {        
-        xmlBuffer.push(XMLReporterConfig.TAG_MESSAGE);
-        xmlBuffer.addCDATA(exception.getMessage());
-        xmlBuffer.pop();
-      }
-
-      String[] stackTraces = Utils.stackTrace(exception, false);
-      if ((config.getStackTraceOutputMethod() & XMLReporterConfig.STACKTRACE_SHORT) == XMLReporterConfig
-              .STACKTRACE_SHORT) {
-        xmlBuffer.push(XMLReporterConfig.TAG_SHORT_STACKTRACE);
-        xmlBuffer.addCDATA(stackTraces[0]);
-        xmlBuffer.pop();
-      }
-      if ((config.getStackTraceOutputMethod() & XMLReporterConfig.STACKTRACE_FULL) == XMLReporterConfig
-              .STACKTRACE_FULL) {
-        xmlBuffer.push(XMLReporterConfig.TAG_FULL_STACKTRACE);
-        xmlBuffer.addCDATA(stackTraces[1]);
-        xmlBuffer.pop();
-      }
-
-      xmlBuffer.pop();
-    }
-  }
-
-}
diff --git a/src/org/testng/reporters/XMLUtils.java b/src/org/testng/reporters/XMLUtils.java
deleted file mode 100755
index cc5858d..0000000
--- a/src/org/testng/reporters/XMLUtils.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package org.testng.reporters;
-
-import java.text.CharacterIterator;
-import java.text.StringCharacterIterator;
-import java.util.Iterator;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-
-/**
- * Static helpers for XML.
- * 
- * @author Cedric Beust Jul 21, 2003
- *
- */
-public final class XMLUtils {
-
-  /** Platform specific end of line */
-  private static final String EOL = System.getProperty("line.separator");
-  
-  private XMLUtils() {
-    // Hide constructor
-  }
-  
-  static public String xml(String indent, String elementName, String content, Properties attributes) {
-    StringBuffer result = new StringBuffer();
-    xmlOpen(result, indent, elementName, attributes, true /* no newline */);
-    result.append(content);
-    xmlClose(result, "", elementName);
-    
-    return result.toString();
-  }
-  public static void xmlOptional(StringBuffer result, String sp,
-                                                      String elementName, Boolean value, Properties attributes)
-  {
-    if (null != value) {
-      xmlRequired(result, sp, elementName, value.toString(), attributes);
-    }
-  }
-  public static void xmlOptional(StringBuffer result, String sp,
-                                                      String elementName, String value, Properties attributes)
-  {
-    if (null != value) {
-      xmlRequired(result, sp, elementName, value, attributes);
-    }
-  }
-  public static void xmlRequired(StringBuffer result, String sp,
-                                                       String elementName, String value, Properties attributes)
-  {
-    result.append(xml(sp, elementName, value, attributes));
-  }
-  
-  public static void xmlOpen(StringBuffer result, String indent,
-      String tag, Properties attributes)
-  {
-    xmlOpen(result, indent, tag, attributes, false /* no newline */);
-  }
-  
-  /**
-   * Appends the attributes to result. The attributes are added on a single line
-   * as: key1="value1" key2="value2" ... (a space is added before the first key) 
-   *
-   * @param result the buffer to append attributes to.
-   * @param attributes the attributes to append (may be null).
-   */
-  public static void appendAttributes(StringBuffer result, Properties attributes) {
-    if (null != attributes) {
-      for (Iterator it = attributes.entrySet().iterator(); it.hasNext(); ) {
-        Entry entry = (Entry) it.next();
-        String key = entry.getKey().toString();
-        String value = escape(entry.getValue().toString());
-        result.append(" ").append(key).append("=\"").append(value).append("\"");
-      }
-    }
-  }
-  
-  public static void xmlOpen(StringBuffer result, String indent,
-                                                 String tag, Properties attributes,
-                                                 boolean noNewLine)
-  {
-    result.append(indent).append("<").append(tag);
-    appendAttributes(result, attributes);
-    result.append(">");
-    if (! noNewLine) result.append(EOL);
-  }
-
-  public static void xmlClose(StringBuffer result, String indent,
-                                                 String tag)
-  {
-    result.append(indent).append("</").append(tag).append(">").append(EOL);
-  }
-
-  public static String escape(String input) {
-    if (input == null) {
-      return null;
-    }
-    StringBuilder result = new StringBuilder();
-    StringCharacterIterator iterator = new StringCharacterIterator(input);
-    char character = iterator.current();
-    while (character != CharacterIterator.DONE) {
-      if (character == '<') {
-        result.append("<");
-      } else if (character == '>') {
-        result.append(">");
-      } else if (character == '\"') {
-        result.append(""");
-      } else if (character == '\'') {
-        result.append("'");
-      } else if (character == '&') {
-        result.append("&");
-      } else {
-        result.append(character);
-      }
-      character = iterator.next();
-    }
-    return result.toString();
-  }
-}
diff --git a/src/org/testng/reporters/util/StackTraceTools.java b/src/org/testng/reporters/util/StackTraceTools.java
deleted file mode 100755
index 1767b62..0000000
--- a/src/org/testng/reporters/util/StackTraceTools.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.testng.reporters.util;
-
-import org.testng.ITestNGMethod;
-
-/**
- * Functionality to allow tools to analyse and subdivide stack traces.
- * 
- * @author Paul Mendelson
- * @since 5.3
- * @version $Revision: 173 $
- */
-public class StackTraceTools {
-  // ~ Methods --------------------------------------------------------------
-
-  /** Finds topmost position of the test method in the stack, or top of stack if <code>method</code> is not in it. */
-  public static int getTestRoot(StackTraceElement[] stack,ITestNGMethod method) {
-    if(stack!=null) {
-      String cname = method.getTestClass().getName();
-      for(int x=stack.length-1; x>=0; x--) {
-        if(cname.equals(stack[x].getClassName())
-            && method.getMethodName().equals(stack[x].getMethodName())) {
-          return x;
-        }
-      }
-      return stack.length-1;
-    } else {
-      return -1;
-    }
-  }
-
-  /** Finds topmost position of the test method in the stack, or top of stack if <code>method</code> is not in it. */
-  public static StackTraceElement[] getTestNGInstrastructure(StackTraceElement[] stack,ITestNGMethod method) {
-    int slot=StackTraceTools.getTestRoot(stack, method);
-    if(slot>=0) {
-      StackTraceElement[] r=new StackTraceElement[stack.length-slot];
-      for(int x=0; x<r.length; x++) {
-        r[x]=stack[x+slot];
-      }
-      return r;
-    } else {
-      return new StackTraceElement[0];
-    }
-  }
-}
diff --git a/src/org/testng/util/RetryAnalyzerCount.java b/src/org/testng/util/RetryAnalyzerCount.java
deleted file mode 100755
index b2f5746..0000000
--- a/src/org/testng/util/RetryAnalyzerCount.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.testng.util;
-
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestResult;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * An implementation of IRetryAnalyzer that allows you to specify
- * the maximum number of times you want your test to be retried.
- * 
- * @author tocman at gmail.com (Jeremie Lenfant-Engelmann)
- */
-public abstract class RetryAnalyzerCount implements IRetryAnalyzer {
-
-  // Default retry once.
-  AtomicInteger count = new AtomicInteger(1);
-
-  /**
-   * Set the max number of time the method needs to be retried.
-   * @param count
-   */
-  protected void setCount(int count) {
-    this.count.set(count);
-  }
-
-  /**
-   * Retries the test if count is not 0. 
-   * @param result The result of the test.
-   */
-  public boolean retry(ITestResult result) {
-    boolean retry = false;
-
-    if (count.intValue() > 0) {
-      retry = retryMethod(result);
-      count.decrementAndGet();
-    }
-    return retry;
-  }
-
-  /**
-   * The method implemented by the class that test if the test
-   * must be retried or not.
-   * @param result The result of the test.
-   * @return true if the test must be retried, false otherwise.
-   */
-  public abstract boolean retryMethod(ITestResult result);
-}
diff --git a/src/org/testng/xml/ClassSuite.java b/src/org/testng/xml/ClassSuite.java
deleted file mode 100755
index 8425c3d..0000000
--- a/src/org/testng/xml/ClassSuite.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.testng.xml;
-
-import java.util.Arrays;
-
-import org.testng.SuiteRunner;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.internal.ClassHelper;
-import org.testng.internal.Utils;
-import org.testng.internal.annotations.AnnotationConfiguration;
-import org.testng.internal.annotations.IAnnotationFinder;
-
-/**
- * This class represents an XML <code><suite></code> made up of one test which is
- * made up of <class> elements only. Given a testName "testName" it is equivalent to the
- * following XML <suite>:
- *
- * <pre><code>
- *    <suite name ="Suite for testName">
- *       <test name ="testName">
- *          <classes>
- *              ...
- *          </classes>
- *       </test>
- *    </suite>
- * </code></pre>
- *
- * This class is typically used to build a XML <suite> from command line class parameters.
- * @author jolly
- */
-
-// TODO CQ why does this class exist? Should'nt this be a constructor in XmlSuite, a
-// factory helper or a simple class not extending XmlSuite outside this package?
-// The code uses instanceof test on this class to set the annotation type.
-
-public class ClassSuite extends XmlSuite {
-
-    /**
-     * Constructs a <code>XmlSuite</code>. The suite has the following characteristics:
-     * <ul>
-     * <li>The suite name is "Suite for testName"</li>
-     * <li>The suite is made up of a single test named "testName"</li>
-     * <li>The test is made up of list <class> only</li>
-     * </ul>
-     *
-     * @param testName the suite and inner test name.
-     * @param classes the classes making up the suite test.
-     */
-    public ClassSuite(String testName, Class[] classes) {
-        super();
-        XmlClass[] xmlClasses = Utils.classesToXmlClasses(classes);
-        XmlTest oneTest = new XmlTest(this);
-        oneTest.setName(testName);
-        oneTest.setXmlClasses(Arrays.asList(xmlClasses));
-        Class c = classes[0];
-        setName("Suite for " + testName);  // Set the suite name to the test name, too
-    }
-}
diff --git a/src/org/testng/xml/LaunchSuite.java b/src/org/testng/xml/LaunchSuite.java
deleted file mode 100755
index a76cbab..0000000
--- a/src/org/testng/xml/LaunchSuite.java
+++ /dev/null
@@ -1,432 +0,0 @@
-package org.testng.xml;
-
-
-import org.testng.collections.Lists;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.log4testng.Logger;
-import org.testng.reporters.XMLStringBuffer;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * Wrapper for real suites and custom configured suites.
- * Should only be used for integration purposes; creating a custom testng.xml
- *
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public abstract class LaunchSuite {
-  /** This class's log4testng Logger. */
-  private static final Logger LOGGER = Logger.getLogger(LaunchSuite.class);
-  
-  protected boolean m_temporary;
-  
-  /**
-   * Constructs a <code>LaunchSuite</code>
-   *
-   * @param isTemp the temporary status
-   */
-  protected LaunchSuite(boolean isTemp) {
-    m_temporary = isTemp;
-  }
-  
-  /**
-   * Returns the temporary state.
-   * @return the temporary state.
-   */
-  public boolean isTemporary() {
-    return m_temporary;
-  }
-  
-  /**
-   * Saves the suite file in the specified directory and returns the file 
-   * pathname.
-   *
-   * @param directory the directory where the suite file is to be saved.
-   * @return the file pathname of the saved file.
-   */
-  public abstract File save(File directory);
-
-  /**
-   * <code>ExistingSuite</code> is a non-temporary LaunchSuite based on an existing 
-   * file.
-   */
-  public static class ExistingSuite extends LaunchSuite {
-    
-    /**
-     * The existing suite path (either relative to the project root or an absolute path)
-     */
-    private File m_suitePath;
-
-    /**
-     * Constructs a <code>ExistingSuite</code> based on an existing file 
-     *
-     * @param path the path to the existing Launch suite.
-     */
-    public ExistingSuite(File path) {
-      super(false);
-      
-      m_suitePath = path;
-    }
-
-    /**
-     * {@inheritDoc} This implementation saves nothing because the suite file already 
-     * exists.
-     */
-    @Override
-    public File save(File directory) {
-      return m_suitePath;
-    }
-  }
-
-  /**
-   * <code>CustomizedSuite</code> TODO cquezel JavaDoc.
-   */
-  private abstract static class CustomizedSuite extends LaunchSuite {
-    protected String m_projectName;
-    protected String m_suiteName;
-    
-    /** The annotation type. May be null. */
-    protected AnnotationTypeEnum m_annotationType;
-    
-    protected Map<String, String> m_parameters;
-    
-    /** The string buffer used to write the XML file. */
-    private XMLStringBuffer m_suiteBuffer;
-    
-    /**
-     * Constructs a <code>CustomizedSuite</code> TODO cquezel JavaDoc.
-     *
-     * @param projectName
-     * @param className
-     * @param parameters
-     * @param annotationType
-     */
-    private CustomizedSuite(final String projectName,
-        final String className,
-        final Map<String, String> parameters,
-        final String annotationType) 
-    {
-      super(true);
-      
-      m_projectName = projectName;
-      m_suiteName = className;
-      m_parameters = parameters;
-      m_annotationType = annotationType == null ? null : AnnotationTypeEnum.valueOf(annotationType, false);
-    }
-
-    /**
-     * TODO cquezel JavaDoc
-     *
-     * @return
-     */
-    protected XMLStringBuffer createContentBuffer() {
-      XMLStringBuffer suiteBuffer = new XMLStringBuffer(""); //$NON-NLS-1$
-      suiteBuffer.setDocType("suite SYSTEM \"" + Parser.TESTNG_DTD_URL + "\"");
-      
-      Properties attrs = new Properties();
-      attrs.setProperty("parallel", XmlSuite.PARALLEL_NONE);
-      attrs.setProperty("name", m_suiteName);
-      suiteBuffer.push("suite", attrs);
-      
-      if (m_parameters != null) {
-        for (Map.Entry<String, String> entry : m_parameters.entrySet()) {
-          Properties paramAttrs = new Properties();
-          paramAttrs.setProperty("name", entry.getKey());
-          paramAttrs.setProperty("value", entry.getValue());
-          suiteBuffer.push("parameter", paramAttrs);
-          suiteBuffer.pop("parameter");
-        }
-      }
-      
-      initContentBuffer(suiteBuffer);
-      
-      suiteBuffer.pop("suite");
-      
-      return suiteBuffer;
-    }
-
-    /**
-     * TODO cquezel JavaDoc
-     *
-     * @return
-     */
-    private XMLStringBuffer getSuiteBuffer() {
-      if (null == m_suiteBuffer) {
-        m_suiteBuffer = createContentBuffer();
-      }
-      
-      return m_suiteBuffer;
-    }
-
-    /**
-     * Initializes the content of the xml string buffer.  
-     *
-     * @param suiteBuffer the string buffer to initialize.
-     */
-    protected abstract void initContentBuffer(XMLStringBuffer suiteBuffer);
-    
-    /**
-     * {@inheritDoc} This implementation saves the suite to the "temp-testng-customsuite.xml" 
-     * file in the specified directory. 
-     */
-    @Override
-    public File save(File directory) {
-      final File suiteFile = new File(directory, "temp-testng-customsuite.xml");
-      
-      saveSuiteContent(suiteFile, getSuiteBuffer());
-      
-      return suiteFile;
-    }
-    
-    /**
-     * Saves the content of the string buffer to the specified file.
-     *
-     * @param file the file to write to.
-     * @param content the content to write to the file.
-     */
-    protected void saveSuiteContent(final File file, final XMLStringBuffer content) {
-      
-      try {
-        FileWriter fw = new FileWriter(file);
-        try {
-          fw.write(content.getStringBuffer().toString());
-        }
-        finally {
-          fw.close();
-        }
-      }
-      catch (IOException ioe) {
-        // TODO CQ is this normal to swallow exception here 
-        LOGGER.error("IO Exception", ioe);
-      }
-    }
-  }
-
-  /**
-   * A <code>MethodsSuite</code> is a suite made up of methods. 
-   */
-  static class MethodsSuite extends CustomizedSuite {
-    protected Collection<String> m_methodNames;
-    protected String m_className;
-    protected int m_logLevel;
-    
-    /**
-     * Constructs a <code>MethodsSuite</code> TODO cquezel JavaDoc.
-     *
-     * @param projectName
-     * @param className
-     * @param methodNames
-     * @param parameters
-     * @param annotationType (may be null)
-     * @param logLevel
-     */
-    MethodsSuite(final String projectName,
-        final String className,
-        final Collection<String> methodNames,
-        final Map<String, String> parameters,
-        final String annotationType,
-        final int logLevel) {
-      super(projectName, className, parameters, annotationType);
-      
-      m_className = className;
-      m_methodNames = methodNames;
-      m_logLevel = logLevel;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void initContentBuffer(XMLStringBuffer suiteBuffer) {
-      Properties testAttrs = new Properties();
-      testAttrs.setProperty("name", m_className);
-      if (m_annotationType != null) {
-        testAttrs.setProperty("annotations", m_annotationType.getName());
-      }
-      testAttrs.setProperty("verbose", String.valueOf(m_logLevel));
-      
-      suiteBuffer.push("test", testAttrs);
-      
-      suiteBuffer.push("classes");
-      
-      Properties classAttrs = new Properties();
-      classAttrs.setProperty("name", m_className);
-      
-      if ((null != m_methodNames) && (m_methodNames.size() > 0)) {
-        suiteBuffer.push("class", classAttrs);
-        
-        suiteBuffer.push("methods");
-        
-        for (Object methodName : m_methodNames) {
-          Properties methodAttrs = new Properties();
-          methodAttrs.setProperty("name", (String) methodName);
-          suiteBuffer.addEmptyElement("include", methodAttrs);
-        }
-        
-        suiteBuffer.pop("methods");
-        suiteBuffer.pop("class");
-      }
-      else {
-        suiteBuffer.addEmptyElement("class", classAttrs);
-      }
-      suiteBuffer.pop("classes");
-      suiteBuffer.pop("test");
-    }
-  }
-
-  static class ClassesAndMethodsSuite extends CustomizedSuite {
-    protected Map<String, Collection<String>> m_classes;
-    protected int m_logLevel;
-    
-    ClassesAndMethodsSuite(final String projectName,
-        final Map<String, Collection<String>> classes,
-        final Map<String, String> parameters,
-        final String annotationType,
-        final int logLevel) {
-      super(projectName, "Custom suite", parameters, annotationType);
-      m_classes = classes;
-      m_logLevel = logLevel;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void initContentBuffer(XMLStringBuffer suiteBuffer) {
-      Properties testAttrs = new Properties();
-      testAttrs.setProperty("name", m_projectName);
-      if (m_annotationType != null) {
-        testAttrs.setProperty("annotations", m_annotationType.getName());
-      }
-      testAttrs.setProperty("verbose", String.valueOf(m_logLevel));
-      
-      suiteBuffer.push("test", testAttrs);
-      
-      suiteBuffer.push("classes");
-      
-      for(Map.Entry<String, Collection<String>> entry : m_classes.entrySet()) {
-        Properties classAttrs = new Properties();
-        classAttrs.setProperty("name", entry.getKey());
-        
-        Collection<String> methodNames= sanitize(entry.getValue());
-        if ((null != methodNames) && (methodNames.size() > 0)) {
-          suiteBuffer.push("class", classAttrs);
-          
-          suiteBuffer.push("methods");
-          
-          for (String methodName : methodNames) {
-            Properties methodAttrs = new Properties();
-            methodAttrs.setProperty("name", methodName);
-            suiteBuffer.addEmptyElement("include", methodAttrs);
-          }
-          
-          suiteBuffer.pop("methods");
-          suiteBuffer.pop("class");
-        }
-        else {
-          suiteBuffer.addEmptyElement("class", classAttrs);
-        }
-      }
-      suiteBuffer.pop("classes");
-      suiteBuffer.pop("test");
-    }
-    
-    private Collection<String> sanitize(Collection<String> source) {
-      if(null == source) return null;
-      
-      List<String> result= Lists.newArrayList();
-      for(String name: source) {
-        if(!"".equals(name)) {
-          result.add(name);
-        }
-      }
-      
-      return result;
-    }
-  }
-  
-  /**
-   * <code>ClassListSuite</code> TODO cquezel JavaDoc.
-   */
-  static class ClassListSuite extends CustomizedSuite {
-    protected Collection<String> m_packageNames;
-    protected Collection<String> m_classNames;
-    protected Collection<String> m_groupNames;
-    protected int m_logLevel;
-    
-    ClassListSuite(final String projectName,
-        final Collection<String> packageNames,
-        final Collection<String> classNames,
-        final Collection<String> groupNames,
-        final Map<String, String> parameters,
-        final String annotationType,
-        final int logLevel) {
-      super(projectName, "Custom suite", parameters, annotationType);
-      
-      m_packageNames = packageNames;
-      m_classNames = classNames;
-      m_groupNames = groupNames;
-      m_logLevel = logLevel;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void initContentBuffer(XMLStringBuffer suiteBuffer) {
-      Properties testAttrs = new Properties();
-      testAttrs.setProperty("name", m_projectName);
-      if (m_annotationType != null) {
-        testAttrs.setProperty("annotations", m_annotationType.getName());
-      }
-      testAttrs.setProperty("verbose", String.valueOf(m_logLevel));
-      
-      suiteBuffer.push("test", testAttrs);
-      
-      if (null != m_groupNames) {
-        suiteBuffer.push("groups");
-        suiteBuffer.push("run");
-        
-        for (String groupName : m_groupNames) {
-          Properties includeAttrs = new Properties();
-          includeAttrs.setProperty("name", groupName);
-          suiteBuffer.addEmptyElement("include", includeAttrs);
-        }
-        
-        suiteBuffer.pop("run");
-        suiteBuffer.pop("groups");
-      }
-      
-      // packages belongs to suite according to the latest DTD
-      if ((m_packageNames != null) && (m_packageNames.size() > 0)) {
-        suiteBuffer.push("packages");
-        
-        for (String packageName : m_packageNames) {
-          Properties packageAttrs = new Properties();
-          packageAttrs.setProperty("name", packageName);
-          suiteBuffer.addEmptyElement("package", packageAttrs);
-        }
-        suiteBuffer.pop("packages");
-      }
-      
-      if ((m_classNames != null) && (m_classNames.size() > 0)) {
-        suiteBuffer.push("classes");
-        
-        for (String className : m_classNames) {
-          Properties classAttrs = new Properties();
-          classAttrs.setProperty("name", className);
-          suiteBuffer.addEmptyElement("class", classAttrs);
-        }
-        
-        suiteBuffer.pop("classes");
-      }
-      suiteBuffer.pop("test");
-    }
-  }
-}
diff --git a/src/org/testng/xml/Parser.java b/src/org/testng/xml/Parser.java
deleted file mode 100755
index 8211d04..0000000
--- a/src/org/testng/xml/Parser.java
+++ /dev/null
@@ -1,306 +0,0 @@
-package org.testng.xml;
-
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.ClassHelper;
-import org.xml.sax.SAXException;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * <code>Parser</code> is a parser for a TestNG XML test suite file.   
- */
-public class Parser {
-  
-  /** The name of the TestNG DTD. */
-  public static final String TESTNG_DTD = "testng-1.0.dtd";
-  
-  /** The URL to the deprecated TestNG DTD. */
-  public static final String DEPRECATED_TESTNG_DTD_URL = "http://beust.com/testng/" + TESTNG_DTD;
-  
-  /** The URL to the TestNG DTD. */
-  public static final String TESTNG_DTD_URL = "http://testng.org/" + TESTNG_DTD;
-  
-  /** The default file name for the TestNG test suite if none is specified (testng.xml). */
-  public static final String DEFAULT_FILENAME = "testng.xml";
-  
-  /** The file name of the xml suite being parsed. This may be null if the Parser
-   * has not been initialized with a file name. TODO CQ This member is never used. */
-  private final String m_fileName;
-  
-  /** */
-  private final InputStream m_inputStream;
-
-  /** Look in Jar for the file instead? TODO CQ this member is never used. */
-  private boolean m_lookInJar = false;
-
-  /**
-   * Constructs a <code>Parser</code> to use the inputStream as the source of
-   * the xml test suite to parse. 
-   * @param filename the filename corresponding to the inputStream or null if
-   * unknown.
-   * @param inputStream the xml test suite input stream. 
-   */
-  private Parser(String filename, InputStream inputStream) {
-    m_fileName = filename;
-    m_inputStream = inputStream;
-  }
-  
-  /**
-   * create a parser that works on a given file.
-   * @param fileName the filename of the xml suite to parse.
-   * @throws FileNotFoundException if the fileName is not found.
-   */
-  public Parser(String fileName) throws FileNotFoundException {
-    this(fileName, new FileInputStream(new File(fileName)));
-  }
-  
-  /**
-   * Constructs a <code>Parser</code> to use the inputStream as the source of
-   * the xml test suite to parse. 
-   *
-   * @param inputStream the xml test suite input stream. 
-   */
-  public Parser(InputStream inputStream) {
-    this(null, inputStream);
-  }
-  
-  /**
-   * Creates a parser that will try to find the DEFAULT_FILENAME from the jar.
-   * @throws FileNotFoundException if the DEFAULT_FILENAME resource is not
-   * found in the classpath.
-   */
-  public Parser() throws FileNotFoundException {
-    this(DEFAULT_FILENAME, getDefault());
-  }
-
-  /**
-   * Returns an input stream on the resource named DEFAULT_FILENAME.
-   *
-   * @return an input stream on the resource named DEFAULT_FILENAME.
-   * @throws FileNotFoundException if the DEFAULT_FILENAME resource is not
-   * found in the classpath.
-   */
-  private static InputStream getDefault() throws FileNotFoundException {
-    // Try to look for the DEFAULT_FILENAME from the jar
-    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-    InputStream in;
-    // TODO CQ is this OK? should we fall back to the default classloader if the
-    // context classloader fails.
-    if (classLoader != null) {
-      in = classLoader.getResourceAsStream(DEFAULT_FILENAME);
-    }
-    else {
-      in = Parser.class.getResourceAsStream(DEFAULT_FILENAME);
-    }
-    if (in == null) {
-      throw new FileNotFoundException("Default property file of " + DEFAULT_FILENAME
-          + " was not found");
-    }
-    return in;
-  }
-  
-  /**
-   * Parses the TestNG test suite and returns the corresponding XmlSuite,
-   * and possibly, other XmlSuite that are pointed to by <suite-files>
-   * tags.
-   *
-   * @return the parsed TestNG test suite.
-   * 
-   * @throws ParserConfigurationException
-   * @throws SAXException
-   * @throws IOException if an I/O error occurs while parsing the test suite file or
-   * if the default testng.xml file is not found.
-   */
-  public Collection<XmlSuite> parse() throws ParserConfigurationException, SAXException, IOException 
-  {
-    // Each suite found is put in this map, keyed by their canonical
-    // path to make sure we don't add a same file twice
-    // (e.g. "testng.xml" and "./testng.xml")
-    Map<String, XmlSuite> mapResult = Maps.newHashMap();
-    
-    SAXParserFactory spf= loadSAXParserFactory();
-        
-    if(supportsValidation(spf)) {
-      spf.setValidating(true);
-    }
-    SAXParser saxParser = spf.newSAXParser();
-
-    File parentFile = null;
-    String mainFilePath = null;
-
-    if (m_fileName != null) {
-        File mainFile = new File(m_fileName);
-        mainFilePath = mainFile.getCanonicalPath();
-        parentFile = mainFile.getParentFile();
-    }
-
-    List<String> toBeParsed = Lists.newArrayList();
-    List<String> toBeAdded = Lists.newArrayList();
-    List<String> toBeRemoved = Lists.newArrayList();
-    toBeParsed.add(mainFilePath);
-    
-    while (toBeParsed.size() > 0) {
-      
-      for (String currentFile : toBeParsed) {
-        TestNGContentHandler ch = new TestNGContentHandler(currentFile);
-        InputStream inputStream = currentFile != null ?
-            new FileInputStream(currentFile) : m_inputStream;
-        saxParser.parse(inputStream, ch);
-        if (currentFile != null) {
-          inputStream.close();
-        }
-        XmlSuite result = ch.getSuite();
-        XmlSuite currentXmlSuite = result;
-        mapResult.put(currentFile, currentXmlSuite);
-        toBeRemoved.add(currentFile);
-        
-        List<String> suiteFiles = currentXmlSuite.getSuiteFiles();
-        if (suiteFiles.size() > 0) {
-          for (String path : suiteFiles) {
-            String canonicalPath;
-            if (parentFile != null && new File(parentFile, path).exists()) {
-              canonicalPath = new File(parentFile, path).getCanonicalPath();
-            } else {
-              canonicalPath = new File(path).getCanonicalPath();
-            }
-            if (! mapResult.containsKey(canonicalPath)) {
-              toBeAdded.add(canonicalPath);
-            }
-          }
-        }
-      }
-      
-      //
-      // Add and remove files from toBeParsed before we loop
-      //
-      for (String s : toBeRemoved) {
-        toBeParsed.remove(s);
-      }
-      toBeRemoved = Lists.newArrayList();
-      
-      for (String s : toBeAdded) {
-        toBeParsed.add(s);
-      }
-      toBeAdded = Lists.newArrayList();
-      
-    }
-    
-    return mapResult.values();
-
-  }
-  
-  public List<XmlSuite> parseToList() 
-    throws ParserConfigurationException, SAXException, IOException
-  {
-    List<XmlSuite> result = Lists.newArrayList();
-    Collection<XmlSuite> suites = parse();
-    for (XmlSuite suite : suites) {
-      result.add(suite);
-    }
-    
-    return result;
-  }
-
-  
-  /**
-   * Tries to load a <code>SAXParserFactory</code> by trying in order the following:
-   * <tt>com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</tt> (SUN JDK5)
-   * <tt>org.apache.crimson.jaxp.SAXParserFactoryImpl</tt> (SUN JDK1.4) and 
-   * last <code>SAXParserFactory.newInstance()</code>.
-   * 
-   * @return a <code>SAXParserFactory</code> implementation
-   * @throws TestNGException thrown if no <code>SAXParserFactory</code> can be loaded
-   */
-  private SAXParserFactory loadSAXParserFactory() {
-    SAXParserFactory spf = null;
-    
-    StringBuffer errorLog= new StringBuffer();
-    try {
-      Class factoryClass= ClassHelper.forName("com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
-      spf = (SAXParserFactory) factoryClass.newInstance();
-    }
-    catch(Exception ex) {
-      errorLog.append("JDK5 SAXParserFactory cannot be loaded: " + ex.getMessage());
-    }
-
-    if(null == spf) {
-      // If running with JDK 1.4
-      try {
-        Class factoryClass = ClassHelper.forName("org.apache.crimson.jaxp.SAXParserFactoryImpl");
-        spf = (SAXParserFactory) factoryClass.newInstance();
-      }
-      catch(Exception ex) {
-        errorLog.append("\n").append("JDK1.4 SAXParserFactory cannot be loaded: " + ex.getMessage());
-      }
-    }
-    
-    Throwable cause= null;
-    if(null == spf) {
-      try {
-        spf= SAXParserFactory.newInstance();
-      }
-      catch(FactoryConfigurationError fcerr) {
-        cause= fcerr;
-      }
-    }
-    
-    if(null == spf) {      
-      throw new TestNGException("Cannot initialize a SAXParserFactory\n" + errorLog.toString(), cause);
-    }
-    
-    return spf;
-  }
-  
-
-  /**
-   * Tests if the current <code>SAXParserFactory</code> supports DTD validation.
-   * @param spf
-   * @return
-   */
-  private boolean supportsValidation(SAXParserFactory spf) {
-    try {
-      return spf.getFeature("http://xml.org/sax/features/validation");
-    }
-    catch(Exception ex) { ; }
-    
-    return false;
-  }
-  
-//  private static void ppp(String s) {
-//    System.out.println("[Parser] " + s);
-//  }
-  
-//  /**
-//   *
-//   * @param argv ignored
-//   * @throws FileNotFoundException if the 
-//   * @throws ParserConfigurationException
-//   * @throws SAXException
-//   * @throws IOException
-//   * @since 1.0
-//   */
-//  public static void main(String[] argv) 
-//    throws FileNotFoundException, ParserConfigurationException, SAXException, IOException 
-//  {
-//    XmlSuite l = 
-//      new Parser("c:/eclipse-workspace/testng/test/testng.xml").parse();
-//    
-//    System.out.println(l);
-//  }
-}
-
diff --git a/src/org/testng/xml/SuiteGenerator.java b/src/org/testng/xml/SuiteGenerator.java
deleted file mode 100755
index 225eb36..0000000
--- a/src/org/testng/xml/SuiteGenerator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.testng.xml;
-
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * Factory to create custom suites.
- * @author Hani Suleiman
- *         Date: Jul 25, 2005
- *         Time: 1:12:18 PM
- */
-public class SuiteGenerator {
-  private static final Collection<String> EMPTY_CLASS_LIST= Collections.emptyList();
-  
-  public static LaunchSuite createProxiedXmlSuite(final File xmlSuitePath) {
-    return new LaunchSuite.ExistingSuite(xmlSuitePath);
-  }
-
-  public static LaunchSuite createSuite(final String projectName,
-                                        final Collection<String> packageNames,
-                                        final Map<String, Collection<String>> classAndMethodNames,
-                                        final Collection<String> groupNames,
-                                        final Map<String, String> parameters,
-                                        final String annotationType,
-                                        final int logLevel) {
-    Collection<String> classes= classAndMethodNames != null ? classAndMethodNames.keySet() : EMPTY_CLASS_LIST;
-    if((null != groupNames) && !groupNames.isEmpty()) {
-      return new LaunchSuite.ClassListSuite(projectName,
-                                            packageNames,
-                                            classes,
-                                            groupNames,
-                                            parameters,
-                                            annotationType,
-                                            logLevel);
-    }
-    else if(packageNames != null && packageNames.size() > 0) {
-      return new LaunchSuite.ClassListSuite(projectName,
-                                            packageNames,
-                                            classes,
-                                            groupNames,
-                                            parameters,
-                                            annotationType,
-                                            logLevel);
-    }
-    else {
-      return new LaunchSuite.ClassesAndMethodsSuite(projectName,
-                                                    classAndMethodNames,
-                                                    parameters,
-                                                    annotationType,
-                                                    logLevel);
-    }
-  }
-
-  /**
-   * @deprecated use {@link #createSuite(String, java.util.Collection, java.util.Map, java.util.Collection, java.util.Map, String, int)} instead.
-   */
-  public static LaunchSuite createCustomizedSuite(final String projectName,
-                                                  final Collection<String> packageNames,
-                                                  final Collection<String> classNames,
-                                                  final Collection<String> methodNames,
-                                                  final Collection<String> groupNames,
-                                                  final Map<String, String> parameters,
-                                                  final String annotationType,
-                                                  final int logLevel) {
-    if((null != groupNames) && !groupNames.isEmpty()) {
-      return new LaunchSuite.ClassListSuite(projectName,
-                                            packageNames,
-                                            classNames,
-                                            groupNames,
-                                            parameters,
-                                            annotationType,
-                                            logLevel);
-    }
-    else if((classNames != null && classNames.size() > 1) || packageNames != null && packageNames.size() > 0) {
-      return new LaunchSuite.ClassListSuite(projectName,
-                                            packageNames,
-                                            classNames,
-                                            groupNames,
-                                            parameters,
-                                            annotationType,
-                                            logLevel);
-    }
-    else {
-      return new LaunchSuite.MethodsSuite(projectName,
-                                          classNames.iterator().next(),
-                                          methodNames,
-                                          parameters,
-                                          annotationType,
-                                          logLevel);
-    }
-  }
-}
diff --git a/src/org/testng/xml/TestNGContentHandler.java b/src/org/testng/xml/TestNGContentHandler.java
deleted file mode 100755
index 138fc06..0000000
--- a/src/org/testng/xml/TestNGContentHandler.java
+++ /dev/null
@@ -1,628 +0,0 @@
-package org.testng.xml;
-
-import org.testng.IObjectFactory;
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.Utils;
-import org.testng.internal.version.VersionInfo;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Suite definition parser utility.
- * 
- * @author Cedric Beust
- * @author <a href='mailto:the_mindstorm at evolva.ro'>Alexandru Popescu</a>
- */
-public class TestNGContentHandler extends DefaultHandler {
-  private XmlSuite m_currentSuite = null;
-  private XmlTest m_currentTest = null;
-  private List<String> m_currentDefines = null;
-  private List<String> m_currentRuns = null;
-  private List<String> m_currentGroups = null;
-  private List<XmlClass> m_currentClasses = null;
-  private List<XmlPackage> m_currentPackages = null;
-  private XmlPackage m_currentPackage = null;
-  private List<XmlSuite> m_suites = Lists.newArrayList();
-  private List<String> m_currentIncludedGroups = null;
-  private List<String> m_currentExcludedGroups = null;
-  private Map<String, String> m_currentTestParameters = null;
-  private Map<String, String> m_currentSuiteParameters = null;
-  private List<String> m_currentMetaGroup = null;
-  private String m_currentMetaGroupName;
-  private boolean m_inTest = false;
-  private XmlClass m_currentClass = null;
-  private ArrayList<XmlInclude> m_currentIncludedMethods = null;
-  private List<String> m_currentExcludedMethods = null;
-  private ArrayList<XmlMethodSelector> m_currentSelectors = null;
-  private XmlMethodSelector m_currentSelector = null;
-  private String m_currentLanguage = null;
-  private String m_currentExpression = null;
-  private List<String> m_suiteFiles = Lists.newArrayList();
-  private boolean m_enabledTest;
-  private List<String> m_listeners;
-  
-  private String m_fileName;
-
-  public TestNGContentHandler(String fileName) {
-    m_fileName = fileName;
-  }
-  
-  static private void ppp(String s) {
-    System.out.println("[TestNGContentHandler] " + s);
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
-   *      java.lang.String)
-   */
-  @Override
-  public InputSource resolveEntity(String systemId, String publicId) throws IOException, SAXException {
-    InputSource result = null;
-    if (Parser.DEPRECATED_TESTNG_DTD_URL.equals(publicId)
-        || Parser.TESTNG_DTD_URL.equals(publicId)) {
-      InputStream is = getClass().getClassLoader().getResourceAsStream(Parser.TESTNG_DTD);
-      if (null == is) {
-        is = Thread.currentThread().getContextClassLoader().getResourceAsStream(Parser.TESTNG_DTD);
-        if (null == is) {
-          System.out.println("WARNING: couldn't find in classpath " + publicId
-              + "\n" + "Fetching it from the Web site.");
-          result = super.resolveEntity(systemId, publicId);
-        }
-        else {
-          result = new InputSource(is);
-        }
-      }
-      else {
-        result = new InputSource(is);
-      }
-    }
-    else {
-      result = super.resolveEntity(systemId, publicId);
-    }
-
-    return result;
-  }
-  
-  /**
-   * Parse <suite-file>
-   */
-  private void xmlSuiteFile(boolean start, Attributes attributes) {
-    if (start) {
-      String path = attributes.getValue("path");
-      m_suiteFiles.add(path);
-    }
-    else {
-      m_currentSuite.setSuiteFiles(m_suiteFiles);
-    }
-  }
-
-  /**
-   * Parse <suite>
-   */
-  private void xmlSuite(boolean start, Attributes attributes) {
-    if (start) {
-      String name = attributes.getValue("name");
-      m_currentSuite = new XmlSuite();
-      m_currentSuite.setFileName(m_fileName);
-      m_currentSuite.setName(name);
-      m_currentSuiteParameters = Maps.newHashMap();
-      
-      String verbose = attributes.getValue("verbose");
-      if (null != verbose) {
-        m_currentSuite.setVerbose(new Integer(verbose));
-      }
-      String jUnit = attributes.getValue("junit");
-      if (null != jUnit) {
-        m_currentSuite.setJUnit( Boolean.valueOf(jUnit).booleanValue());
-      }
-      String parallel = attributes.getValue("parallel");
-      if (null != parallel) {
-        if(XmlSuite.PARALLEL_METHODS.equals(parallel)
-            || XmlSuite.PARALLEL_TESTS.equals(parallel)
-            || XmlSuite.PARALLEL_NONE.equals(parallel)
-            || XmlSuite.PARALLEL_CLASSES.equals(parallel)
-            || "true".equals(parallel)
-            || "false".equals(parallel)) {
-          m_currentSuite.setParallel(parallel);
-        }
-        else {
-          Utils.log("Parser", 1, "[WARN] Unknown value of attribute 'parallel' at suite level: '" + parallel + "'.");
-        }
-      }
-      String skip = attributes.getValue("skipfailedinvocationcounts");
-      if (skip != null) {
-        m_currentSuite.setSkipFailedInvocationCounts(Boolean.valueOf(skip));
-      }
-      String threadCount = attributes.getValue("thread-count");
-      if (null != threadCount) {
-        m_currentSuite.setThreadCount(Integer.parseInt(threadCount));
-      }
-      String dataProviderThreadCount = attributes.getValue("data-provider-thread-count");
-      if (null != dataProviderThreadCount) {
-        m_currentSuite.setDataProviderThreadCount(Integer.parseInt(dataProviderThreadCount));
-      }
-      String annotations = attributes.getValue("annotations");
-      if (null != annotations) {
-        m_currentSuite.setAnnotations(annotations);
-      }
-      else if (VersionInfo.IS_JDK14) {
-        m_currentSuite.setAnnotations(XmlSuite.JAVADOC_ANNOTATION_TYPE);
-      }
-      String timeOut = attributes.getValue("time-out");
-      if (null != timeOut) {
-        m_currentSuite.setTimeOut(timeOut);
-      }
-      String objectFactory = attributes.getValue("object-factory");
-      if(null != objectFactory) {
-        try {
-          m_currentSuite.setObjectFactory((IObjectFactory)Class.forName(objectFactory).newInstance());
-        }
-        catch(Exception e) {
-          Utils.log("Parser", 1, "[ERROR] Unable to create custom object factory '" + objectFactory + "' :" + e);
-        }
-      }
-    }
-    else {
-      m_currentSuite.setParameters(m_currentSuiteParameters);
-      m_suites.add(m_currentSuite);
-      m_currentSuiteParameters = null;
-    }
-  }
-
-  /**
-   * Parse <define>
-   */
-  private void xmlDefine(boolean start, Attributes attributes) {
-    if (start) {
-      String name = attributes.getValue("name");
-      m_currentDefines = Lists.newArrayList();
-      m_currentMetaGroup = Lists.newArrayList();
-      m_currentMetaGroupName = name;
-    }
-    else {
-      m_currentTest.addMetaGroup(m_currentMetaGroupName, m_currentMetaGroup);
-      m_currentDefines = null;
-    }
-  }
-
-  /**
-   * Parse <script>
-   */
-  private void xmlScript(boolean start, Attributes attributes) {
-    if (start) {
-//      ppp("OPEN SCRIPT");
-      m_currentLanguage = attributes.getValue("language");
-      m_currentExpression = "";
-    }
-    else {
-//      ppp("CLOSE SCRIPT:@@" + m_currentExpression + "@@");
-      m_currentSelector.setExpression(m_currentExpression);
-      m_currentSelector.setLanguage(m_currentLanguage);
-      if (m_inTest) {
-        m_currentTest.setBeanShellExpression(m_currentExpression);
-      }
-      else {
-        m_currentSuite.setBeanShellExpression(m_currentExpression);
-      }
-      m_currentLanguage = null;
-      m_currentExpression = null;
-    }
-  }
-
-  /**
-   * Parse <test>
-   */
-  private void xmlTest(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentTest = new XmlTest(m_currentSuite);
-      m_currentTestParameters = Maps.newHashMap();
-      final String testName= attributes.getValue("name");
-      if(null == testName || "".equals(testName.trim())) {
-        throw new TestNGException("Test <test> element must define the name attribute");
-      }
-      m_currentTest.setName(attributes.getValue("name"));
-      String verbose = attributes.getValue("verbose");
-      if (null != verbose) {
-        m_currentTest.setVerbose(Integer.parseInt(verbose));
-      }
-      String jUnit = attributes.getValue("junit");
-      if (null != jUnit) {
-        m_currentTest.setJUnit( Boolean.valueOf(jUnit).booleanValue());
-      }
-      String skip = attributes.getValue("skipfailedinvocationcounts");
-      if (skip != null) {
-        m_currentTest.setSkipFailedInvocationCounts(Boolean.valueOf(skip).booleanValue());
-      }
-      String parallel = attributes.getValue("parallel");
-      if (null != parallel) {
-        if(XmlSuite.PARALLEL_METHODS.equals(parallel)
-            || XmlSuite.PARALLEL_NONE.equals(parallel)
-            || XmlSuite.PARALLEL_CLASSES.equals(parallel)
-            || "true".equals(parallel)
-            || "false".equals(parallel)) {
-          m_currentTest.setParallel(parallel);
-        }
-        else {
-          Utils.log("Parser", 1, "[WARN] Unknown value of attribute 'parallel' for test '" + m_currentTest.getName() + "': '" + parallel + "'");
-        }
-      }
-      String threadCount = attributes.getValue("thread-count");
-      if(null != threadCount) {
-        m_currentTest.setThreadCount(Integer.parseInt(threadCount));
-      }
-      String timeOut = attributes.getValue("time-out");
-      if (null != timeOut) {
-        m_currentTest.setTimeOut(Long.parseLong(timeOut));
-      }
-      String annotations = attributes.getValue("annotations");
-      if (null != annotations) {
-        m_currentTest.setAnnotations(annotations);
-      }
-      m_inTest = true;
-      m_enabledTest= true;
-      String enabledTestString = attributes.getValue("enabled");
-      if(null != enabledTestString) {
-        m_enabledTest = Boolean.valueOf(enabledTestString);
-      }
-    }
-    else {
-      if (null != m_currentTestParameters && m_currentTestParameters.size() > 0) {
-        m_currentTest.setParameters(m_currentTestParameters);
-      }
-      if (null != m_currentClasses) {
-        m_currentTest.setXmlClasses(m_currentClasses);
-      }
-      m_currentClasses = null;
-      m_currentTest = null;
-      m_currentTestParameters = null;
-      m_inTest = false;
-      if(!m_enabledTest) {
-        List<XmlTest> tests= m_currentSuite.getTests();
-        tests.remove(tests.size() - 1);
-      }
-    }
-  }
-
-  /**
-   * Parse <classes>
-   */
-  public void xmlClasses(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentClasses = Lists.newArrayList();
-    }
-    else {
-      m_currentTest.setXmlClasses(m_currentClasses);
-      m_currentClasses = null;
-    }
-  }
-  
-  /**
-   * Parse <listeners>
-   */
-  public void xmlListeners(boolean start, Attributes attributes) {
-    if (start) {
-      m_listeners = Lists.newArrayList();
-    }
-    else {
-      if (null != m_listeners) {
-        m_currentSuite.setListeners(m_listeners);
-        m_listeners = null;
-      }
-    }
-  }
-  
-  /**
-   * Parse <listener>
-   */
-  public void xmlListener(boolean start, Attributes attributes) {
-    if (start) {
-      String listener = attributes.getValue("class-name");
-      m_listeners.add(listener);
-    }
-  }
-
-  /**
-   * Parse <packages>
-   */
-  public void xmlPackages(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentPackages = Lists.newArrayList();
-    }
-    else {
-      if (null != m_currentPackages) {
-        if(m_inTest) {
-          m_currentTest.setXmlPackages(m_currentPackages);
-        }
-        else {
-          m_currentSuite.setXmlPackages(m_currentPackages);
-        }
-      }
-      
-      m_currentPackages = null;
-      m_currentPackage = null;
-    }
-  }
-
-  /**
-   * Parse <method-selectors>
-   */
-  public void xmlMethodSelectors(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentSelectors = new ArrayList<XmlMethodSelector>();
-    }
-    else {
-      if (m_inTest) {
-        m_currentTest.setMethodSelectors(m_currentSelectors);
-      }
-      else {
-        m_currentSuite.setMethodSelectors(m_currentSelectors);
-      }
-      
-      m_currentSelectors = null;
-    }
-  }
-
-  /**
-   * Parse <selector-class>
-   */
-  public void xmlSelectorClass(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentSelector.setName(attributes.getValue("name"));
-      String priority = attributes.getValue("priority");
-      if (priority == null) {
-        priority = "0";
-      }
-      m_currentSelector.setPriority(new Integer(priority));
-    }
-    else {
-      // do nothing
-    }
-  }
-  
-  /**
-   * Parse <method-selector>
-   */
-  public void xmlMethodSelector(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentSelector = new XmlMethodSelector();
-    }
-    else {
-      m_currentSelectors.add(m_currentSelector);
-      m_currentSelector = null;
-    }
-  }
-
-  private void xmlMethod(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentIncludedMethods = new ArrayList<XmlInclude>();
-      m_currentExcludedMethods = Lists.newArrayList();
-    }
-    else {
-      m_currentClass.setIncludedMethods(m_currentIncludedMethods);
-      m_currentClass.setExcludedMethods(m_currentExcludedMethods);
-      m_currentIncludedMethods = null;
-      m_currentExcludedMethods = null;
-    }
-  }
-
-  /**
-   * Parse <run>
-   */
-  public void xmlRun(boolean start, Attributes attributes) {
-    if (start) {
-      m_currentRuns = Lists.newArrayList();
-    }
-    else {
-      m_currentTest.setIncludedGroups(m_currentIncludedGroups);
-      m_currentTest.setExcludedGroups(m_currentExcludedGroups);
-    }
-  }
-
-  /**
-   * NOTE: I only invoke xml*methods (e.g. xmlSuite()) if I am acting on both
-   * the start and the end of the tag. This way I can keep the treatment of
-   * this tag in one place. If I am only doing something when the tag opens,
-   * the code is inlined below in the startElement() method.
-   */
-  @Override
-  public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
-    String name = attributes.getValue("name");
-
-    // ppp("START ELEMENT uri:" + uri + " sName:" + localName + " qName:" + qName +
-    // " " + attributes);
-    if ("suite".equals(qName)) {
-      xmlSuite(true, attributes);
-    }
-    else if ("suite-file".equals(qName)) {
-      xmlSuiteFile(true, attributes);
-    }
-    else if ("test".equals(qName)) {
-      xmlTest(true, attributes);
-    }
-    else if ("script".equals(qName)) {
-      xmlScript(true, attributes);
-    }
-    else if ("method-selector".equals(qName)) {
-      xmlMethodSelector(true, attributes);
-    }
-    else if ("method-selectors".equals(qName)) {
-      xmlMethodSelectors(true, attributes);
-    }
-    else if ("selector-class".equals(qName)) {
-      xmlSelectorClass(true, attributes);
-    }
-    else if ("classes".equals(qName)) {
-      xmlClasses(true, attributes);
-    }
-    else if ("packages".equals(qName)) {
-      xmlPackages(true, attributes);
-    }
-    else if ("listeners".equals(qName)) {
-      xmlListeners(true, attributes);
-    }
-    else if ("listener".equals(qName)) {
-      xmlListener(true, attributes);
-    }
-    else if ("class".equals(qName)) {
-      // If m_currentClasses is null, the XML is invalid and SAX
-      // will complain, but in the meantime, dodge the NPE so SAX
-      // can finish parsing the file.
-      if (null != m_currentClasses) {
-        m_currentClass = new XmlClass(name, Boolean.TRUE);
-        m_currentClasses.add(m_currentClass);
-      }
-    }
-    else if ("package".equals(qName)) {
-      if (null != m_currentPackages) {
-        m_currentPackage = new XmlPackage();
-        m_currentPackage.setName(name);
-        m_currentPackages.add(m_currentPackage);
-      }
-    }
-    else if ("define".equals(qName)) {
-      xmlDefine(true, attributes);
-    }
-    else if ("run".equals(qName)) {
-      xmlRun(true, attributes);
-    }
-    else if ("groups".equals(qName)) {
-      m_currentIncludedGroups = Lists.newArrayList();
-      m_currentExcludedGroups = Lists.newArrayList();
-    }
-    else if ("methods".equals(qName)) {
-      xmlMethod(true, attributes);
-    }
-    else if ("include".equals(qName)) {
-      if (null != m_currentIncludedMethods) {
-        String in = attributes.getValue("invocation-numbers");
-        if (!Utils.isStringEmpty(in)) {
-          m_currentIncludedMethods.add(new XmlInclude(name, stringToList(in)));
-        } else {
-          m_currentIncludedMethods.add(new XmlInclude(name));
-        }
-      }
-      else if (null != m_currentDefines) {
-        m_currentMetaGroup.add(name);
-      }
-      else if (null != m_currentRuns) {
-        m_currentIncludedGroups.add(name);
-      }
-      else if (null != m_currentPackage) {
-        m_currentPackage.getInclude().add(name);
-      }
-    }
-    else if ("exclude".equals(qName)) {
-      if (null != m_currentExcludedMethods) {
-        m_currentExcludedMethods.add(name);
-      }
-      else if (null != m_currentRuns) {
-        m_currentExcludedGroups.add(name);
-      }
-      else if (null != m_currentPackage) {
-        m_currentPackage.getExclude().add(name);
-      }
-    }
-    else if ("parameter".equals(qName)) {
-      String value = attributes.getValue("value");
-      if (m_inTest) {
-        m_currentTestParameters.put(name, value);
-      }
-      else {
-        m_currentSuiteParameters.put(name, value);
-      }
-    }
-  }
-
-  private List<Integer> stringToList(String in) {
-    String[] numbers = in.split(" ");
-    List<Integer> result = Lists.newArrayList();
-    for (String n : numbers) {
-      result.add(Integer.parseInt(n));
-    }
-    return result;
-  }
-
-  @Override
-  public void endElement(String uri, String localName, String qName) throws SAXException {
-    if ("suite".equals(qName)) {
-      xmlSuite(false, null);
-    }
-    else if ("suite-file".equals(qName)) {
-      xmlSuiteFile(false, null);
-    }
-    else if ("test".equals(qName)) {
-      xmlTest(false, null);
-    }
-    else if ("define".equals(qName)) {
-      xmlDefine(false, null);
-    }
-    else if ("run".equals(qName)) {
-      xmlRun(false, null);
-    }
-    else if ("methods".equals(qName)) {
-      xmlMethod(false, null);
-    }
-    else if ("classes".equals(qName)) {
-      xmlClasses(false, null);
-    }
-    else if ("classes".equals(qName)) {
-      xmlPackages(false, null);
-    }
-    else if ("listeners".equals(qName)) {
-      xmlListeners(false, null);
-    }
-    else if ("method-selector".equals(qName)) {
-      xmlMethodSelector(false, null);
-    }
-    else if ("method-selectors".equals(qName)) {
-      xmlMethodSelectors(false, null);
-    }
-    else if ("selector-class".equals(qName)) {
-      xmlSelectorClass(false, null);
-    }
-    else if ("script".equals(qName)) {
-      xmlScript(false, null);
-    }
-    else if ("packages".equals(qName)) {
-      xmlPackages(false, null);
-    }
-  }
-
-  @Override
-  public void error(SAXParseException e) throws SAXException {
-    throw e;
-  }
-
-  private boolean areWhiteSpaces(char[] ch, int start, int length) {
-    for (int i = start; i < start + length; i++) {
-      char c = ch[i];
-      if (c != '\n' && c != '\t' && c != ' ') return false;
-    }    
-    
-    return true;
-  }
-  
-  @Override
-  public void characters(char ch[], int start, int length) {
-    if (null != m_currentLanguage && ! areWhiteSpaces(ch, start, length)) {
-      m_currentExpression += new String(ch, start, length);
-    }
-  }
-
-  public XmlSuite getSuite() {
-    return m_currentSuite;
-  }
-}
\ No newline at end of file
diff --git a/src/org/testng/xml/XmlClass.java b/src/org/testng/xml/XmlClass.java
deleted file mode 100755
index e14870d..0000000
--- a/src/org/testng/xml/XmlClass.java
+++ /dev/null
@@ -1,183 +0,0 @@
-package org.testng.xml;
-
-
-import org.testng.TestNGException;
-import org.testng.collections.Lists;
-import org.testng.internal.ClassHelper;
-import org.testng.reporters.XMLStringBuffer;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-/**
- * This class describes the tag <class> in testng.xml.
- *
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class XmlClass implements Serializable, Cloneable {
-  private List<XmlInclude> m_includedMethods = Lists.newArrayList();
-  private List<String> m_excludedMethods = Lists.newArrayList();
-  private String       m_name = null;
-  private Class        m_class = null;
-  private Boolean      m_declaredClass = null;
-
-  public XmlClass(String name) {
-    init(name, null, Boolean.TRUE);
-  }
-
-  public XmlClass(Class className) {
-    init(className.getName(), null, Boolean.TRUE );
-  }
-
-  public XmlClass(String name, Boolean declaredClass) {
-    init(name, null, declaredClass);
-  }
-
-  public XmlClass(Class className, Boolean declaredClass) {
-    init(className.getName(), className, declaredClass);
-  }
-
-  private void init(String name, Class className, Boolean declaredClass) {
-    m_name = name;
-    m_class = className;
-    m_declaredClass = declaredClass;
-  }
-
-  /**
-   * @return Returns the className.
-   */
-  public Class getSupportClass() {
-    if(null == m_class) {
-      m_class = ClassHelper.forName(m_name);
-      
-      if(null == m_class) {
-        throw new TestNGException("Cannot find class in classpath: " + m_name);
-      }
-    }
-
-    return m_class;
-  }
-
-  /**
-   * @param className The className to set.
-   */
-  public void setClass(Class className) {
-    m_class = className;
-  }
-
-  /**
-   * @return Returns the excludedMethods.
-   */
-  public List<String> getExcludedMethods() {
-    return m_excludedMethods;
-  }
-
-  /**
-   * @param excludedMethods The excludedMethods to set.
-   */
-  public void setExcludedMethods(List<String> excludedMethods) {
-    m_excludedMethods = excludedMethods;
-  }
-
-  /**
-   * @return Returns the includedMethods.
-   */
-  public List<XmlInclude> getIncludedMethods() {
-    return m_includedMethods;
-  }
-
-  /**
-   * @param includedMethods The includedMethods to set.
-   */
-  public void setIncludedMethods(List<XmlInclude> includedMethods) {
-    m_includedMethods = includedMethods;
-  }
-
-  /**
-   * @return Returns the name.
-   */
-  public String getName() {
-    return m_name;
-  }
-
-  /**
-   * @param name The name to set.
-   */
-  public void setName(String name) {
-    m_name = name;
-  }
-
-  public Boolean getDeclaredClass() {
-    return m_declaredClass;
-  }
-
-  public void setDeclaredClass(Boolean declaredClass) {
-    this.m_declaredClass = declaredClass;
-  }
-
-  @Override
-  public String toString() {
-    return "[Class: " + m_name + "]";
-  }
-
-  public String toXml(String indent) {
-    XMLStringBuffer xsb = new XMLStringBuffer(indent);
-    Properties      pro = new Properties();
-    pro.setProperty("name", getName());
-
-    if (!m_includedMethods.isEmpty() || !m_excludedMethods.isEmpty()) {
-      xsb.push("class", pro);
-      xsb.push("methods");
-      
-      for (XmlInclude m : getIncludedMethods()) {
-        Properties p = new Properties();
-        p.setProperty("name", m.getName());
-        if (m.getInvocationNumbers().size() > 0) {
-          p.setProperty("invocation-numbers", listToString(m.getInvocationNumbers()).toString());
-        }
-        xsb.addEmptyElement("include", p);
-      }
-      for (String m: getExcludedMethods()) {
-        Properties p= new Properties();
-        p.setProperty("name", m);
-        xsb.addEmptyElement("exclude", p);
-      }
-      
-      xsb.pop("methods");
-      xsb.pop("class");
-    }
-    else {
-      xsb.addEmptyElement("class", pro);
-    }
-    
-
-    return xsb.toXML();
-
-  }
-  
-  private String listToString(List<Integer> invocationNumbers) {
-    StringBuilder result = new StringBuilder();
-    int i = 0;
-    for (Integer n : invocationNumbers) {
-      if (i++ > 0) result.append(" ");
-      result.append(n);
-    }
-    return result.toString();
-  }
-
-  /**
-   * Clone an XmlClass by copying all its components.
-   */
-  @Override
-  public Object clone() {
-    XmlClass result = new XmlClass(getName(), getDeclaredClass());
-    result.setExcludedMethods(getExcludedMethods());
-    result.setIncludedMethods(getIncludedMethods());
-    
-    return result;
-  }
-
-
-}
diff --git a/src/org/testng/xml/XmlInclude.java b/src/org/testng/xml/XmlInclude.java
deleted file mode 100644
index 6efeb36..0000000
--- a/src/org/testng/xml/XmlInclude.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.testng.xml;
-
-import java.util.Collections;
-import java.util.List;
-
-public class XmlInclude {
-  private String m_name;
-  private List<Integer> m_invocationNumbers;
-
-  public XmlInclude(String n) {
-    this(n, Collections.<Integer>emptyList());
-  }
-
-  public XmlInclude(String n, List<Integer> list) {
-    m_name = n;
-    m_invocationNumbers = list;
-  }
-
-  public String getName() {
-    return m_name;
-  }
-  
-  public List<Integer> getInvocationNumbers() {
-    return m_invocationNumbers;
-  }
-
-}
diff --git a/src/org/testng/xml/XmlMethodSelector.java b/src/org/testng/xml/XmlMethodSelector.java
deleted file mode 100755
index c297352..0000000
--- a/src/org/testng/xml/XmlMethodSelector.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.testng.xml;
-
-import java.util.Properties;
-
-import org.testng.TestNGException;
-import org.testng.reporters.XMLStringBuffer;
-
-/**
- * This class describes the tag <method-selector>  in testng.xml.
- * 
- * Created on Sep 26, 2005
- * @author cbeust
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class XmlMethodSelector {
-  // Either this:
-  private String m_className;
-  private int m_priority;
-  
-  // Or that:
-  private String m_language;
-  private String m_expression;
-  
-  public String getClassName() {
-    return m_className;
-  }
-  
-  public void setName(String name) {
-    m_className = name;
-  }
-  
-  /**
-   * @return Returns the expression.
-   */
-  public String getExpression() {
-    return m_expression;
-  }
-  
-  /**
-   * @param expression The expression to set.
-   */
-  public void setExpression(String expression) {
-    m_expression = expression;
-  }
-  
-  /**
-   * @return Returns the language.
-   */
-  public String getLanguage() {
-    return m_language;
-  }
-  
-  /**
-   * @param language The language to set.
-   */
-  public void setLanguage(String language) {
-    m_language = language;
-  }
-  
-  public int getPriority() {
-    return m_priority;
-  }
-  
-  public void setPriority(int priority) {
-    m_priority = priority;
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[XmlMethodSelector] " + s);
-  }
-  
-  public String toXml(String indent) {
-    XMLStringBuffer xsb = new XMLStringBuffer(indent);
-
-    xsb.push("method-selector");
-    
-    ppp("CLASSNAME:" + m_className);
-    
-    if (null != m_className) {
-      Properties clsProp = new Properties();
-      clsProp.setProperty("name", getClassName());
-      if(getPriority() != -1) {
-        ppp("SETTING PRIORITY:" + getPriority());
-        clsProp.setProperty("priority", String.valueOf(getPriority()));
-      }
-      xsb.addEmptyElement("selector-class", clsProp);
-    }
-    else if (getLanguage() != null) {
-      Properties scriptProp = new Properties();
-      ppp("LANGUAGE:" + getLanguage());
-      scriptProp.setProperty("language", getLanguage());
-      xsb.push("script", scriptProp);
-      xsb.addCDATA(getExpression());
-      xsb.pop("script");
-    }
-    else {
-      throw new TestNGException("Invalid Method Selector:  found neither class name nor language");
-    }
-    
-    xsb.pop("method-selector");
-
-    return xsb.toXML();
-  }
-}
diff --git a/src/org/testng/xml/XmlPackage.java b/src/org/testng/xml/XmlPackage.java
deleted file mode 100755
index 13abee2..0000000
--- a/src/org/testng/xml/XmlPackage.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package org.testng.xml;
-
-import org.testng.collections.Lists;
-import org.testng.internal.PackageUtils;
-import org.testng.internal.Utils;
-import org.testng.reporters.XMLStringBuffer;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-/**
- * This class describes the tag <package>  in testng.xml.
- * 
- * @author Cedric
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class XmlPackage implements Serializable {
-  private String m_name;
-  private List<String> m_include = Lists.newArrayList();
-  private List<String> m_exclude = Lists.newArrayList();
-  private List<XmlClass> m_xmlClasses= null;
-  
-  /**
-   * @return the exclude
-   */
-  public List<String> getExclude() {
-    return m_exclude;
-  }
-  
-  /**
-   * @param exclude the exclude to set
-   */
-  public void setExclude(List<String> exclude) {
-    m_exclude = exclude;
-  }
-  
-  /**
-   * @return the include
-   */
-  public List<String> getInclude() {
-    return m_include;
-  }
-  
-  /**
-   * @param include the include to set
-   */
-  public void setInclude(List<String> include) {
-    m_include = include;
-  }
-  
-  /**
-   * @return the name
-   */
-  public String getName() {
-    return m_name;
-  }
-  
-  /**
-   * @param name the name to set
-   */
-  public void setName(String name) {
-    m_name = name;
-  }
-  
-  public List<XmlClass> getXmlClasses() {
-    if(null == m_xmlClasses) {
-      m_xmlClasses= initializeXmlClasses();
-    }
-    
-    return m_xmlClasses;
-  }
-  
-  private List<XmlClass> initializeXmlClasses() {
-    List<XmlClass> result= Lists.newArrayList();
-    try {
-      String[] classes = PackageUtils.findClassesInPackage(m_name, m_include, m_exclude);
-      
-      for(String className: classes) {
-        result.add(new XmlClass(className, Boolean.FALSE));
-      }
-    }
-    catch(IOException ioex) {
-      Utils.log("XmlPackage", 1, ioex.getMessage());
-    }
-    
-    return result;
-  }
-  
-  public Object toXml(String indent) {
-    XMLStringBuffer xsb = new XMLStringBuffer(indent);
-    Properties p = new Properties();
-    p.setProperty("name", getName());
-    
-    xsb.push("package", p);
-    
-    for (String m : getInclude()) {
-      Properties includeProp= new Properties();
-      includeProp.setProperty("name", m);
-      xsb.addEmptyElement("include", includeProp);
-    }
-    for (String m: getExclude()) {
-      Properties excludeProp= new Properties();
-      excludeProp.setProperty("name", m);
-      xsb.addEmptyElement("exclude", excludeProp);
-    }
-    
-    xsb.pop("package");
-
-    return xsb.toXML();
-  }
-}
diff --git a/src/org/testng/xml/XmlSuite.java b/src/org/testng/xml/XmlSuite.java
deleted file mode 100755
index 5be8d83..0000000
--- a/src/org/testng/xml/XmlSuite.java
+++ /dev/null
@@ -1,565 +0,0 @@
-package org.testng.xml;
-
-import org.testng.IObjectFactory;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.internal.version.VersionInfo;
-import org.testng.reporters.XMLStringBuffer;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * This class describes the tag <suite> in testng.xml.
- *
- * @author <a href = "mailto:cedric@beust.com">Cedric Beust</a>
- * @author <a href = 'mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class XmlSuite implements Serializable, Cloneable {
-  // Possible value for the attribute annotations of <suite>
-  // It would be nice to factor out these names as they are
-  // also defined in the TestNG class.
-  
-  /** @deprecated use JAVADOC_ANNOTATION_TYPE. */
-  @Deprecated
-  public static final String JAVADOC = "javadoc";
-
-  /** The JDK50 annotation type ID ("JDK5"). */
-  public static final String JDK5_ANNOTATION_TYPE = AnnotationTypeEnum.JDK.getName();
-  
-  /** The JavaDoc annotation type ID ("javadoc"). */
-  public static final String JAVADOC_ANNOTATION_TYPE = AnnotationTypeEnum.JAVADOC.getName();
-  
-  /** Parallel modes */
-  public static final String PARALLEL_TESTS = "tests";
-  public static final String PARALLEL_METHODS = "methods";
-  public static final String PARALLEL_CLASSES = "classes";
-  public static final String PARALLEL_NONE = "none";
-  
-  private String m_test;
-  
-  /** The default suite name TODO CQ is this OK as a default name. */
-  private static final String DEFAULT_SUITE_NAME = "";
-
-  /** The suite name (defaults to DEFAULT_SUITE_NAME) */
-  private String m_name = DEFAULT_SUITE_NAME;
-  
-  /** The suite verbose flag. (0 to 10)*/
-  private Integer m_verbose = null;
-  
-  private String m_parallel = null;
-  
-  /** JUnit compatibility flag. */
-  private Boolean m_isJUnit = Boolean.FALSE;
-  
-  private Boolean m_skipFailedInvocationCounts = Boolean.FALSE;
-  
-  /** The thread count. */
-  private int m_threadCount = 5;
-
-  /** Thread count for the data provider pool */
-  public static final int DEFAULT_DATA_PROVIDER_THREAD_COUNT = 10;
-  private int m_dataProviderThreadCount = DEFAULT_DATA_PROVIDER_THREAD_COUNT;
-  
-  /** The suite annotation type. */
-  private AnnotationTypeEnum m_annotations;
-
-  /** The suite default annotation type. */ 
-  private AnnotationTypeEnum m_defaultAnnotations = VersionInfo.getDefaultAnnotationType();
-  
-  /** The packages containing test classes. */
-  private List<XmlPackage> m_xmlPackages = Lists.newArrayList();
-  
-  /** BeanShell expression. */
-  private String m_expression = null;
-  
-  /** Suite level method selectors. */
-  private List<XmlMethodSelector> m_methodSelectors = Lists.newArrayList();
-  
-  /** Tests in suite. */
-  private List<XmlTest> m_tests = Lists.newArrayList();
-  
-  /** Suite level parameters. */
-  private Map<String, String> m_parameters = Maps.newHashMap();
-  
-  /** Name of the XML file */
-  private String m_fileName;
-
-  /** Time out for methods/tests */
-  private String m_timeOut;
-
-  private List<String> m_suiteFiles = Lists.newArrayList();
-
-  private IObjectFactory m_objectFactory;
-
-  private List<String> m_listeners = Lists.newArrayList();
-
-  private static final long serialVersionUID = 4999962288272750226L;
-
-  /**
-   * @return the fileName
-   */
-  public String getFileName() {
-    return m_fileName;
-  }
-
-  /**
-   * @param fileName the fileName to set
-   */
-  public void setFileName(String fileName) {
-    m_fileName = fileName;
-  }
-
-  /**
-   * Returns the parallel mode.
-   * @return the parallel mode.
-   */
-  public String getParallel() {
-    return m_parallel;
-  }
-
-  public IObjectFactory getObjectFactory() {
-    return m_objectFactory;
-  }
-
-  public void setObjectFactory(IObjectFactory objectFactory) {
-    m_objectFactory = objectFactory;
-  }
-
-  /**
-   * Sets the parallel mode
-   * @param parallel the parallel mode
-   */
-  public void setParallel(String parallel) {
-    m_parallel = parallel;
-  }
-
-  /**
-   * Returns the verbose.
-   * @return the verbose.
-   */
-  public Integer getVerbose() {
-    return m_verbose;
-  }
-
-  /**
-   * Set the verbose.
-   * @param verbose The verbose to set.
-   */
-  public void setVerbose(Integer verbose) {
-    m_verbose = verbose;
-  }
-
-  /**
-   * Returns the name.
-   * @return the name.
-   */
-  public String getName() {
-    return m_name;
-  }
-
-  /**
-   * Sets the name.
-   * @param name The name to set.
-   */
-  public void setName(String name) {
-    m_name = name;
-  }
-
-  /**
-   * Returns the test.
-   * @return the test.
-   */
-  public String getTest() {
-    return m_test;
-  }
-
-  /**
-   * Returns the tests.
-   * @return the tests.
-   */
-  public List<XmlTest> getTests() {
-    return m_tests;
-  }
-
-  /**
-   * Returns the method selectors.
-   *
-   * @return the method selectors.
-   */
-  public List<XmlMethodSelector> getMethodSelectors() {
-    return m_methodSelectors;
-  }
-
-  /**
-   * Sets the method selectors.
-   *
-   * @param methodSelectors the method selectors.
-   */
-  public void setMethodSelectors(List<XmlMethodSelector> methodSelectors) {
-    m_methodSelectors = methodSelectors;
-  }
-
-  /**
-   * Sets the bean shell expression.
-   *
-   * @param expression the bean shell expression.
-   */
-  public void setBeanShellExpression(String expression) {
-    m_expression = expression;
-  }
-
-  /**
-   * Returns the bean shell expression.
-   *
-   * @return the bean shell expression.
-   * @deprecated use getBeanShelltExpression()
-   */
-  @Deprecated
-  public String getExpression() {
-    return m_expression;
-  }
-
-  /**
-   * Returns the bean shell expression.
-   *
-   * @return the bean shell expression.
-   */
-  public String getBeanShellExpression() {
-    return m_expression;
-  }
-  
-  /**
-   * Sets parameters.
-   * @param parameters the parameters.
-   */
-  public void setParameters(Map<String, String> parameters) {
-    m_parameters = parameters;
-  }
-
-  /**
-   * Returns the parameters defined in this suite only.
-   * @return The parameters defined in this suite only.
-   */
-  public Map<String, String> getParameters() {
-    return m_parameters;
-  }
-
-  /**
-   * @return The parameters defined in this suite and all its XmlTests.
-   */
-  public Map<String, String> getAllParameters() {
-    Map<String, String> result = Maps.newHashMap();
-    for (Map.Entry<String, String> entry : m_parameters.entrySet()) {
-      result.put(entry.getKey(), entry.getValue());
-    }
-
-    for (XmlTest test : getTests()) {
-      Map<String, String> tp = test.getParameters();
-      for (Map.Entry<String, String> entry : tp.entrySet()) {
-        result.put(entry.getKey(), entry.getValue());
-      }
-    }
-
-    return result;
-  }
-
-  /**
-   * Returns the parameter defined in this suite only.
-   * @param name the parameter name.
-   * @return The parameter defined in this suite only.
-   */
-  public String getParameter(String name) {
-    return m_parameters.get(name);
-  }
-
-  /**
-   * Returns the threadCount.
-   * @return the threadCount.
-   */
-  public int getThreadCount() {
-    return m_threadCount;
-  }
-
-  /**
-   * Set the thread count.
-   * @param threadCount The thread count to set.
-   */
-  public void setThreadCount(int threadCount) {
-    m_threadCount = threadCount;
-  }
-
-  /**
-   * Returns the annotation type for the suite. If an annotation type has
-   * not been explicitly set, the default annotation type is returned.
-   * @return the annotation type for the suite.
-   */
-  public String getAnnotations() {
-    return (m_annotations != null ? m_annotations : m_defaultAnnotations).toString();
-  }
-
-  /**
-   * Sets the overall default annotation type (JDK5/javadoc).
-   * It is used if the annotation attribute of the suite definition
-   * does not specify an explicit value.
-   * 
-   * @param annotationType one of the two string constant JAVADOC_ANNOTATION_TYPE or 
-   * JDK5_ANNOTATION_TYPE.
-   * @see #JAVADOC_ANNOTATION_TYPE
-   * @see #JDK5_ANNOTATION_TYPE
-   */
-  public void setDefaultAnnotations(String annotationType) {
-    m_defaultAnnotations = AnnotationTypeEnum.valueOf(annotationType);
-  }
-  
-  /**
-   * Sets the annotation type for the suite. If this value is not explicitly set,
-   * the suite annotation type defaults to the default annotation type. see
-   * setDefaultAnnotations  
-   * @param annotations one of the two string constant JAVADOC_ANNOTATION_TYPE or 
-   * JDK5_ANNOTATION_TYPE.
-   * @see #JAVADOC_ANNOTATION_TYPE
-   * @see #JDK5_ANNOTATION_TYPE
-   */
-  public void setAnnotations(String annotations) {
-    m_annotations = AnnotationTypeEnum.valueOf(annotations);
-  }
-
-  /**
-   * Returns the JUnit compatibility flag.
-   * @return the JUnit compatibility flag.
-   */
-  public Boolean isJUnit() {
-    return m_isJUnit;
-  }
-  
-  /**
-   * Sets the JUnit compatibility flag.
-   *
-   * @param isJUnit the JUnit compatibility flag.
-   */
-  public void setJUnit(Boolean isJUnit) {
-    m_isJUnit = isJUnit;
-  }
-
-  public Boolean skipFailedInvocationCounts() {
-    return m_skipFailedInvocationCounts;
-  }
-
-  public void setSkipFailedInvocationCounts(boolean skip) {
-    m_skipFailedInvocationCounts = skip;
-  }
-
-  /**
-   * Sets the XML packages.
-   *
-   * @param packages the XML packages.
-   */
-  public void setXmlPackages(List<XmlPackage> packages) {
-    m_xmlPackages = packages;
-  }
-
-  /**
-   * Returns the XML packages.
-   *
-   * @return the XML packages.
-   */
-  public List<XmlPackage> getXmlPackages() {
-    return m_xmlPackages;
-  }
-
-  /**
-   * Returns a String representation of this XML suite.
-   *
-   * @return a String representation of this XML suite.
-   */
-  public String toXml() {
-    XMLStringBuffer xsb = new XMLStringBuffer("");
-    xsb.setDocType("suite SYSTEM \"" + Parser.TESTNG_DTD_URL + '\"');
-    Properties p = new Properties();
-    p.setProperty("name", getName());
-    if (getVerbose() != null) {
-      p.setProperty("verbose", getVerbose().toString());
-    }
-    final String parallel= getParallel();
-    if(null != parallel && !"".equals(parallel)) {
-      p.setProperty("parallel", parallel);
-    }
-    p.setProperty("thread-count", String.valueOf(getThreadCount()));
-    p.setProperty("data-provider-thread-count", String.valueOf(getDataProviderThreadCount()));
-    p.setProperty("annotations", getAnnotations());
-    p.setProperty("junit", m_isJUnit != null ? m_isJUnit.toString() : "false"); // TESTNG-141
-    p.setProperty("skipfailedinvocationCounts", 
-        m_skipFailedInvocationCounts != null
-          ? m_skipFailedInvocationCounts.toString() : "false");
-    if(null != m_objectFactory)
-      p.setProperty("object-factory", m_objectFactory.getClass().getName());
-    xsb.push("suite", p);
-
-    for (String paramName : m_parameters.keySet()) {
-      Properties paramProps = new Properties();
-      paramProps.setProperty("name", paramName);
-      paramProps.setProperty("value", m_parameters.get(paramName));
-
-      xsb.addEmptyElement("parameter", paramProps);
-    }
-
-    if (null != m_listeners && !m_listeners.isEmpty()) {
-      xsb.push("listeners");
-      for (String listenerName: m_listeners) {
-        Properties listenerProps = new Properties();
-        listenerProps.setProperty("class-name", listenerName);
-        xsb.addEmptyElement("listener", listenerProps);
-      }
-      xsb.pop("listeners");
-    }
-
-    for (XmlTest test : getTests()) {
-      xsb.getStringBuffer().append(test.toXml("  "));
-    }
-
-    if (null != getXmlPackages() && !getXmlPackages().isEmpty()) {
-      xsb.push("packages");
-
-      for (XmlPackage pack : getXmlPackages()) {
-        xsb.getStringBuffer().append(pack.toXml("  "));
-      }
-
-      xsb.pop("packages");
-    }
-
-    if (null != getMethodSelectors() && !getMethodSelectors().isEmpty()) {
-      xsb.push("method-selectors");
-      for (XmlMethodSelector selector : getMethodSelectors()) {
-        xsb.getStringBuffer().append(selector.toXml("  "));
-      }
-
-      xsb.pop("method-selectors");
-    }
-
-    xsb.pop("suite");
-
-    return xsb.toXML();
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public String toString() {
-    StringBuffer result = new StringBuffer("[Suite: \"").append( m_name).append( "\" ");
-
-    for (XmlTest t : m_tests) {
-      result.append("  ").append( t.toString()).append(' ');
-    }
-
-    result.append(']');
-
-    return result.toString();
-  }
-
-  /**
-   * Logs to System.out.
-   * @param s the message to log.
-   */
-  private static void ppp(String s) {
-    System.out.println("[XmlSuite] " + s);
-  }
-
-  /**
-   * {@inheritDoc}
-   * Note that this is not a full clone:  XmlTest children are not cloned by this
-   * method.
-   */
-  @Override
-  public Object clone() {
-    XmlSuite result = new XmlSuite();
-
-    result.setName(getName());
-    result.setListeners(getListeners());
-    result.setAnnotations(getAnnotations());
-    result.setParallel(getParallel());
-    result.setThreadCount(getThreadCount());
-    result.setDataProviderThreadCount(getDataProviderThreadCount());
-    result.setParameters(getAllParameters());
-    result.setVerbose(getVerbose());
-    result.setXmlPackages(getXmlPackages());
-    result.setBeanShellExpression(getExpression());
-    result.setMethodSelectors(getMethodSelectors());
-    result.setJUnit(isJUnit()); // TESTNG-141
-    result.setSkipFailedInvocationCounts(skipFailedInvocationCounts());
-    result.setObjectFactory(getObjectFactory());
-    return result;
-  }
-
-    /**
-     * Sets the timeout.
-     *
-     * @param timeOut the timeout.
-     */
-    public void setTimeOut(String timeOut) {
-        m_timeOut = timeOut;
-    }
-
-    /**
-     * Returns the timeout.
-     * @return the timeout.
-     */
-    public String getTimeOut() {
-        return m_timeOut;
-    }
-    
-    /**
-     * Returns the timeout as a long value specifying the default value to be used if
-     * no timeout was specified.
-     *
-     * @param def the the default value to be used if no timeout was specified.
-     * @return the timeout as a long value specifying the default value to be used if
-     * no timeout was specified.
-     */
-    public long getTimeOut(long def) {
-        long result = def;
-        if (m_timeOut != null) {
-            result = new Long(m_timeOut).longValue();
-        }
-        
-        return result;
-    }
-
-    /**
-     * Sets the suite files.
-     *
-     * @param files the suite files.
-     */
-    public void setSuiteFiles(List<String> files) {
-      m_suiteFiles = files;
-    }
-    
-    /**
-     * Returns the suite files.
-     * @return the suite files.
-     */
-    public List<String> getSuiteFiles() {
-      return m_suiteFiles;
-    }
-
-    public void setListeners(List<String> listeners) {
-      m_listeners = listeners;
-    }
-    
-    public List<String> getListeners() {
-      return m_listeners;
-    }
-
-    public void setDataProviderThreadCount(int count) {
-      m_dataProviderThreadCount = count;
-    }
-
-    public int getDataProviderThreadCount() {
-      return m_dataProviderThreadCount;
-    }
-}
diff --git a/src/org/testng/xml/XmlTest.java b/src/org/testng/xml/XmlTest.java
deleted file mode 100755
index cab7a59..0000000
--- a/src/org/testng/xml/XmlTest.java
+++ /dev/null
@@ -1,536 +0,0 @@
-package org.testng.xml;
-
-import org.testng.TestNG;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-import org.testng.internal.AnnotationTypeEnum;
-import org.testng.reporters.XMLStringBuffer;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * This class describes the tag <test>  in testng.xml.
- * 
- * @author <a href = "mailto:cedric@beust.com">Cedric Beust</a>
- * @author <a href = 'mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class XmlTest implements Serializable, Cloneable {
-  private final XmlSuite m_suite;
-  private String m_name = TestNG.DEFAULT_COMMAND_LINE_SUITE_NAME;
-  private Integer m_verbose;
-  private Boolean m_isJUnit;
-  private int m_threadCount= -1;
-
-  private List<XmlClass> m_xmlClasses = Lists.newArrayList();
-  
-  private List<String> m_includedGroups = Lists.newArrayList();
-  private List<String> m_excludedGroups = Lists.newArrayList();
-
-  private final Map<String, List<String>> m_metaGroups = Maps.newHashMap();
-  private Map<String, String> m_parameters = Maps.newHashMap();
-  private String m_parallel;
-  
-  /** */
-  private AnnotationTypeEnum m_annotations;
-  
-  // BeanShell expression
-  private String m_expression;
-  private List<XmlMethodSelector> m_methodSelectors = Lists.newArrayList();
-  // test level packages
-  private List<XmlPackage> m_xmlPackages = Lists.newArrayList();
-  
-  private String m_timeOut;
-  private Boolean m_skipFailedInvocationCounts;
-  private Map<String, List<Integer>> m_failedInvocationNumbers = null; // lazily initialized
-
-  /**
-   * Constructs a <code>XmlTest</code> and adds it to suite's list of tests. 
-   *
-   * @param suite the parent suite.
-   */
-  public XmlTest(XmlSuite suite) {
-    m_suite = suite;
-    m_suite.getTests().add(this);
-  }
-
-  public void setXmlPackages(List<XmlPackage> packages) {
-    m_xmlPackages = packages;
-  }
-  
-  public List<XmlPackage> getXmlPackages() {
-    return m_xmlPackages;
-  }
-  
-  public List<XmlMethodSelector> getMethodSelectors() {
-    return m_methodSelectors;
-  }
-
-  public void setMethodSelectors(List<XmlMethodSelector> methodSelectors) {
-    m_methodSelectors = methodSelectors;
-  }
-  
-  /**
-   * Returns the suite this test is part of.
-   * @return the suite this test is part of.
-   */
-  public XmlSuite getSuite() {
-    return m_suite;
-  }
-  
-  /**
-   * @return Returns the includedGroups.
-   */
-  public List<String> getIncludedGroups() {
-    return m_includedGroups;
-  }
-  
-  /**
-   * Sets the XML Classes.
-   * @param classes The classes to set.
-   * @deprecated use setXmlClasses
-   */
-  public void setClassNames(List<XmlClass> classes) {
-    m_xmlClasses = classes;
-  }
-    
-  /**
-   * @return Returns the classes.
-   */
-  public List<XmlClass> getXmlClasses() {
-    return m_xmlClasses;
-  }
-  
-  /**
-   * Sets the XML Classes.
-   * @param classes The classes to set.
-   */
-  public void setXmlClasses(List<XmlClass> classes) {
-    m_xmlClasses = classes;
-  }
-  
-  /**
-   * @return Returns the name.
-   */
-  public String getName() {
-    return m_name;
-  }
-  
-  /**
-   * @param name The name to set.
-   */
-  public void setName(String name) {
-    m_name = name;
-  }
-
-  /**
-   * @param v
-   */
-  public void setVerbose(int v) {
-    m_verbose = new Integer( v);
-  }
-
-  public int getThreadCount() {
-    return m_threadCount > 0 ? m_threadCount : getSuite().getThreadCount();
-  }
-
-  public void setThreadCount(int threadCount) {
-    m_threadCount = threadCount;
-  }
-  
-  /**
-   * @param g
-   */
-  public void setIncludedGroups(List<String> g) {
-    m_includedGroups = g;
-  }
-
-  /**
-   * @param g The excludedGrousps to set.
-   */
-  public void setExcludedGroups(List<String> g) {
-    m_excludedGroups = g;
-  }
-
-  /**
-   * @return Returns the excludedGroups.
-   */
-  public List<String> getExcludedGroups() {
-    return m_excludedGroups;
-  }
-  
-  /**
-   * @return Returns the verbose.
-   */
-  public int getVerbose() {
-    Integer result = m_verbose;
-    if (null == result) {
-      result = m_suite.getVerbose();
-    }
-    
-    if (null != result) {
-      return result.intValue();
-    } else {
-      return 1;
-    }
-  }
-  /**
-   * @return Returns the isJUnit.
-   */
-  public boolean isJUnit() {
-    Boolean result = m_isJUnit;
-    if (null == result) {
-      result = m_suite.isJUnit();
-    }
-    
-    return result;
-  }
-
-  /**
-   * @param isJUnit The isJUnit to set.
-   */
-  public void setJUnit(boolean isJUnit) {
-    m_isJUnit = isJUnit;
-  }
-  
-  public void setSkipFailedInvocationCounts(boolean skip) {
-    m_skipFailedInvocationCounts = skip;
-  }
-  
-  /**
-   * @return Returns the isJUnit.
-   */
-  public boolean skipFailedInvocationCounts() {
-    Boolean result = m_skipFailedInvocationCounts;
-    if (null == result) {
-      result = m_suite.skipFailedInvocationCounts();
-    }
-    
-    return result;
-  }
-  
-  public void addMetaGroup(String name, List<String> metaGroup) {
-    m_metaGroups.put(name, metaGroup);
-  }
-
-  /**
-   * @return Returns the metaGroups.
-   */
-  public Map<String, List<String>> getMetaGroups() {
-    return m_metaGroups;
-  }
-  
-  /**
-   * @param parameters
-   */
-  public void setParameters(Map<String, String> parameters) {
-    m_parameters = parameters;
-  }
-  
-  public void addParameter(String key, String value) {
-    m_parameters.put(key, value);
-  }
-  
-  public String getParameter(String name) {
-    String result = m_parameters.get(name);
-    if (null == result) {
-      result = m_suite.getParameter(name);
-    }
-    
-    return result;
-  }
-
-  /**
-   * Returns a merge of the the test parameters and its parent suite parameters. Test parameters 
-   * have precedence over suite parameters.
-   * 
-   * @return a merge of the the test parameters and its parent suite parameters.
-   */
-  public Map<String, String> getParameters() {
-    Map<String, String> result = Maps.newHashMap();
-    Map<String, String> parameters = getSuite().getParameters();
-    for (Map.Entry<String, String> parameter : parameters.entrySet()) {
-      result.put(parameter.getKey(), parameter.getValue());
-    }
-    for (String key : m_parameters.keySet()) {
-      result.put(key, m_parameters.get(key));
-    }
-    return result;
-  }
-    
-  public void setParallel(String parallel) {
-    m_parallel = parallel;
-  }
-  
-  public String getParallel() {
-    String result = null;
-    if (null != m_parallel) {
-      result = m_parallel;
-    }
-    else {
-      result = m_suite.getParallel();
-    }
-    
-    return result;
-  }
-  
-  public String getTimeOut() {
-    String result = null;
-    if (null != m_timeOut) {
-      result = m_timeOut;
-    }
-    else {
-      result = m_suite.getTimeOut();
-    }
-      
-    return result;
-  }
-  
-  public long getTimeOut(long def) {
-    long result = def;
-    if (getTimeOut() != null) {
-        result = new Long(getTimeOut()).longValue();
-    }
-     
-    return result;
-  }
-  
-  public void setTimeOut(long timeOut) {
-      m_timeOut = new Long(timeOut).toString();
-  }
-  
-  public String getAnnotations() {
-    return null != m_annotations ? m_annotations.toString() : m_suite.getAnnotations();
-  }
-  
-  public void setAnnotations(String annotations) {
-    m_annotations = AnnotationTypeEnum.valueOf(annotations);
-  }
-
-  public void setBeanShellExpression(String expression) {
-    m_expression = expression;
-  }
-  
-  public String getExpression() {
-    return m_expression;
-  }
-
-  public String toXml(String indent) {
-    XMLStringBuffer xsb = new XMLStringBuffer(indent);
-    Properties p = new Properties();
-    p.setProperty("name", getName());
-    p.setProperty("junit", m_isJUnit != null ? m_isJUnit.toString() : "false");
-    if (null != m_parallel && !"".equals(m_parallel)) {
-      p.setProperty("parallel", m_parallel);
-    }
-    if (null != m_verbose) {
-      p.setProperty("verbose", m_verbose.toString());
-    }
-    if (null != m_annotations) {
-      p.setProperty("annotations", m_annotations.toString());
-    }
-    if (null != m_timeOut) {
-      p.setProperty("time-out", m_timeOut.toString());
-    }
-    
-    xsb.push("test", p);
-    
-    
-    if (null != getMethodSelectors() && !getMethodSelectors().isEmpty()) {
-      xsb.push("method-selectors");
-      for (XmlMethodSelector selector: getMethodSelectors()) {
-        xsb.getStringBuffer().append(selector.toXml(indent + "    "));
-      }
-      
-      xsb.pop("method-selectors");
-    }
-    
-    // parameters
-    if (!m_parameters.isEmpty()) {
-      for(Map.Entry<String, String> para: m_parameters.entrySet()) {
-        Properties paramProps= new Properties();
-        paramProps.setProperty("name", para.getKey());
-        paramProps.setProperty("value", para.getValue());
-        xsb.addEmptyElement("parameter", paramProps); // BUGFIX: TESTNG-27
-      }
-    }
-    
-    // groups
-    if (!m_metaGroups.isEmpty() || !m_includedGroups.isEmpty() || !m_excludedGroups.isEmpty()) {
-      xsb.push("groups");
-      
-      // define
-      for (String metaGroupName: m_metaGroups.keySet()) {
-        Properties metaGroupProp= new Properties();
-        metaGroupProp.setProperty("name",  metaGroupName);
-        
-        xsb.push("define", metaGroupProp);
-        
-        for (String groupName: m_metaGroups.get(metaGroupName)) {
-          Properties includeProps = new Properties();
-          includeProps.setProperty("name", groupName);
-          
-          xsb.addEmptyElement("include", includeProps);
-        }
-        
-        xsb.pop("define");
-      }
-      
-      if (!m_includedGroups.isEmpty() || !m_excludedGroups.isEmpty()) {
-        xsb.push("run");
-        
-        for (String includeGroupName: m_includedGroups) {
-          Properties includeProps = new Properties();
-          includeProps.setProperty("name", includeGroupName);
-          
-          xsb.addEmptyElement("include", includeProps);
-        }
-        
-        for (String excludeGroupName: m_excludedGroups) {
-          Properties excludeProps = new Properties();
-          excludeProps.setProperty("name", excludeGroupName);
-          
-          xsb.addEmptyElement("exclude", excludeProps);
-        }
-        
-        xsb.pop("run");
-      }
-      
-      xsb.pop("groups");
-    }
-    
-    
-    // HINT: don't call getXmlPackages() cause you will retrieve the suite packages too
-    if (null != m_xmlPackages && !m_xmlPackages.isEmpty()) {
-      xsb.push("packages");
-      
-      for (XmlPackage pack: m_xmlPackages) {
-        xsb.getStringBuffer().append(pack.toXml("  "));
-      }
-      
-      xsb.pop("packages");
-    }
-    
-    // classes
-    if (null != getXmlClasses() && !getXmlClasses().isEmpty()) {
-      xsb.push("classes");
-      for (XmlClass cls : getXmlClasses()) {
-        xsb.getStringBuffer().append(cls.toXml(indent + "    "));
-      }
-      xsb.pop("classes");
-    }
-    
-    xsb.pop("test");
-    
-    return xsb.toXML();
-  }
-  
-  @Override
-  public String toString() {
-    StringBuffer result = new StringBuffer("[Test: \"" + m_name + "\"")
-      .append(" verbose:" + m_verbose);
-    
-    result.append("[parameters:");
-    for (String k : m_parameters.keySet()) {
-      String v = m_parameters.get(k);
-      result.append(k + "=>" + v);
-    }
-    
-    result.append("]");
-    result.append("[metagroups:");
-    for (String g : m_metaGroups.keySet()) {
-      List<String> mg = m_metaGroups.get(g);
-      result.append(g).append("=");
-      for (String n : mg) {
-        result.append(n).append(",");
-      }
-    }
-    result.append("] ");
-    
-    result.append("[included: ");
-    for (String g : m_includedGroups) {
-      result.append(g).append(" ");
-    }
-    result.append("]");
-    
-    result.append("[excluded: ");
-    for (String g : m_excludedGroups) {
-      result.append(g).append("");
-    }
-    result.append("] ");
-    
-    result.append(" classes:");
-    for (XmlClass cl : m_xmlClasses) {
-      result.append(cl).append(" ");
-    }
-    
-    result.append("] ");
-    
-    return result.toString();
-  }
-  
-  static void ppp(String s) {
-    System.out.println("[XmlTest] " + s);
-  }
-  
-  /**
-   * Clone the <TT>source</TT> <CODE>XmlTest</CODE> by including: 
-   * - test attributes
-   * - groups definitions
-   * - parameters
-   * 
-   * The <classes> sub element is ignored for the moment.
-   * 
-   * @return a clone of the current XmlTest
-   */
-  @Override
-  public Object clone() {
-    XmlTest result = new XmlTest(getSuite());
-    
-    result.setName(getName());
-    result.setAnnotations(getAnnotations());
-    result.setIncludedGroups(getIncludedGroups());
-    result.setExcludedGroups(getExcludedGroups());
-    result.setJUnit(isJUnit());
-    result.setParallel(getParallel());
-    result.setVerbose(getVerbose());
-    result.setParameters(getParameters());
-    result.setXmlPackages(getXmlPackages());
-    
-    Map<String, List<String>> metagroups = getMetaGroups();
-    for (Map.Entry<String, List<String>> group: metagroups.entrySet()) {
-      result.addMetaGroup(group.getKey(), group.getValue());
-    }
-    
-    return result;
-  }
-
-  /**
-   * Convenience method to cache the ordering numbers for methods.
-   */
-  public List<Integer> getInvocationNumbers(String method) {
-    if (m_failedInvocationNumbers == null) {
-      m_failedInvocationNumbers = Maps.newHashMap();
-      for (XmlClass c : getXmlClasses()) {
-        for (XmlInclude xi : c.getIncludedMethods()) {
-          List<Integer> invocationNumbers = xi.getInvocationNumbers();
-          if (invocationNumbers.size() > 0) {
-            String methodName = c.getName() + "." + xi.getName();
-            m_failedInvocationNumbers.put(methodName, invocationNumbers);
-          }
-        }
-      }
-    }
-
-    List<Integer> result = m_failedInvocationNumbers.get(method);
-    if (result == null) {
-      // Don't use emptyList here since this list might end up receiving values if
-      // the test run fails.
-      return Lists.newArrayList();
-    } else {
-      return result;
-    }
-  }
-}
diff --git a/src/pom.xml b/src/pom.xml
deleted file mode 100755
index 6075fbc..0000000
--- a/src/pom.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-   <modelVersion>4.0.0</modelVersion>
-   <groupId>org.testng</groupId>
-   <artifactId>testng-jdk15</artifactId>
-   <packaging>jar</packaging>
-   <version>4.4.7</version>
-   <name>TestNG jdk15</name>
-   <url>http://testng.org</url>
-   <description>TestNG is a unit testing framework.</description>
-   
-   <scm>
-    <url>https://testng.dev.java.net/source/browse/testng</url>
-   </scm>
-   
-   <licenses>
-      <license>
-         <name>Apache License, Version 2.0</name>
-         <url>http://apache.org/licenses/LICENSE-2.0</url>
-      </license>
-   </licenses>
-   
-   <dependencies>
-      <dependency>
-         <groupId>junit</groupId>
-         <artifactId>junit</artifactId>
-         <version>3.8.1</version>
-         <scope>runtime</scope>
-      </dependency>
-      <dependency>
-         <groupId>qdox</groupId>
-         <artifactId>qdox</artifactId>
-         <version>1.5</version>
-         <scope>runtime</scope>
-      </dependency>
-      <dependency>
-         <groupId>bsh</groupId>
-         <artifactId>bsh</artifactId>
-         <version>2.0b1</version>
-         <scope>runtime</scope>
-      </dependency>
-   </dependencies>
-   
-</project>
diff --git a/src/testng-1.0.dtd b/src/testng-1.0.dtd
deleted file mode 100755
index 3a54127..0000000
--- a/src/testng-1.0.dtd
+++ /dev/null
@@ -1,185 +0,0 @@
-<!--
-
-Here is a quick overview of the main parts of this DTD.  For more information,
-refer to the <a href="http://testng.org">main web site</a>.
-                                                      
-A <b>suite</b> is made of <b>tests</b> and <b>parameters</b>.
-                                                      
-A <b>test</b> is made of three parts:                        
-
-<ul>
-<li> <b>parameters</b>, which override the suite parameters     
-<li> <b>groups</b>, made of two parts                           
-<li> <b>classes</b>, defining which classes are going to be part
-  of this test run                                    
-</ul>
-                                                      
-In turn, <b>groups</b> are made of two parts:                
-<ul>
-<li> Definitions, which allow you to group groups into   
-  bigger groups                                       
-<li> Runs, which defines the groups that the methods     
-  must belong to in order to be run during this test  
-</ul>
-                                                      
-Cedric Beust & Alexandru Popescu                      
- at title DTD for TestNG                                    
- at root suite
-
--->
-
-
-<!-- A suite is the top-level element of a testng.xml file                  -->
-<!ELEMENT suite (listeners|packages|test|parameter|method-selectors|suite-files)* >
-
-<!-- Attributes: -->
-<!--
- at attr  name        The name of this suite (as it will appear in the reports)
- at attr  junit       Whether to run in JUnit mode.
- at attr  verbose     How verbose the output on the console will be.  
-                This setting has no impact on the HTML reports.
- at attr  parallel   Whether TestNG should use different threads
-                to run your tests (might speed up the process)
- at attr  thread-count An integer giving the size of the thread pool to use
-                if you set parallel.
- at attr  annotations  If "javadoc", TestNG will look for
-                JavaDoc annotations in your sources, otherwise it will
-                use JDK5 annotations.
- at attr  time-out     The time to wait in milliseconds before aborting the
-                method (if parallel="methods") or the test (parallel="tests")
- at attr  skipfailedinvocationcounts Whether to skip failed invocations.
- at attr  data-provider-thread-count An integer givin the size of the thread pool to use
-       for parallel data providers.
- at attr  object-factory A class that implements IObjectFactory that will be used to
-       instantiate the test objects.
--->
-<!ATTLIST suite 
-    name CDATA #REQUIRED
-    junit (true | false) "false"
-    verbose CDATA #IMPLIED
-    parallel (false | methods | tests | classes) "false"
-    thread-count CDATA "5"
-    annotations CDATA #IMPLIED
-    time-out CDATA #IMPLIED
-    skipfailedinvocationcounts (true | false) "false"
-    data-provider-thread-count CDATA "10"
-    object-factory CDATA #IMPLIED
->
-
-<!-- A list of XML files that contain more suite descriptions -->
-<!ELEMENT suite-files (suite-file)* >
-
-<!ELEMENT suite-file ANY >
-<!ATTLIST suite-file
-    path CDATA #REQUIRED
->
-
-<!--
-Parameters can be defined at the <suite> or at the <test> level.
-Parameters defined at the <test> level override parameters of the same name in <suite>
-Parameters are used to link Java method parameters to their actual value, defined here.
--->
-<!ELEMENT parameter ANY>
-<!ATTLIST parameter
-    name CDATA #REQUIRED
-    value CDATA #REQUIRED >
-
-<!--
-Method selectors define user classes used to select which methods to run.
-They need to implement <tt>org.testng.IMethodSelector</tt> 
--->
-<!ELEMENT method-selectors (method-selector*) >
-<!ELEMENT method-selector ((selector-class)*|script) >
-<!ELEMENT selector-class ANY>
-<!ATTLIST selector-class
-    name CDATA #REQUIRED
-  priority CDATA #IMPLIED
->
-<!ELEMENT script ANY>
-<!ATTLIST script
-    language CDATA #REQUIRED
->
-
-<!--
-A test contains parameters and classes.  Additionally, you can define additional groups ("groups of groups")
--->
-
-<!ELEMENT test (method-selectors?,parameter*,groups?,packages?,classes?) >
-
-<!--
- at attr  name         The name of this test (as it will appear in the reports)
- at attr  junit        Whether to run in JUnit mode.
- at attr  verbose      How verbose the output on the console will be.
-                This setting has no impact on the HTML reports.
-                Default value: suite level verbose.
- at attr  parallel     Whether TestNG should use different threads
-                to run your tests (might speed up the process)
- at attr  thread-count An integer giving the size of the thread pool to be used if
-                parallel mode is used. Overrides the suite level value.
- at attr  annotations  If "javadoc", TestNG will look for
-                JavaDoc annotations in your sources, otherwise it will
-                use JDK5 annotations.
- at attr  time-out     the time to wait in milliseconds before aborting
-                the method (if parallel="methods") or the test (if parallel="tests")
- at attr  enabled      flag to enable/disable current test. Default value: true 
- at attr  skipfailedinvocationcounts Whether to skip failed invocations.
--->
-<!ATTLIST test
-    name CDATA #REQUIRED 
-    junit (true | false) "false"
-    verbose  CDATA #IMPLIED
-    parallel  CDATA #IMPLIED
-    thread-count CDATA #IMPLIED
-    annotations  CDATA #IMPLIED
-    time-out CDATA #IMPLIED
-    enabled CDATA #IMPLIED
-    skipfailedinvocationcounts (true | false) "false"
->
-
-<!--
-Defines additional groups ("groups of groups") and also which groups to include in this test run
--->
-<!ELEMENT groups (define*,run?) >
-
-<!ELEMENT define (include*)>
-<!ATTLIST define
-    name CDATA #REQUIRED>
-
-<!-- Defines which groups to include in the current group of groups         -->
-<!ELEMENT include ANY>
-<!ATTLIST include
-    name CDATA #REQUIRED
-    invocation-numbers CDATA #IMPLIED>
-
-<!-- Defines which groups to exclude from the current group of groups       -->
-<!ELEMENT exclude ANY>
-<!ATTLIST exclude
-    name CDATA #REQUIRED>
-
-<!-- The subtag of groups used to define which groups should be run         -->
-<!ELEMENT run (include?,exclude?)* >
-
-<!-- The list of classes to include in this test                            -->
-<!ELEMENT classes (class*) >
-<!ELEMENT class (methods*) >
-<!ATTLIST class
-    name CDATA #REQUIRED >
-
-<!-- The list of packages to include in this test                           -->
-<!ELEMENT packages (package*) >
-<!-- The package description. 
-     If the package name ends with .* then subpackages are included too.
--->
-<!ELEMENT package (include?,exclude?)*>
-<!ATTLIST package
-    name CDATA #REQUIRED >
-
-<!-- The list of methods to include/exclude from this test                 -->
-<!ELEMENT methods (include?,exclude?)* >
-
-<!-- The list of listeners that will be passed to TestNG -->
-<!ELEMENT listeners (listener*) >
-
-<!ELEMENT listener ANY>
-<!ATTLIST listener
-    class-name CDATA #REQUIRED >
diff --git a/src/testng-1.0.dtd.html b/src/testng-1.0.dtd.html
deleted file mode 100644
index 754b98c..0000000
--- a/src/testng-1.0.dtd.html
+++ /dev/null
@@ -1,203 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html>
-    <head>
-    <title>DTD for TestNG 1.0</title>
-        <link rel="stylesheet" href="http://beust.com/beust.css" type="text/css"/>
-    </head>
-<body>
-
-<pre class="code"><span class="xml-comment"><!--
-
-Here is a quick overview of the main parts of this DTD.  For more information,
-refer to the <a <span class="attribute">href="http://testng.org"</span> >main web site<span class="tag"></a>.
-
-</span>                                                      
-A <span class="tag"><b>suite</b></span> is made of <span class="tag"><b>tests</b></span> and <span class="tag"><b>parameters</b>.
-</span>                                                      
-
-A <span class="tag"><b>test</b></span> is made of three parts:                        
-
-<span class="tag"><ul>
-<li></span> <span class="tag"><b>parameters</b>,</span> which override the suite parameters     
-<span class="tag"><li></span> <span class="tag"><b>groups</b>,</span> made of two parts                           
-
-<span class="tag"><li></span> <span class="tag"><b>classes</b>,</span> defining which classes are going to be part
-  of this test run                                    
-<span class="tag"></ul>
-</span>                                                      
-In turn, <span class="tag"><b>groups</b></span> are made of two parts:                
-
-<span class="tag"><ul>
-<li></span> Definitions, which allow you to group groups into   
-  bigger groups                                       
-<span class="tag"><li></span> Runs, which defines the groups that the methods     
-  must belong to in order to be run during this test  
-<span class="tag"></ul>
-</span>                                                      
-Cedric Beust & Alexandru Popescu                      
- at title DTD for TestNG                                    
- at root suite
-
---></span>
-
-
-<span class="xml-comment"><!-- A suite is the top-level element of a testng.xml file                  --></span>
-
-<!ELEMENT suite (listeners|packages|test|parameter|method-selectors|suite-files)* >
-
-<span class="xml-comment"><!-- Attributes: --></span>
-<span class="xml-comment"><!--
- at attr  name        The name of this suite (as it will appear in the reports)
- at attr  junit       Whether to run in JUnit mode.
- at attr  verbose     How verbose the output on the console will be.  
-                This setting has no impact on the HTML reports.
- at attr  parallel   Whether TestNG should use different threads
-                to run your tests (might speed up the process)
- at attr  thread-count An integer giving the size of the thread pool to use
-                if you set parallel.
- at attr  annotations  If "javadoc", TestNG will look for
-                JavaDoc annotations in your sources, otherwise it will
-                use JDK5 annotations.
- at attr  time-out     The time to wait in milliseconds before aborting the
-                method (if <span class="attribute">parallel="methods"</span> ) or the test (parallel="tests")
- at attr  skipfailedinvocationCounts Whether to skip failed invocations.
- at attr  data-provider-thread-count An integer givin the size of the thread pool to use
-       for parallel data providers.
- at attr  object-factory A class that implements IObjectFactory that will be used to
-       instantiate the test objects.
---></span>
-<!ATTLIST suite 
-    name CDATA #REQUIRED
-    junit (true | false) "false"
-    verbose CDATA #IMPLIED
-    parallel (false | methods | tests | classes) "false"
-    thread-count CDATA "5"
-    annotations CDATA #IMPLIED
-    time-out CDATA #IMPLIED
-    skipfailedinvocationCounts (true | false) "false"
-    data-provider-thread-count CDATA "10"
-    object-factory CDATA #IMPLIED
->
-
-<span class="xml-comment"><!-- A list of XML files that contain more suite descriptions --></span>
-<!ELEMENT suite-files (suite-file)* >
-
-<!ELEMENT suite-file ANY >
-<!ATTLIST suite-file
-    path CDATA #REQUIRED
->
-
-<span class="xml-comment"><!--
-Parameters can be defined at the <span class="tag"><suite></span> or at the <span class="tag"><test></span> level.
-Parameters defined at the <span class="tag"><test></span> level override parameters of the same name in <span class="tag"><suite>
-
-Parameters</span> are used to link Java method parameters to their actual value, defined here.
---></span>
-<!ELEMENT parameter ANY>
-<!ATTLIST parameter
-    name CDATA #REQUIRED
-    value CDATA #REQUIRED >
-
-<span class="xml-comment"><!--
-Method selectors define user classes used to select which methods to run.
-They need to implement <span class="tag"><tt>org.testng.IMethodSelector</tt></span> 
---></span>
-<!ELEMENT method-selectors (method-selector*) >
-
-<!ELEMENT method-selector ((selector-class)*|script) >
-<!ELEMENT selector-class ANY>
-<!ATTLIST selector-class
-    name CDATA #REQUIRED
-  priority CDATA #IMPLIED
->
-<!ELEMENT script ANY>
-<!ATTLIST script
-    language CDATA #REQUIRED
->
-
-<span class="xml-comment"><!--
-A test contains parameters and classes.  Additionally, you can define additional groups ("groups of groups")
---></span>
-
-<!ELEMENT test (method-selectors?,parameter*,groups?,packages?,classes?) >
-
-<span class="xml-comment"><!--
- at attr  name         The name of this test (as it will appear in the reports)
- at attr  junit        Whether to run in JUnit mode.
- at attr  verbose      How verbose the output on the console will be.
-                This setting has no impact on the HTML reports.
-                Default value: suite level verbose.
- at attr  parallel     Whether TestNG should use different threads
-                to run your tests (might speed up the process)
- at attr  thread-count An integer giving the size of the thread pool to be used if
-                parallel mode is used. Overrides the suite level value.
- at attr  annotations  If "javadoc", TestNG will look for
-                JavaDoc annotations in your sources, otherwise it will
-                use JDK5 annotations.
- at attr  time-out     the time to wait in milliseconds before aborting
-                the method (if <span class="attribute">parallel="methods"</span> ) or the test (if <span class="attribute">parallel="tests"</span> )
- at attr  enabled      flag to enable/disable current test. Default value: true 
- at attr  skipfailedinvocationCounts Whether to skip failed invocations.
---></span>
-<!ATTLIST test
-    name CDATA #REQUIRED 
-    junit (true | false) "false"
-    verbose  CDATA #IMPLIED
-    parallel  CDATA #IMPLIED
-    thread-count CDATA #IMPLIED
-    annotations  CDATA #IMPLIED
-    time-out CDATA #IMPLIED
-    enabled CDATA #IMPLIED
-    skipfailedinvocationCounts (true | false) "false"
->
-
-<span class="xml-comment"><!--
-Defines additional groups ("groups of groups") and also which groups to include in this test run
---></span>
-<!ELEMENT groups (define*,run?) >
-
-<!ELEMENT define (include*)>
-
-<!ATTLIST define
-    name CDATA #REQUIRED>
-
-<span class="xml-comment"><!-- Defines which groups to include in the current group of groups         --></span>
-<!ELEMENT include ANY>
-<!ATTLIST include
-    name CDATA #REQUIRED>
-
-<span class="xml-comment"><!-- Defines which groups to exclude from the current group of groups       --></span>
-<!ELEMENT exclude ANY>
-<!ATTLIST exclude
-    name CDATA #REQUIRED>
-
-<span class="xml-comment"><!-- The subtag of groups used to define which groups should be run         --></span>
-<!ELEMENT run (include?,exclude?)* >
-
-<span class="xml-comment"><!-- The list of classes to include in this test                            --></span>
-<!ELEMENT classes (class*) >
-<!ELEMENT class (methods*) >
-<!ATTLIST class
-    name CDATA #REQUIRED >
-
-<span class="xml-comment"><!-- The list of packages to include in this test                           --></span>
-<!ELEMENT packages (package*) >
-
-<span class="xml-comment"><!-- The package description. 
-     If the package name ends with .* then subpackages are included too.
---></span>
-<!ELEMENT package (include?,exclude?)*>
-<!ATTLIST package
-    name CDATA #REQUIRED >
-
-<span class="xml-comment"><!-- The list of methods to include/exclude from this test                 --></span>
-<!ELEMENT methods (include?,exclude?)* >
-
-<span class="xml-comment"><!-- The list of listeners that will be passed to TestNG --></span>
-<!ELEMENT listeners (listener*) >
-
-<!ELEMENT listener ANY>
-<!ATTLIST listener
-    class-name CDATA #REQUIRED >
-</pre>
diff --git a/src/testngtasks b/src/testngtasks
deleted file mode 100644
index dc07b2f..0000000
--- a/src/testngtasks
+++ /dev/null
@@ -1,2 +0,0 @@
-testng=org.testng.TestNGAntTask
-junit-converter=org.testng.JUnitConverterTask
diff --git a/test/.cvsignore b/test/.cvsignore
deleted file mode 100644
index 3352813..0000000
--- a/test/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-test-report
-test-output-tests
-testng2.xml
-report
-build
-test-output
-test-outputs
-
-global-result.txt
diff --git a/test/ant/DontOverrideSuiteNameTest.java b/test/ant/DontOverrideSuiteNameTest.java
deleted file mode 100644
index 0c231f9..0000000
--- a/test/ant/DontOverrideSuiteNameTest.java
+++ /dev/null
@@ -1,12 +0,0 @@
-
-import org.testng.annotations.Test;
-
- at Test
-public class DontOverrideSuiteNameTest {
-	private boolean m_run = false;
-
-	@Test(groups = {"nopackage"})
-	public void test() {
-	   m_run = true;
-	}
-}
diff --git a/test/ant/MultipleThreadTest.java b/test/ant/MultipleThreadTest.java
deleted file mode 100644
index 1f4c935..0000000
--- a/test/ant/MultipleThreadTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-import java.util.*;
-
-import org.testng.Assert;
-import org.testng.annotations.*;
-/**
- * Tests that more than one thread is used for running tests
- * @author micheb10 2 Oct 2006
- *
- */
-public class MultipleThreadTest {
-	public static Set<Thread> _threads;
-	
-	@BeforeClass
-	public void prepareHashSet() {
-		_threads=Collections.synchronizedSet(new HashSet<Thread>());
-	}
-	
-	@Test
-	public void recordThread00() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread01() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread02() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread03() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread04() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread05() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread06() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread07() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread08() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread09() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread10() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread11() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread12() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread13() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread14() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread15() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread16() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread17() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread18() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@Test
-	public void recordThread19() {
-		_threads.add(Thread.currentThread());
-	}
-	
-	@AfterClass
-	public void confirmMultipleThreads() {
-		Assert.assertTrue(_threads.size()>1,"More than one thread should have been used for running the tests - "+_threads.size()+" was used");
-	}
-}
diff --git a/test/ant/NoPackageTest.java b/test/ant/NoPackageTest.java
deleted file mode 100644
index 394a7ea..0000000
--- a/test/ant/NoPackageTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-/**
- * @author Filippo Diotalevi
- */
-public class NoPackageTest {
-	private boolean m_run = false;
-
-	@Test(groups = {"nopackage"})
-	public void test() {
-	   m_run = true;
-	}
-
-   @AfterMethod(groups = {"nopackage"})
-   public void after() {
-      assert m_run : "test method was not run";
-   }
-}
diff --git a/test/ant/build.xml b/test/ant/build.xml
deleted file mode 100644
index 485a829..0000000
--- a/test/ant/build.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<project name="testng" default="all" basedir="../..">
-
-  <property file="build.properties"/>
-  <property name="this.directory" value="test/ant" />
-  <property name="test-output" value="${this.directory}/test-output" />
-
-  <taskdef name="testng" classname="org.testng.TestNGAntTask" classpath="${testng.jar}" />
-
-  <target name="all">
-    <delete failonerror="false" dir="${this.directory}/build" />
-  	<mkdir dir="${this.directory}/build" />
-  	
-  	<javac classpath="${testng.jar}"
-  		  destdir="${this.directory}/build" srcdir="${this.directory}" includes="*.java" />
-
-<!--
-    <testng classpath="build;../../testng-5.2beta-jdk15.jar"
-            outputdir="test-output"
-    	      dumpcommand="true">
-        <xmlfileset dir="." includes="testng.xml"/>
-    </testng>
--->
-	<delete failonerror="false">
-	<fileset dir="${test-output}" includes="**"/></delete>
-  	
-    <testng classpath="${this.directory}/build;${testng.jar}"
-            outputdir="${test-output}"
-  	    parallel="methods"
-  	    threadcount="5"
-    	listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
-    	haltonfailure="true"
-    	>
-        <classfileset dir="${this.directory}/build">
-        	<include name="NoPackageTest.class" />
-        	<include name="MultipleThreadTest.class" />
-        </classfileset>
-    </testng>
-  	
-  	<available file="${test-output}/Ant suite/Ant test.xml" 
-  		type="file" property="test.exists"/>
-  	<fail unless="test.exists" 
-  		message="The appropriately named output should have been created"/>
-  	
-    <testng classpath="${this.directory}/build;${testng.jar}"
-            outputdir="${test-output}"
-	   	listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
-    	haltonfailure="true"
-    	suitename="Test Ant Suite"
-    	testname="Test Ant Test"
-    	>
-        <classfileset dir="${this.directory}/build">
-        	<include name="DontOverrideSuiteNameTest.class" />
-         </classfileset>
-    </testng>
-  	
-  	<available file="${test-output}/Test Ant Suite/Test Ant Test.xml" 
-  		type="file" property="test2.exists"/>
-  	<fail unless="test2.exists" message="The appropriately named output should have been created"/>
-  	
-  	<!-- Ensure standard tests get run -->
-    <testng classpath="${this.directory}/build;${testng.jar}"
-            outputdir="${test-output}"
-    	listeners = "org.testng.reporters.FailedReporter, org.testng.reporters.DotTestListener"
-    	haltonfailure="true"
-    	>
-        <xmlfileset file="${this.directory}/testng.xml"/>
-    </testng>
-  	<available file="${test-output}/Suitename from xml/TestName.xml" 
-  		type="file" property="test3.exists"/>
-  	<fail unless="test3.exists" message="The appropriately named output should have been created"/>
-
-  </target>
-</project>
diff --git a/test/ant/testng.xml b/test/ant/testng.xml
deleted file mode 100644
index 36a388e..0000000
--- a/test/ant/testng.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-  
-<suite name="Suitename from xml" verbose="1" parallel="false" thread-count="2">
-  
-  <test name="TestName">
-    <classes>
-      <class name="NoPackageTest" />
-    </classes>
-  </test>
-</suite>
diff --git a/test/build-dogfood.xml b/test/build-dogfood.xml
deleted file mode 100644
index 0e39867..0000000
--- a/test/build-dogfood.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<project name="testng" default="run" basedir=".">
-	<property name="testng.home" value="${basedir}/../" />
-    <property name="lib.dir" value="${testng.home}/3rdparty"/>
- 	<property file="../build.properties"/>
-
-	<path id="run.cp">
-		<pathelement location="../z_build" />
-		<fileset dir="${lib.dir}">
-			<include name="junit.jar"/>
-			<include name="${beanshell.jar}"/>
-			<include name="${qdox.jar}"/>
-		</fileset>
- 		<pathelement location="${java.home}/../lib/tools.jar"/>
-	</path>
-
-	<target name="run" description="Run tests" >
-		<echo>Defining task from ${basedir}/../${jdk15.testng.jar}</echo>
-		<taskdef name="testng"
-              classname="org.testng.TestNGAntTask"
-              classpath="${basedir}/../${jdk15.testng.jar}" />
-
-		<testng classpathref="run.cp"
-        dumpcommand="true" verbose="9" outputdir="test-outputs" haltonfailure="true">
-			<xmlfileset dir="${basedir}">
-				<include name="testng-single.xml" />
-			</xmlfileset>
-		</testng>
-	</target>
-
-</project>
diff --git a/test/build-sample.xml b/test/build-sample.xml
deleted file mode 100644
index 3ffea58..0000000
--- a/test/build-sample.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<project name="testng" default="run" basedir=".">
-
-	<property name="testng.home" value="c:/java/testng" />
-    <property name="lib.dir" value="${testng.home}/lib"/>
-    <property name="testng.jar" value="${testng.home}/testng-2.5-jdk15.jar" />
-
-	<path id="run.cp">
-		<!--
-      <path refid="compile.cp"/>
--->
-		<pathelement location="build" />
-		<pathelement location="${lib.dir}/qdox-1.5.jar"/>
-		<pathelement location="${java.home}/../lib/tools.jar"/>
-	</path>
-
-	<target name="run" description="Run tests" >
-		<echo>Defining task from ${testng.jar}</echo>
-		<taskdef name="testng"
-              classname="org.testng.TestNGAntTask"
-              classpath="${testng.jar}" />
-
-		<testng classpathref="run.cp"
-        dumpcommand="true" verbose="9" outputdir="test-outputs">
-			<classfileset dir="build">
-				<include name="**/justin/*Test*.class" />
-			</classfileset>
-		</testng>
-	</target>
-
-</project>
diff --git a/test/build.xml b/test/build.xml
deleted file mode 100644
index 3916017..0000000
--- a/test/build.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<project name="testng" default="all" basedir="..">
-
-  <property file="build.properties"/>
-
-  <property name="test15.dir" value="${basedir}/test"/>
-  <property name="test.src.dir" value="${test15.dir}/src"/>
-  <property name="test.build.dir" value="${test15.dir}/build"/>
-
-  <property name="report.dir" value="${test15.dir}/test-output"/>
-  <property name="junit.report.dir" value="${report.dir}/test-tmp"/>
-  <property name="testng.report.dir" value="${report.dir}"/>
-
-  <target name="all" depends="prepare,compile,run,reports"/>
-
-  <!-- ==================================================================== -->
-  <!-- Compile                                                              -->
-  <!-- ==================================================================== -->
-  <path id="compile.cp">
-    <pathelement location="${testng.jar}" />
-		<pathelement location="${build.dir}"/>
-		<fileset dir="${lib.dir}">
-			<include name="junit.jar"/>
-<!--
-			<include name="${beanshell.jar}"/>
-      <include name="${guice.jar}"/>
--->
-		</fileset>
-  </path>
-
-  <target name="env:info">
-		<echo>
-BASEDIR          =${basedir}
-TEST15.DIR       =${test15.dir}
-TEST.SRC.DIR     =${test.src.dir}
-TEST.BUILD.DIR   =${test.build.dir}
-REPORT.DIR       =${report.dir}
-JUNIT.REPORT.DIR =${junit.report.dir}
-TESTNG.REPORT.DIR=${testng.report.dir}
-		</echo>
-  </target>
-	
-  <target name="compile" depends="prepare">
-		<echo message="                                 -- Compiling tests --"/>
-
-		<property name="build.compiler" value="modern"/>
-    <javac debug="true"
-           source="1.5"
-           classpathref="compile.cp"
-           srcdir="${test.src.dir}"
-           destdir="${test.build.dir}"
-    />
-      
-  </target>
-
-  <target name="prepare">
-		<tstamp/>
-		<mkdir dir="${test.build.dir}"/>
-		<mkdir dir="${junit.report.dir}"/>
-		<mkdir dir="${testng.report.dir}"/>
-  	
-  <taskdef name="testng"
-             classname="org.testng.TestNGAntTask"
-             classpath="${build.dir}"/>
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- Run                                                             -->
-  <!-- ==================================================================== -->
-
-  <path id="run.cp">
-		<path refid="compile.cp"/>
-		<pathelement location="${test.build.dir}"/>
-  </path>
-
-  <target name="run" description="Run tests" depends="compile">
-		<echo message="                                 -- Running tests --"/>
-		<echo message="                                 -- ${testng.jar} --" />
-		<testng classpathref="run.cp"
-            outputdir="${testng.report.dir}">
-			<xmlfileset dir="${test15.dir}" includes="testng.xml"/>
-		</testng>
-  </target>
-
-  <target name="run:single" description="Run 1 property file named with the ant property test" depends="compile">
-      <echo message="                                 -- testng-tests-run1 --"/>
-
-      <testng outputdir="${testng.report.dir}"
-              classpathref="run.cp">
-          <xmlfileset dir="${test15.dir}" includes="testng-single.xml"/>
-      </testng>
-
-      <echo>Report created in ${testng.report.dir}</echo>
-  </target>
-
-  <!-- ==================================================================== -->
-  <!-- Run specific configuration                                           -->
-  <!-- ==================================================================== -->
-  <target name="run:conf"
-          if="testng.conf"
-          depends="clean:reports,compile"
-          description="Run specified tests">
-		<echo message="                                 -- testng-tests-run --"/>
-		<echo message="using: ${testng.conf}.xml"/>
-
-		<testng classpathref="run.cp"
-            outputDir="${testng.report.dir}">
-			<xmlfileset dir="${test15.dir}" includes="${testng.conf}.xml"/>
-		</testng>
-
-		<antcall target="clean.tmp"/>
-  </target>
-
-
-  <!-- ==================================================================== -->
-  <!-- Reports                                                              -->
-  <!-- ==================================================================== -->
-
-  <target name="reports">
-		<junitreport todir="${junit.report.dir}">
-			<fileset dir="${testng.report.dir}">
-				<include name="*.xml"/>
-				<exclude name="testng-failed.xml"/>
-				<exclude name="testng-results.xml" />
-			</fileset>
-			<report format="noframes" todir="${junit.report.dir}"/>
-		</junitreport>
-  </target>
-
-
-  <target name="clean.tmp">
-      <delete dir="${basedir}/test-output-tests"/>
-  </target>
-
-  <target name="clean:reports">
-      <delete dir="${report.dir}"/>
-      <delete dir="${junit.report.dir}"/>
-  </target>
-
-  <target name="clean" depends="clean.tmp,clean:reports">
-		<echo message="                                 -- test clean --"/>
-
-  	<delete dir="${test.build.dir}"/>
-  </target>
-</project>
diff --git a/test/factory.xml b/test/factory.xml
deleted file mode 100644
index d69dee9..0000000
--- a/test/factory.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="Suite 1" verbose="3">
-  <test name="Factory">
-    <classes>
-      <class name="test.factory.FactoryInSeparateClass" />
-      <class name="test.factory.MyTest"/> 
-    </classes>
-  </test>
-
-</suite>
diff --git a/test/global-result.txt b/test/global-result.txt
deleted file mode 100644
index deea7c2..0000000
--- a/test/global-result.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-TestNG JDK 1.4
-Total tests run: 0, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-Exponent suite
-Total tests run: 4, Failures: 0, Skips: 0
-Command line suite
-Total tests run: 1, Failures: 0, Skips: 0
-TestNG JDK 1.5
-Total tests run: 0, Failures: 0, Skips: 0
-TestNG JDK 1.5
-Total tests run: 0, Failures: 0, Skips: 0
-TestNG JDK 1.5
-Total tests run: 0, Failures: 0, Skips: 0
diff --git a/test/hosts.properties b/test/hosts.properties
deleted file mode 100644
index cb18885..0000000
--- a/test/hosts.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-testng.hosts=localhost:5150
-testng.strategy=test
diff --git a/test/reports.html b/test/reports.html
deleted file mode 100644
index 23e67b3..0000000
--- a/test/reports.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<html>
-  <body>
-  <table>
-    <tr>
-      <td><a href="../reports/index.html?rd=../test/test-output/xml/TestNG+JDK+1.5"> JDK 1.5 reports</a></td>
-    </tr>
-    <tr>
-      <td><a href="../reports/index.html?rd=../test/test-output/xml/TestNG+JDK+1.4"> JDK 1.4 reports</a></td>
-    </tr>
-    <tr>
-      <td><a href="../reports/index.html?rd=../test-14/test-output/xml/TestNG+JDK+1.4"> JDK 1.4 specific reports</a></td>
-    </tr>
-    <!--<tr>-->
-      <!--<td><a href="../reports/index.html?rd=../test/v4/test-output/xml/TestNG+JDK+1.5+%28v4%29"> JDK 1.5 reports (v4 compat)</a></td>-->
-    <!--</tr>-->
-    <!--<tr>-->
-      <!--<td><a href="../reports/index.html?rd=../test/v4/test-output/xml/TestNG+JDK+1.4+%28v4%29"> JDK 1.4 reports (v4 compat)</a></td>-->
-    <!--</tr>-->
-  </table>
-  </body>
-</html>
\ No newline at end of file
diff --git a/test/src/ConverterSample2.java b/test/src/ConverterSample2.java
deleted file mode 100644
index 1be01af..0000000
--- a/test/src/ConverterSample2.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Not that this file has no package (that's what we are testing) and therefore,
-// it is at the wrong location, but it's easier to leave it here.  
-// Also, do not change the line numbers since the test will make sure
-// that the tags are generated in hardcoded line numbers
-import junit.framework.TestCase;
-public class ConverterSample2 extends TestCase {
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        int classId =10;
-        String className = "ajay";
-
-    }
-
-    protected void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    public final void testClassJunit() {
-      int classId = 10;
-        String className = "nspe";
-    }
-
-
-    public final void testSetClassId() {
-        int classId = 12;
-    }
-
-    public final void testSetClassName() {
-        String className = "account";
-    }
-
-}
diff --git a/test/src/ConverterSample4.java b/test/src/ConverterSample4.java
deleted file mode 100644
index 0f25751..0000000
--- a/test/src/ConverterSample4.java
+++ /dev/null
@@ -1,83 +0,0 @@
-import java.util.Iterator;
-
-/*
- * Created on 12-Sep-2006 by micheb10
- * it is at the wrong location, but it's easier to leave it here.  
- * Also, do not change the line numbers since the test will make sure
- * that the tags are generated in hardcoded line numbers
- */
-
-/**
- * Sample file for the Javadocv annotations to Java 5 annotations converter for the default package
- * @author micheb10 12-Sep-2006
- *
- */
-public class ConverterSample4 {
-	/**
-	 * This comment line should be preserved
-	 * @testng.before-suite alwaysRun = "true"
-	 */
-	public void beforeSuiteAlwaysRun() {
-		// We are just checking appropriate annotations are added so we don't care about body
-	}
-	
-	/**
-	 * @testng.test
-	 */
-	public void plainTest() {
-		// Empty body
-	}
-	
-	/**
-	 * @testng.test
-	 * @testng.expected-exceptions
-	 * value = "java.lang.NullPointerException java.lang.NumberFormatException"
-	 */
-	public void expectedExceptions() {
-		// Empty body
-	}
-	
-	/**
-	 * @testng.test groups = "groupA groupB"
-	 */
-	public void testGroups() {
-		// Empty body
-	}
-	
-	/**
-	 * @testng.after-method
-	 */
-	public void afterMethod() {
-		// Empty body
-	}
-	
-	/**
-	 * This key should be preserved
-	 * @author The author is a standard tag and should not be touched
-	 * @testng.test groups = "groupA"
-	 * 		dependsOnMethods = "expectedExceptions" timeOut="3000" unrecognised="futureProof"
-	 * @version another standard tag should not be changed
-	 * @testng.expected-exceptions
-	 * value = "java.lang.NullPointerException java.lang.NumberFormatException"
-	 * 
-	 */
-	public void testEverything() {
-		
-	}
-	
-	/**
-	 * @testng.data-provider name="test1" 
-	 */
-	public Object[][] dataProvider() {
-		return null;
-	}
-	
-	/**
-	 * @testng.factory
-	 */
-	@SuppressWarnings({"unchecked", "deprecation"})
-	public Object[] factory() {
-		return null;
-	}
-	
-}
diff --git a/test/src/NoPackageTest.java b/test/src/NoPackageTest.java
deleted file mode 100644
index 394a7ea..0000000
--- a/test/src/NoPackageTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-/**
- * @author Filippo Diotalevi
- */
-public class NoPackageTest {
-	private boolean m_run = false;
-
-	@Test(groups = {"nopackage"})
-	public void test() {
-	   m_run = true;
-	}
-
-   @AfterMethod(groups = {"nopackage"})
-   public void after() {
-      assert m_run : "test method was not run";
-   }
-}
diff --git a/test/src/org/testng/AssertTest.java b/test/src/org/testng/AssertTest.java
deleted file mode 100644
index d637aac..0000000
--- a/test/src/org/testng/AssertTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.testng;
-
-import java.util.Collection;
-
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class AssertTest {
-  @Test
-  public void nullObjectArrayAssertEquals() {
-    Object[] expected= null;
-    Object[] actual= null;
-    Assert.assertEquals(actual, expected);
-  }
-  
-  @Test
-  public void nullObjectArrayAssertNoOrder() {
-    Object[] expected= null;
-    Object[] actual= null;
-    Assert.assertEqualsNoOrder(actual, expected);
-  }
-  
-  @Test
-  public void nullCollectionAssertEquals() {
-    Collection expected = null;
-    Collection actual = null;
-    Assert.assertEquals(actual, expected);
-  }
-}
diff --git a/test/src/org/testng/internal/conflistener/FailingAfterClass.java b/test/src/org/testng/internal/conflistener/FailingAfterClass.java
deleted file mode 100644
index ad3029d..0000000
--- a/test/src/org/testng/internal/conflistener/FailingAfterClass.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.testng.internal.conflistener;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-/**
- * This class/interface does XXX
- */
-public class FailingAfterClass {
-  @AfterClass
-  public void failingAfterClass() {
-    throw new RuntimeException("expected @AfterClass failure");
-  }
-
-  @Test
-  public void testBeforeFailingAfterClass() {}
-}
diff --git a/test/src/org/testng/internal/conflistener/FailingAfterSuite.java b/test/src/org/testng/internal/conflistener/FailingAfterSuite.java
deleted file mode 100644
index 238327d..0000000
--- a/test/src/org/testng/internal/conflistener/FailingAfterSuite.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.testng.internal.conflistener;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class FailingAfterSuite {
-  @AfterSuite(alwaysRun=true)
-  public void afterSuite() {
-    throw new RuntimeException("Test exception");
-  }
-  
-  @Test
-  public void dummytest() {
-  }
-}
diff --git a/test/src/org/testng/internal/conflistener/FailingAfterTest.java b/test/src/org/testng/internal/conflistener/FailingAfterTest.java
deleted file mode 100644
index 326e684..0000000
--- a/test/src/org/testng/internal/conflistener/FailingAfterTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.testng.internal.conflistener;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class FailingAfterTest {
-  @AfterTest(alwaysRun=true)
-  public void afterTest() {
-    throw new RuntimeException("Test exception");
-  }
-  
-  @AfterTest
-  public void skippedAfterTest() {
-  }
-  
-  @Test
-  public void dummytest() {
-  }
-}
diff --git a/test/src/org/testng/internal/conflistener/FailingBeforeClass.java b/test/src/org/testng/internal/conflistener/FailingBeforeClass.java
deleted file mode 100644
index e6d2929..0000000
--- a/test/src/org/testng/internal/conflistener/FailingBeforeClass.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.testng.internal.conflistener;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * This class/interface does XXX
- */
-public class FailingBeforeClass {
-  @BeforeClass
-  public void failingBeforeClass() {
-    throw new RuntimeException("expected @BeforeClass failure");
-  }
-
-  @Test
-  public void testAfterFailingBeforeClass() {}
-}
diff --git a/test/src/org/testng/internal/conflistener/FailingBeforeSuite.java b/test/src/org/testng/internal/conflistener/FailingBeforeSuite.java
deleted file mode 100644
index dd8b407..0000000
--- a/test/src/org/testng/internal/conflistener/FailingBeforeSuite.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.testng.internal.conflistener;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class FailingBeforeSuite {
-  @BeforeSuite
-  public void beforeSuite() {
-    throw new RuntimeException("Test exception");
-  }
-  
-  @Test
-  public void dummytest() {
-  }
-}
diff --git a/test/src/org/testng/internal/conflistener/FailingBeforeTest.java b/test/src/org/testng/internal/conflistener/FailingBeforeTest.java
deleted file mode 100644
index aebfc3b..0000000
--- a/test/src/org/testng/internal/conflistener/FailingBeforeTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.testng.internal.conflistener;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class FailingBeforeTest {
-  @BeforeSuite
-  public void passingBeforeSuite() {
-  }
-  
-  @BeforeTest
-  public void beforeTest() {
-    throw new RuntimeException("Test exception");
-  }
-  
-  @Test
-  public void dummytest() {
-  }
-}
diff --git a/test/src/org/testng/internal/conflistener/testng.xml b/test/src/org/testng/internal/conflistener/testng.xml
deleted file mode 100644
index faf2b37..0000000
--- a/test/src/org/testng/internal/conflistener/testng.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="Configuration failures" verbose="2">
-	<!--
-  <test name="Suite Configuration">
-		<classes>
-			<class name="org.testng.internal.conflistener.FailingBeforeSuite" />
-			<class name="org.testng.internal.conflistener.FailingAfterSuite" />
-		</classes>
-  </test>
-	-->
-	<test name="Test Configuration">
-		<classes>
-			<class name="org.testng.internal.conflistener.FailingBeforeTest" />
-			<class name="org.testng.internal.conflistener.FailingAfterTest" />
-		</classes>
-  </test>
-	<test name="Class Configuration">
-		<classes>
-			<class name="org.testng.internal.conflistener.FailingBeforeClass" />
-      <class name="org.testng.internal.conflistener.FailingAfterClass" />
-    </classes>
-  </test>
-  <!--
-	<test name="X Configuration">
-		<classes>
-			<class name="org.testng.internal.conflistener." />
-		</classes>
-  </test>
-	-->
-</suite>
\ No newline at end of file
diff --git a/test/src/test/BaseDistributedTest.java b/test/src/test/BaseDistributedTest.java
deleted file mode 100644
index 28b9a35..0000000
--- a/test/src/test/BaseDistributedTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package test;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.testng.Assert;
-
-public class BaseDistributedTest {
-  private boolean m_verbose = false;
-  
-  protected void verifyTests(String title, String[] exp, Map found) {
-    Map expected = new HashMap();
-    for(int i = 0; i < exp.length; i++) {
-      expected.put(exp[i], exp[i]);
-    }
-
-    Assert.assertEquals(found.size(), expected.size(),
-        "Verification for " + title + " tests failed:");
-
-    for(Iterator it = expected.values().iterator(); it.hasNext();) {
-      String name = (String) it.next();
-      if(null == found.get(name)) {
-        dumpMap("Expected", expected);
-        dumpMap("Found", found);
-      }
-      
-      Assert.assertNotNull(found.get(name),
-          "Expected to find method " + name + " in " + title
-          + " but didn't find it.");
-    }
-  }
-
-  protected void dumpMap(String title, Map m) {
-    if (m_verbose) {
-      System.out.println("==== " + title);
-      for(Iterator it = m.keySet().iterator(); it.hasNext();) {
-        Object key = it.next();
-        Object value = m.get(key);
-        ppp(key + "  => " + value);
-      }
-    }
-  }
-  private void ppp(String s) {
-    if (m_verbose) {
-      System.out.println("[BaseDistributedTest] " + s);
-    }
-  }
-
-
-}
diff --git a/test/src/test/BaseTest.java b/test/src/test/BaseTest.java
deleted file mode 100644
index 2dfbc62..0000000
--- a/test/src/test/BaseTest.java
+++ /dev/null
@@ -1,530 +0,0 @@
-package test;
-
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-import org.testng.IInvokedMethodListener;
-import org.testng.ISuite;
-import org.testng.ITestResult;
-import org.testng.ITestRunnerFactory;
-import org.testng.SuiteRunner;
-import org.testng.TestListenerAdapter;
-import org.testng.TestRunner;
-import org.testng.annotations.BeforeMethod;
-import org.testng.internal.DefaultGuiceModule;
-import org.testng.internal.IConfiguration;
-import org.testng.internal.TestNGGuiceModule;
-import org.testng.internal.annotations.DefaultAnnotationTransformer;
-import org.testng.reporters.JUnitXMLReporter;
-import org.testng.reporters.TestHTMLReporter;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlInclude;
-import org.testng.xml.XmlMethodSelector;
-import org.testng.xml.XmlPackage;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * Base class for tests
- *
- * @author Cedric Beust, May 5, 2004
- *
- */
-public class BaseTest extends BaseDistributedTest {
-  private static final String m_outputDirectory= "test-output-tests";
-
-  private XmlSuite m_suite= null;
-  private ITestRunnerFactory m_testRunnerFactory;
-  private Injector m_injector;
-
-  public BaseTest() {
-    m_testRunnerFactory= new InternalTestRunnerFactory(this);
-    Module module = new TestNGGuiceModule(new DefaultAnnotationTransformer(), null);
-    m_injector = Guice.createInjector(module);
-  }
-
-  protected void setDebug() {
-    getTest().setVerbose(9);
-  }
-
-  protected void setParallel(String parallel) {
-    getTest().setParallel(parallel);
-  }
-
-  protected void setVerbose(int n) {
-    getTest().setVerbose(n);
-  }
-  
-  protected void setTestTimeOut(long n) {
-      getTest().setTimeOut(n);
-  }
-
-  protected void setSuiteTimeOut(long n) {
-      m_suite.setTimeOut(new Long(n).toString());
-  }
-
-  protected void setJUnit(boolean f) {
-    getTest().setJUnit(f);
-  }
-
-  protected void setThreadCount(int count) {
-    getTest().getSuite().setThreadCount(count);
-  }
-
-  private Map<Long, XmlTest> m_tests= new HashMap<Long, XmlTest>();
-  private Map<Long, Map> m_passedTests= new HashMap<Long, Map>();
-  private Map<Long, Map> m_failedTests= new HashMap<Long, Map>();
-  private Map<Long, Map> m_skippedTests= new HashMap<Long, Map>();
-  private Map<Long, XmlTest> m_testConfigs= new HashMap<Long, XmlTest>();
-  private Map<Long, Map> m_passedConfigs= new HashMap<Long, Map>();
-  private Map<Long, Map> m_failedConfigs= new HashMap<Long, Map>();
-  private Map<Long, Map> m_skippedConfigs= new HashMap<Long, Map>();
-  private Map<Long, Map> m_failedButWithinSuccessPercentageTests= new HashMap<Long, Map>();
-
-  protected Map<String, List<ITestResult>> getTests(Map<Long, Map> map) {
-    Map<String, List<ITestResult>> result= map.get(getId());
-    if(null == result) {
-      result= new HashMap<String, List<ITestResult>>();
-      map.put(getId(), result);
-    }
-
-    return result;
-  }
-
-  protected XmlTest getTest() {
-    return m_tests.get(getId());
-  }
-
-  protected void setTests(Map<Long, Map> map, Map m) {
-    map.put(getId(), m);
-  }
-
-  public Map<String, List<ITestResult>> getFailedTests() {
-    return getTests(m_failedTests);
-  }
-
-  public Map<String, List<ITestResult>> getFailedButWithinSuccessPercentageTests() {
-    return getTests(m_failedButWithinSuccessPercentageTests);
-  }
-
-  public Map<String, List<ITestResult>> getPassedTests() {
-    return getTests(m_passedTests);
-  }
-
-  public Map<String, List<ITestResult>> getSkippedTests() {
-    return getTests(m_skippedTests);
-  }
-  
-  public Map<String, List<ITestResult>> getFailedConfigs() {
-    return getTests(m_failedConfigs);
-  }
-
-  public Map<String, List<ITestResult>> getPassedConfigs() {
-    return getTests(m_passedConfigs);
-  }
-
-  public Map<String, List<ITestResult>> getSkippedConfigs() {
-    return getTests(m_skippedConfigs);
-  }
-
-  public void setSkippedTests(Map m) {
-    setTests(m_skippedTests, m);
-  }
-
-  public void setPassedTests(Map m) {
-    setTests(m_passedTests, m);
-  }
-
-  public void setFailedTests(Map m) {
-    setTests(m_failedTests, m);
-  }
-
-  public void setFailedButWithinSuccessPercentageTests(Map m) {
-    setTests(m_failedButWithinSuccessPercentageTests, m);
-  }
-
-  public void setSkippedConfigs(Map m) {
-    setTests(m_skippedConfigs, m);
-  }
-
-  public void setPassedConfigs(Map m) {
-    setTests(m_passedConfigs, m);
-  }
-
-  public void setFailedConfigs(Map m) {
-    setTests(m_failedConfigs, m);
-  }
-
-  
-  protected void run() {
-    assert null != getTest() : "Test wasn't set, maybe @Configuration methodSetUp() was never called";
-    setPassedTests(new HashMap());
-    setFailedTests(new HashMap());
-    setSkippedTests(new HashMap());
-    setPassedConfigs(new HashMap());
-    setFailedConfigs(new HashMap());
-    setSkippedConfigs(new HashMap());
-    setFailedButWithinSuccessPercentageTests(new HashMap());
-
-    m_suite.setVerbose(0);
-    SuiteRunner suite = new SuiteRunner(m_injector.getInstance(IConfiguration.class),
-        m_suite, m_outputDirectory, m_testRunnerFactory);
-
-    suite.run();
-  }
-
-  protected void addMethodSelector(String className, int priority) {
-    XmlMethodSelector methodSelector= new XmlMethodSelector();
-    methodSelector.setName(className);
-    methodSelector.setPriority(priority);
-    getTest().getMethodSelectors().add(methodSelector);
-  }
-
-  protected XmlClass addClass(String className) {
-    XmlClass result= new XmlClass(className);
-    getTest().getXmlClasses().add(result);
-
-    return result;
-  }
-
-  protected void setBeanShellExpression(String expression) {
-    getTest().setBeanShellExpression(expression);
-  }
-
-  protected void addPackage(String pkgName, String[] included, String[] excluded) {
-    XmlPackage pkg= new XmlPackage();
-    pkg.setName(pkgName);
-    pkg.getInclude().addAll(Arrays.asList(included));
-    pkg.getExclude().addAll(Arrays.asList(excluded));
-    getTest().getSuite().getXmlPackages().add(pkg);
-  }
-
-  private XmlClass findClass(String className) {
-    for(XmlClass cl : getTest().getXmlClasses()) {
-      if(cl.getName().equals(className)) {
-        return cl;
-      }
-    }
-
-    XmlClass result= addClass(className);
-
-    return result;
-  }
-
-  public void addIncludedMethod(String className, String m) {
-    XmlClass xmlClass= findClass(className);
-    xmlClass.getIncludedMethods().add(new XmlInclude(m));
-    getTest().getXmlClasses().add(xmlClass);
-  }
-
-  public void addExcludedMethod(String className, String m) {
-    XmlClass xmlClass= findClass(className);
-    xmlClass.getExcludedMethods().add(m);
-    getTest().getXmlClasses().add(xmlClass);
-  }
-
-  public void addIncludedGroup(String g) {
-    getTest().getIncludedGroups().add(g);
-  }
-
-  public void addExcludedGroup(String g) {
-    getTest().getExcludedGroups().add(g);
-  }
-
-  public void addMetaGroup(String mg, List<String> l) {
-    getTest().getMetaGroups().put(mg, l);
-  }
-
-  public void addMetaGroup(String mg, String n) {
-    List<String> l= new ArrayList<String>();
-    l.add(n);
-    addMetaGroup(mg, l);
-  }
-
-  public void setParameter(String key, String value) {
-    getTest().addParameter(key, value);
-  }
-
-  private void setTest(XmlTest test) {
-    XmlTest t= m_tests.get(getId());
-    if(null == t) {
-      m_tests.put(getId(), t);
-    }
-  }
-
-//  @Configuration(beforeTestMethod = true, groups = { "init", "initTest"})
-  @BeforeMethod(groups= { "init", "initTest" })
-  public void methodSetUp() {
-    m_suite= new XmlSuite();
-    m_suite.setName("Internal_suite");
-    XmlTest xmlTest= new XmlTest(m_suite);
-    xmlTest.setName("Internal_test_failures_are_expected");
-    m_tests.put(getId(), xmlTest);
-  }
-
-  private Collection computeDifferences(Map m1, Map m2) {
-    List result= new ArrayList();
-
-    for(Iterator it= m1.keySet().iterator(); it.hasNext();) {
-      Object key= it.next();
-    }
-
-    return result;
-  }
-
-  private void addTest(Map<String, List<ITestResult>> tests, ITestResult t) {
-    List<ITestResult> l= tests.get(t.getMethod().getMethodName());
-    if(null == l) {
-      l= new ArrayList<ITestResult>();
-      tests.put(t.getMethod().getMethodName(), l);
-    }
-    l.add(t);
-  }
-
-  public void addPassedTest(ITestResult t) {
-    addTest(getPassedTests(), t);
-  }
-
-  public void addFailedTest(ITestResult t) {
-    addTest(getFailedTests(), t);
-  }
-
-  public void addFailedButWithinSuccessPercentageTest(ITestResult t) {
-    addTest(getFailedButWithinSuccessPercentageTests(), t);
-  }
-
-  public void addSkippedTest(ITestResult t) {
-    addTest(getSkippedTests(), t);
-  }
-  
-  public void addPassedConfig(ITestResult t) {
-    addTest(getPassedConfigs(), t);
-  }
-
-  public void addFailedConfig(ITestResult t) {
-    addTest(getFailedConfigs(), t);
-  }
-
-  public void addSkippedConfig(ITestResult t) {
-    addTest(getSkippedConfigs(), t);
-  }
-
-  private void ppp(String s) {
-    System.out.println("[BaseTest " + getId() + "] " + s);
-  }
-
-  protected Long getId() {
-//    return 42L;
-//    return (long) getClass().hashCode();
-    long result = Thread.currentThread().getId();
-//    System.out.println("RETURNING ID " + result);
-    return result;
-  }
-
-  public XmlSuite getSuite() {
-    return m_suite;
-  }
-
-  /**
-   * Used for instanceCount testing, when we need to look inside the
-   * TestResult to count the various SUCCESS/FAIL/FAIL_BUT_OK
-   */
-  protected void verifyResults(Map<String, List<ITestResult>> tests,
-                               int expected,
-                               String message) {
-    if(tests.size() > 0) {
-      Set keys= tests.keySet();
-      Object firstKey= keys.iterator().next();
-      List<ITestResult> passedResult= tests.get(firstKey);
-      int n= passedResult.size();
-      assert n == expected : "Expected " + expected + " " + message + " but found " + n;
-    }
-    else {
-      assert expected == 0 : "Expected " + expected + " " + message + " but found "
-        + tests.size();
-    }
-  }
-
-  protected void dumpResults(String name, Map<String, List<ITestResult>> tests) {
-    ppp("============= " + name);
-    for(String n : tests.keySet()) {
-      ppp("TEST:" + n);
-      List<ITestResult> l= tests.get(n);
-      for(ITestResult tr : l) {
-        ppp("   " + tr);
-      }
-    }
-  }
-
-  /**
-     *
-     * @param fileName The filename to parse
-     * @param regexp The regular expression
-     * @param resultLines An out parameter that will contain all the lines
-     * that matched the regexp
-     * @return A List<Integer> containing the lines of all the matches
-     *
-     * Note that the size() of the returned valuewill always be equal to
-     * result.size() at the end of this function.
-     */
-    public static List<Integer> grep(File fileName, String regexp, List<String> resultLines) {
-      List<Integer> resultLineNumbers = new ArrayList<Integer>();
-      BufferedReader fr = null;
-      try {
-        fr = new BufferedReader(new FileReader(fileName));
-        String line = fr.readLine();
-        int currentLine = 0;
-        Pattern p = Pattern.compile(".*" + regexp + ".*");
-  
-        while(null != line) {
-  //        ppp("COMPARING " + p + " TO @@@" + line + "@@@");
-          if(p.matcher(line).matches()) {
-            resultLines.add(line);
-            resultLineNumbers.add(currentLine);
-          }
-  
-          line = fr.readLine();
-          currentLine++;
-        }
-      }
-      catch(FileNotFoundException e) {
-        e.printStackTrace();
-      }
-      catch(IOException e) {
-        e.printStackTrace();
-      }
-      finally {
-        if(null != fr) {
-          try {
-            fr.close();
-          }
-          catch(IOException ex) {
-            ex.printStackTrace();
-          }
-        }
-      }
-  
-      return resultLineNumbers;
-  
-    }
-
-  private static class InternalTestRunnerFactory implements ITestRunnerFactory {
-    private final BaseTest m_baseTest;
-
-    public InternalTestRunnerFactory(final BaseTest baseTest) {
-      m_baseTest= baseTest;
-    }
-
-    /**
-     * @see org.testng.ITestRunnerFactory#newTestRunner(org.testng.ISuite, org.testng.xml.XmlTest)
-     */
-    public TestRunner newTestRunner(ISuite suite, XmlTest test,
-        List<IInvokedMethodListener> listeners) {
-      TestRunner testRunner= new TestRunner(suite, test, false, listeners);
-
-      testRunner.addTestListener(new TestHTMLReporter());
-      testRunner.addTestListener(new JUnitXMLReporter());
-      testRunner.addListener(new TestListener(m_baseTest));
-      if (listeners != null) {
-        for (IInvokedMethodListener l : listeners) {
-          testRunner.addListener(l);
-        }
-      }
-
-      return testRunner;
-    }
-  }
-
-  /**
-   *  Deletes all files and subdirectories under dir.
-
-   *  @return true if all deletions were successful.
-   *  If a deletion fails, the method stops attempting to delete and returns false.
-   */
-  public static boolean deleteDir(File dir) {
-    if (dir.isDirectory()) {
-      String[] children = dir.list();
-      for (int i=0; i<children.length; i++) {
-        boolean success = deleteDir(new File(dir, children[i]));
-        if (!success) {
-          return false;
-        }
-      }
-    }
-  
-    // The directory is now empty so delete it
-    return dir.delete();
-  }
-
-  protected void runTest(String cls, String[] passed, String[] failed, String[] skipped) {
-    addClass(cls);
-    run();
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-
-} // BaseTest
-
-////////////////////////////
-
-class TestListener extends TestListenerAdapter {
-  private static BaseTest m_test= null;
-
-  public TestListener(BaseTest t1) {
-    m_test= t1;
-  }
-
-  @Override
-  public void onTestSuccess(ITestResult tr) {
-    m_test.addPassedTest(tr);
-  }
-
-  @Override
-  public void onTestFailure(ITestResult tr) {
-    m_test.addFailedTest(tr);
-  }
-
-  @Override
-  public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
-    m_test.addFailedButWithinSuccessPercentageTest(result);
-  }
-
-  @Override
-  public void onTestSkipped(ITestResult tr) {
-    m_test.addSkippedTest(tr);
-  }
-  
-  @Override
-  public void onConfigurationSuccess(ITestResult tr) {
-    m_test.addPassedConfig(tr);
-  }
-
-  @Override
-  public void onConfigurationFailure(ITestResult tr) {
-    m_test.addFailedConfig(tr);
-  }
-
-  @Override
-  public void onConfigurationSkip(ITestResult tr) {
-    m_test.addSkippedConfig(tr);
-  }
-
-} // TestListener
diff --git a/test/src/test/ClassConfigurations.java b/test/src/test/ClassConfigurations.java
deleted file mode 100644
index 3adaee8..0000000
--- a/test/src/test/ClassConfigurations.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ClassConfigurations {
-
-  static int beforeCount = 0;
-  static int afterCount = 0;
-
-  @BeforeClass
-  public void beforeTestClass() {
-    ++beforeCount;
-//    System.out.println("@@@@@@ beforeTestClass has been called " + beforeCount + " time(s)");
-  }
-  
-  @AfterTest
-  public void afterTest() {
-    beforeCount = 0;
-    afterCount = 0;
-  }
-
-  @AfterTest
-  public void afterTestClass() {
-    ++afterCount;
-//    System.out.println("@@@@@@@ afterTestClass has been called " + afterCount + " time(s)");
-  }
-
-  @Test
-  public void testOne() {
-//    System.out.println("testOne");
-    assert beforeCount == 1;
-    assert afterCount == 0;
-  }
-
-  @Test
-  public void testTwo() {
-//    System.out.println("testTwo");
-    assert beforeCount == 1;
-    assert afterCount == 0;
-  }
-
-  @Test
-  public void testThree() {
-//    System.out.println("testThree");
-    assert beforeCount == 1;
-    assert afterCount == 0;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/CommandLineTest.java b/test/src/test/CommandLineTest.java
deleted file mode 100644
index 33399d8..0000000
--- a/test/src/test/CommandLineTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package test;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.List;
-
-import org.testng.*;
-import org.testng.annotations.Test;
-
-import static org.testng.Assert.*;
-
-import test.sample.JUnitSample1;
-
-import testhelper.OutputDirectoryPatch;
-
-public class CommandLineTest {
-  
-  /**
-   * Test -junit
-   */
-  @Test(groups = { "current" } )
-  public void junitParsing() {
-    String[] argv = {
-      "-log", "0",
-      "-d", OutputDirectoryPatch.getOutputDirectory(), 
-      "-junit", 
-      "-testclass", "test.sample.JUnitSample1"  
-    };
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG.privateMain(argv, tla);
-    
-    List<ITestResult> passed = tla.getPassedTests();
-    assertEquals(passed.size(), 2);
-    String test1 = passed.get(0).getMethod().getMethodName();
-    String test2 = passed.get(1).getMethod().getMethodName();
-    
-    assertTrue(JUnitSample1.EXPECTED1.equals(test1) && JUnitSample1.EXPECTED2.equals(test2) || 
-        JUnitSample1.EXPECTED1.equals(test2) && JUnitSample1.EXPECTED2.equals(test1));
-    }
-  
-  /**
-   * Test the absence of -junit
-   */
-  @Test(groups = { "current" } )
-  public void junitParsing2() {
-    String[] argv = {
-      "-log", "0",
-      "-d", OutputDirectoryPatch.getOutputDirectory(),
-      "-testclass", "test.sample.JUnitSample1"  
-    };
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG.privateMain(argv, tla);
-    
-    List<ITestResult> passed = tla.getPassedTests();
-    assertEquals(passed.size(), 0);
-    }
-  
-  /**
-   * Test the ability to override the defauilt command line Suite name
-   */
-  @Test(groups = { "current" } )
-  public void suiteNameOverride() {
-    String suiteName="MySuiteName";
-    String[] argv = {
-      "-log", "0",
-      "-d", OutputDirectoryPatch.getOutputDirectory(),
-      "-junit", 
-      "-testclass", "test.sample.JUnitSample1",
-      "-suitename", "\""+suiteName+"\""
-    };
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG.privateMain(argv, tla);
-    
-    List<ITestContext> contexts = tla.getTestContexts();
-    assertTrue(contexts.size()>0);
-    for (ITestContext context:contexts) {
-    	assertEquals(context.getSuite().getName(),suiteName);
-    }
-  }
-  
-  /**
-   * Test the ability to override the defauilt command line test name
-   */
-  @Test(groups = { "current" } )
-  public void testNameOverride() {
-    String testName="My Test Name";
-    String[] argv = {
-      "-log", "0",
-      "-d", OutputDirectoryPatch.getOutputDirectory(),
-      "-junit", 
-      "-testclass", "test.sample.JUnitSample1",
-      "-testname", "\""+testName+"\""
-    };
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG.privateMain(argv, tla);
-    
-    List<ITestContext> contexts = tla.getTestContexts();
-    assertTrue(contexts.size()>0);
-    for (ITestContext context:contexts) {
-    	assertEquals(context.getName(),testName);
-    }
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[CommandLineTest] " + s);
-  }
-  
-}
diff --git a/test/src/test/CtorCalledOnce.java b/test/src/test/CtorCalledOnce.java
deleted file mode 100644
index 61f2e9c..0000000
--- a/test/src/test/CtorCalledOnce.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.Test;
-
-/**
- * this test verifys that the test class is instantiated exactly once
- * regardless of how many test methods we have, showing that TestNG
- * semantics is quite different from JUnit
- */
-public class CtorCalledOnce {
-  public static int instantiated = 0;
-  public CtorCalledOnce() {
-    instantiated++;
-  }
-
-  @Test
-  public void testMethod1(){
-    assert instantiated == 1 : "Expected 1, was invoked " + instantiated + " times";
-  }
-
-  @Test
-  public void testMethod2(){
-    assert instantiated == 1 : "Expected 1, was invoked " + instantiated + " times";
-  }
-
-  @Test
-  public void testMethod3(){
-    assert instantiated == 1 : "Expected 1, was invoked " + instantiated + " times";
-  }
-  
-  @AfterTest
-  public void afterTest() {
-    instantiated = 0;
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/DynamicGraphTest.java b/test/src/test/DynamicGraphTest.java
deleted file mode 100644
index 9e1a7af..0000000
--- a/test/src/test/DynamicGraphTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package test;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.testng.internal.DynamicGraph;
-import org.testng.internal.DynamicGraph.Status;
-
-import java.util.Arrays;
-import java.util.Set;
-
-public class DynamicGraphTest {
-
-  private static <T> void assertFreeNodesEquals(DynamicGraph<T> graph, T[] expected) {
-    Assert.assertEqualsNoOrder(graph.getFreeNodes().toArray(), expected);
-  }
-
-  @Test
-  public void test8() {
-    DynamicGraph<String> dg = new DynamicGraph<String>();
-    dg.addEdge("b1", "a1");
-    dg.addEdge("b1", "a2");
-    dg.addEdge("b2", "a1");
-    dg.addEdge("b2", "a2");
-    dg.addEdge("c1", "b1");
-    dg.addEdge("c1", "b2");
-    dg.addNode("x");
-    dg.addNode("y");
-    Set<String> freeNodes = dg.getFreeNodes();
-    assertFreeNodesEquals(dg, new String[] {"a1", "a2", "y", "x"});
-
-    dg.setStatus(freeNodes, Status.RUNNING);
-    dg.setStatus("a1", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] {});
-
-    dg.setStatus("a2", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] { "b1", "b2"});
-
-    dg.setStatus("b2", Status.RUNNING);
-    dg.setStatus("b1", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] {});
-
-    dg.setStatus("b2", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] { "c1" });
-  }
-
-  @Test
-  public void test2() {
-    DynamicGraph<String> dg = new DynamicGraph<String>();
-    dg.addEdge("b1", "a1");
-    dg.addEdge("b1", "a2");
-    dg.addNode("x");
-    Set<String> freeNodes = dg.getFreeNodes();
-    assertFreeNodesEquals(dg, new String[] { "a1", "a2", "x" });
-
-    dg.setStatus(freeNodes, Status.RUNNING);
-    dg.setStatus("a1", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] {});
-
-    dg.setStatus("a2", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] { "b1" });
-
-    dg.setStatus("b2", Status.RUNNING);
-    dg.setStatus("b1", Status.FINISHED);
-    assertFreeNodesEquals(dg, new String[] {});
-  }
-
-}
diff --git a/test/src/test/Exclude.java b/test/src/test/Exclude.java
deleted file mode 100644
index 0042f57..0000000
--- a/test/src/test/Exclude.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package test;
-
-import org.testng.annotations.Test;
-
-public class Exclude {
-  private boolean m_included1 = false;
-  private boolean m_included2 = false;
-  private boolean m_excluded1 = true;
-  private boolean m_excluded2 = true;
-
-  @Test(groups = { "group1"} )
-  public void included1() {
-    ppp("INCLUDED1");
-    m_included1 = true;
-  }
-  
-  @Test(groups = { "group1"} )
-  public void included2() {
-    ppp("INCLUDED2");
-    m_included2 = true;
-  }
-  
-  @Test(groups = { "group1"} )
-  public void excluded1() {
-    ppp("EXCLUDED1");
-    m_excluded1 = false;
-  }
-  
-  @Test(groups = { "group1"} )
-  public void excluded2() {
-    ppp("EXCLUDED1");
-    m_excluded2 = false;
-  }
-  
-  @Test(dependsOnGroups = { "group1" }, groups =  {"group2"} )
-  public void verify() {
-    ppp("VERIFY");
-    assert m_included1 && m_included2 && m_excluded1 && m_excluded2:
-      "Should all be true: " + m_included1 + " "
-      + m_included2 + " " 
-      + m_excluded1 + " " 
-      + m_excluded2;
-  }
-  
-  static private void ppp(String s) {
-    if (false) {
-      System.out.println("[Exclude] " + s);
-    }
-  }
-  
-}
diff --git a/test/src/test/GraphTest.java b/test/src/test/GraphTest.java
deleted file mode 100644
index 9f9c1c6..0000000
--- a/test/src/test/GraphTest.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package test;
-
-import org.testng.Assert;
-import org.testng.TestNGException;
-import org.testng.annotations.Test;
-import org.testng.internal.Graph;
-import org.testng.internal.Tarjan;
-
-import java.util.List;
-
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class GraphTest {
-
-  @Test
-  public void sort() {
-    Graph<String> g = new Graph<String>();
-    g.addNode("3");
-    g.addNode("1");
-    g.addNode("2.2");
-    g.addNode("independent");
-    g.addNode("2.1");
-    g.addNode("2");
-    
-    g.addPredecessor("3", "2");
-    g.addPredecessor("3", "2.1");
-    g.addPredecessor("3", "2.2");
-    g.addPredecessor("2", "1");
-    g.addPredecessor("2.1", "1");
-    g.addPredecessor("2.2", "1");
-    
-    g.topologicalSort();
-    List<String> l = g.getStrictlySortedNodes();
-    int i = 0;
-    assert "1".equals(l.get(i));
-    i++;
-    assert "2".equals(l.get(i)) || "2.1".equals(l.get(i)) || "2.2".equals(l.get(i));
-    i++;
-    assert "2".equals(l.get(i)) || "2.1".equals(l.get(i)) || "2.2".equals(l.get(i));
-    i++;
-    assert "2".equals(l.get(i)) || "2.1".equals(l.get(i)) || "2.2".equals(l.get(i));
-    i++;
-    assert "3".equals(l.get(i));
-    
-    assert 1 == g.getIndependentNodes().size();
-    
-  }
-  
-  @Test(expectedExceptions = org.testng.TestNGException.class)
-  public void cycleShouldFail() {
-    Graph<String> g = createCyclicGraph();
-    g.topologicalSort();
-  }
-  
-  @Test
-  public void cycleShouldBeCorrect() {
-    Graph<String> g = null;
-    try {
-      g = createCyclicGraph();
-      g.topologicalSort();
-    }
-    catch(TestNGException ex) {
-      Tarjan<String> t = new Tarjan<String>(g, "1");
-      Assert.assertEquals(t.getCycle().size(), 3);
-    }
-    
-  }
-  
-  private Graph<String> createCyclicGraph() {
-    Graph<String> g = new Graph<String>();
-    g.addNode("3");
-    g.addNode("2");
-    g.addNode("1");
-    
-    g.addPredecessor("3", "2");
-    g.addPredecessor("2", "1");
-    g.addPredecessor("1", "3");
-
-    return g;
-  }
-
-  @Test
-  public void findPredecessors() {
-    Graph<String> g = new Graph<String>();
-    g.addNode("3");
-    g.addNode("1");
-    g.addNode("2.2");
-    g.addNode("independent");
-    g.addNode("2.1");
-    g.addNode("2");
-    
-    // 1 ->  2.1, 2.2, 2.3 --> 3
-    g.addPredecessor("3", "2");
-    g.addPredecessor("3", "2.1");
-    g.addPredecessor("3", "2.2");
-    g.addPredecessor("2", "1");
-    g.addPredecessor("2.1", "1");
-    g.addPredecessor("2.2", "1");
-    
-    // Invoke sort to make sure there is no side effect
-    g.topologicalSort();
-    
-    //
-    // Test findPredecessors
-    //
-    {
-      List<String> predecessors = g.findPredecessors("2");
-      assert predecessors.size() == 1;
-      assert predecessors.get(0).equals("1");
-    }
-    
-    {
-      List<String> predecessors = g.findPredecessors("3");
-
-      assert predecessors.size() == 4;
-      assert predecessors.get(0).equals("1");
-      assert predecessors.get(1).equals("2.1") 
-        || predecessors.get(1).equals("2.2") 
-        || predecessors.get(1).equals("2");
-      assert predecessors.get(2).equals("2.1") 
-        || predecessors.get(2).equals("2.2") 
-        || predecessors.get(2).equals("2");
-      assert predecessors.get(3).equals("2.1") 
-        || predecessors.get(3).equals("2.2") 
-        || predecessors.get(3).equals("2");
-    }
-  }
-
-  // Using an earlier implementation of Graph.findPrecessors, finding
-  // predecessors in certain kinds of graphs where many nodes have the
-  // same predecessors could be very slow, since the old implementation
-  // would explore the same nodes repeatedly.  This situation could
-  // happen when test methods are organized in several groups, with
-  // dependsOnGroups annotations so that each method in one group depends
-  // on all of the methods in another group.  If there were several
-  // such groups depending on each other in a chain, the combinatorics
-  // of the old method became excessive.  This test builds a 72-node graph that
-  // emulates this situation, then call Graph.findPredecessors.  The old
-  // implementation run this in 70+ seconds on my computer, the new implementation
-  // takes a few milliseconds.  In practice, with larger graphs, the former
-  // slowness could get very extreme, taking hours or more to complete
-  // in some real user situations.
-  //
-  @Test(timeOut = 5000) // If this takes more than 5 seconds we've definitely regressed.
-  public void findPredecessorsTiming() {
-    Graph<String> g = new Graph<String>();
-
-    final String rootNode = "myroot";
-    final String independentNode = "independent";
-    g.addNode(rootNode);
-    g.addNode(independentNode);
-
-    final int maxDepth = 7;
-    final int nodesPerDepth = 10; // must be < 100
-    //
-    // Add maxDepth groups of new nodes, where each group contains nodesPerDepth
-    // nodes, and each node in a group a depth N has each node in the group
-    // at depth (N-1) as a predecessor.
-    //
-    for (int depth = 1; depth <= maxDepth; depth++) {
-      for (int i = 0; i < nodesPerDepth; i++) {
-        String newNode = String.valueOf(i + (100 * depth));
-        g.addNode(newNode);
-        if (depth == 1) continue;
-        for (int j = 0; j < nodesPerDepth; j++) {
-          String prevNode = String.valueOf(j + (100 * (depth - 1)));
-          g.addPredecessor(newNode, prevNode);
-        }
-      }
-    }
-
-    // Finally, make all of the nodes in the group at depth maxDepth
-    // be predecessors of rootNode.
-    //
-    for (int i = 0; i < nodesPerDepth; i++) {
-      String node = String.valueOf(i + (100 * maxDepth));
-      g.addPredecessor(rootNode, node);
-    }
-
-    // Now we're done building the graph, which has (maxDepth * nodesPerDepth) + 2
-    // nodes.  rootNode has all of the other nodes except independentNode
-    // as predecessors.
-
-    //
-    // Test findPredecessors
-    //
-    {
-      List<String> predecessors = g.findPredecessors(rootNode);
-      assert predecessors.size() == (maxDepth * nodesPerDepth);
-    }
-  }
-}
diff --git a/test/src/test/IndividualMethodsTest.java b/test/src/test/IndividualMethodsTest.java
deleted file mode 100644
index c4964e3..0000000
--- a/test/src/test/IndividualMethodsTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * Test that if an individual method is specified on testng.xml, the @Configuration
- * method still runs.
- * 
- * Created on Aug 1, 2005
- * @author cbeust
- */
-public class IndividualMethodsTest
-{
-    private boolean m_setUpCalled = false;
-
-    @BeforeMethod
-    public void setUp()
-    {
-        m_setUpCalled = true;
-    }
-
-    @Test
-    public void testMethod()
-    {
-        // this line causes the test to fail, showing that setUp() hadn't been run
-        Assert.assertTrue(m_setUpCalled);
-    }
-}
diff --git a/test/src/test/InvocationAndSuccessPercentageTest.java b/test/src/test/InvocationAndSuccessPercentageTest.java
deleted file mode 100644
index 10490db..0000000
--- a/test/src/test/InvocationAndSuccessPercentageTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package test;
-
-import org.testng.annotations.Test;
-
-/**
- * This class tests invocationCount and successPercentage
- * 
- * @author cbeust
- */
-public class InvocationAndSuccessPercentageTest extends BaseTest {
-
-   @Test
-    public void invocationCount() {
-      addClass("test.sample.InvocationCountTest");
-      addIncludedGroup("invocationOnly");
-      run();
-      String[] passed = {
-          "tenTimesShouldSucceed",
-      };
-      String[] failed = {
-      };
-      verifyResults(getPassedTests(), 10, "passed tests");
-//      Map passedTests = getPassedTests();
-//      Set keys = passedTests.keySet();
-//      Object firstKey = keys.iterator().next();
-//      ITestResult passedResult = (ITestResult) passedTests.get(firstKey);
-//      int n = passedResult.getPassedMethods().size();
-//      assert n == 10 :
-//        "Expected 10 tests to have passed, but only found " + n;
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-    }
-   
-   /**
-    * Result expected:
-    * 8 passed
-    * 2 failed but within success percentage
-    */
-   @Test
-   public void successPercentageThatSucceeds() {
-     addClass("test.sample.InvocationCountTest");
-     addIncludedGroup("successPercentageThatSucceedsOnly");
-     run();
-     String[] passed = {
-         "successPercentageShouldSucceed",
-     };
-     String[] failed = {
-     };
-     String[] failedButWithinSuccessPercentage = {
-         "successPercentageShouldSucceed",         
-     };
-     verifyTests("FailedButWithinSuccessPercentage", 
-         failedButWithinSuccessPercentage, getFailedButWithinSuccessPercentageTests());
-     verifyTests("Passed", passed, getPassedTests());
-     verifyTests("Failed", failed, getFailedTests());
-     
-     // Should have 8 passed, 2 failed but within success percentage
-     verifyResults(getPassedTests(), 8, "passed tests");
-     verifyResults(
-       getFailedButWithinSuccessPercentageTests(), 2,
-       "failed_but_within_success_percentage_tests");
-   }
-
-   /**
-    * Result expected:
-    * 8 passed
-    * 1 failed but within success percentage
-    * 1 failed
-    */
-   @Test
-   public void successPercentageThatFails() {
-     addClass("test.sample.InvocationCountTest");
-     addIncludedGroup("successPercentageThatFailsOnly");
-     run();
-     String[] passed = {
-         "successPercentageShouldFail",
-     };
-     String[] failed = {
-         "successPercentageShouldFail",         
-     };
-     String[] failedButWithinSuccessPercentage = {
-         "successPercentageShouldFail",         
-     };
-     verifyTests("FailedButWithinSuccessPercentage", 
-         failedButWithinSuccessPercentage, getFailedButWithinSuccessPercentageTests());
-     verifyTests("Passed", passed, getPassedTests());
-     verifyTests("Failed", failed, getFailedTests());
-     
-     // Should have 8 passed, 2 failed but within success percentage
-     verifyResults(getPassedTests(), 8, "passed tests");
-     verifyResults(getFailedTests(), 1, "failed tests");
-     verifyResults(
-       getFailedButWithinSuccessPercentageTests(), 1,
-       "failed_but_within_success_percentage_tests");
-   }   
-
-   public static void ppp(String s) {
-    System.out.println("[Invocation] " + s);
-  }
-  
-}
diff --git a/test/src/test/JUnitTest1.java b/test/src/test/JUnitTest1.java
deleted file mode 100644
index 9cddae3..0000000
--- a/test/src/test/JUnitTest1.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package test;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import test.junit.SetNameTest;
-import test.sample.JUnitSample1;
-import test.sample.JUnitSample2;
-
-
-/**
- * This class
- *
- * @author Cedric Beust, May 5, 2004
- * 
- */
-public class JUnitTest1 extends BaseTest {
-  @BeforeMethod(dependsOnGroups = { "initTest"} )
-  public void initJUnitFlag() {
-    getTest().setJUnit(true);
-  }
-  
-  @Test
-  public void methodsThatStartWithTest() {
-    addClass("test.sample.JUnitSample1");
-    assert getTest().isJUnit();
-    
-    run();
-    String[] passed = {
-        JUnitSample1.EXPECTED1, JUnitSample1.EXPECTED2
-    };
-    String[] failed = {
-    };
-    
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());  
-  }
-  
-  @Test
-  public void methodsWithSetup() {
-    addClass("test.sample.JUnitSample2");
-    run();
-    String[] passed = {
-      "testSample2ThatSetUpWasRun",
-    };
-    String[] failed = {
-    };
-    
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());  
-  }
-  
-  @Test
-  public void testSuite() {
-    addClass("test.sample.AllJUnitTests");
-    run();
-    String[] passed = {
-        JUnitSample1.EXPECTED1, /*JUnitSample1.EXPECTED2,*/
-        JUnitSample2.EXPECTED,
-    };
-    String[] failed = {
-    };
-    
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());  
-  }  
-  
-  @Test
-  public void testNewInstance() {
-    addClass("test.sample.JUnitSample3");
-    run();
-    String[] passed = {
-      "test1", "test2"
-    };
-    String[] failed = {
-    };
-    
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());  
-  }  
-  
-  @Test
-  public void setUpFailingShouldCauseMethodsToBeSkipped() {
-    addClass("test.junit.SetUpExceptionSampleTest");
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-      "testM1"/*, "testM1", "tearDown"*/
-    };
-    String[] skipped = {
-      /*"testM1", "tearDown"*/
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-    verifyTests("Failed", failed, getFailedTests());    
-  }
-
-  @Test
-  public void setNameShouldBeInvoked() {
-    addClass("test.junit.SetNameTest");
-    SetNameTest.m_ctorCount = 0;
-    run();
-    String[] passed = {
-      "testFoo", "testBar",
-    };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-    verifyTests("Failed", failed, getFailedTests());    
-    
-    Assert.assertEquals(SetNameTest.m_ctorCount, 2,
-        "Expected 2 instances to be created, found " + SetNameTest.m_ctorCount);
-  }
-
-  public static void ppp(String s) {
-    System.out.println("[JUnitTest1] " + s);
-  }
-
-
-}
diff --git a/test/src/test/MethodTest.java b/test/src/test/MethodTest.java
deleted file mode 100644
index 2617533..0000000
--- a/test/src/test/MethodTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package test;
-
-import org.testng.annotations.*;
-
-public class MethodTest extends BaseTest {
-  private static final String CLASS_NAME = "test.sample.Sample2";
-
-  @Test(groups = { "current" })
-  public void includeMethodsOnly() {
-    addClass(CLASS_NAME);
-    assert 1 == getTest().getXmlClasses().size();
-    addIncludedMethod(CLASS_NAME, ".*method2");
-    run();
-    String[] passed = {
-      "method2",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test(groups = { "current" })
-  public void excludeMethodsOnly() {
-    addClass(CLASS_NAME);
-    assert 1 == getTest().getXmlClasses().size();
-    addExcludedMethod(CLASS_NAME, ".*method2");
-    run();
-    String[] passed = {
-      "method1", "method3"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void excludePackage() {
-    addClass(CLASS_NAME);
-    assert 1 == getTest().getXmlClasses().size();
-    addExcludedMethod(CLASS_NAME, ".*");
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/Misc.java b/test/src/test/Misc.java
deleted file mode 100644
index 844868a..0000000
--- a/test/src/test/Misc.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test;
-
-import org.testng.annotations.*;
-import org.testng.xml.XmlSuite;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class Misc extends BaseTest {
-
-  @Test
-  public void makeSureSetUpWithParameterWithNoParametersFails() {
-    addClass("test.sample.SetUpWithParameterTest");
-    setVerbose(0);
-//    setParallel(XmlSuite.PARALLEL_METHODS);
-    run();
-    String[] passed = {
-      };
-      // @Configuration failures are not reported in the ITestListener
-      String[] failed = {
-      };
-      String[] skipped = {
-          "test",
-      };
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-      verifyTests("Failed", skipped, getSkippedTests());
-  }
-
-}
diff --git a/test/src/test/ParameterConstructorTest.java b/test/src/test/ParameterConstructorTest.java
deleted file mode 100644
index a43690c..0000000
--- a/test/src/test/ParameterConstructorTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package test;
-
-import static org.testng.Assert.*;
-
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-/**
- * Test parameters passed to constructors
- *
- * @author cbeust
- */
-public class ParameterConstructorTest {
-  private String m_string = null;
-  private int m_int = -1;
-  private boolean m_boolean = false;
-  private byte m_byte = -1;
-  private char m_char = 0;
-  private double m_double = 0.0;
-  private float m_float = 0.0f;
-  private long m_long = 0;
-  private short m_short = 0;
-  
-  @Parameters({ "string", "int", "boolean", "byte", "char", "double",
-      "float", "long", "short"  })
-  public ParameterConstructorTest(String s, int i, boolean bo, byte b, char c,
-      double d, float f, long l, short sh)
-  {
-    m_string = s;
-    m_int = i;
-    m_boolean = bo;
-    m_byte = b;
-    m_char = c;
-    m_double = d;
-    m_float = f;
-    m_long = l;
-    m_short = sh;
-  }
-  
-  @Test
-  public void verify() {
-    assertEquals("Cedric", m_string);
-    assertEquals(42, m_int);
-    assertTrue(m_boolean);
-    assertEquals(43, m_byte);
-    assertEquals('c', m_char);
-    assertEquals(44.0, m_double, 0.1);
-    assertEquals(45.0f, m_float, 0.1);
-    assertEquals(46, m_long);
-    assertEquals(47, m_short);
-  }
-
-}
diff --git a/test/src/test/SampleInheritance.java b/test/src/test/SampleInheritance.java
deleted file mode 100644
index 38651a2..0000000
--- a/test/src/test/SampleInheritance.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package test;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import test.sample.BaseSampleInheritance;
-
-public class SampleInheritance extends BaseSampleInheritance {
-
-  // Test dependency of configuration methods
-  @BeforeClass(groups= { "configuration0"})
-  public void configuration0() {
-    addConfiguration("configuration0");
-//    System.out.println("CONFIGURATION 0");
-  }
-
-  @BeforeClass(dependsOnGroups = { "configuration1"})
-  public void configuration2() {
-    assert m_configurations.size() == 2
-	: "Expected size 2 found " + m_configurations.size();
-    assert "configuration0".equals(m_configurations.get(0))
-	: "Expected configuration0 to be run";
-    assert "configuration1".equals(m_configurations.get(1))
-	: "Expected configuration1 to be run";
-    addConfiguration("configuration2");
-  }
-
-  @Test(dependsOnGroups = { "inheritedTestMethod"} )
-  public void inheritedMethodsWereCalledInOrder() {
-    assert m_invokedBaseMethod : "Didn't invoke test method in base class";
-    assert m_invokedBaseConfiguration : "Didn't invoke configuration method in base class";
-  
-  }
-
-  @Test
-  public void configurationsWereCalledInOrder() {
-    assert m_configurations.size() == 3;
-    assert "configuration0".equals(m_configurations.get(0))
-	: "Expected configuration0 to be run";
-    assert "configuration1".equals(m_configurations.get(1))
-	: "Expected configuration1 to be run";
-    assert "configuration2".equals(m_configurations.get(2))
-	: "Expected configuration1 to be run";
-  }
-}
diff --git a/test/src/test/SimpleBaseTest.java b/test/src/test/SimpleBaseTest.java
deleted file mode 100644
index 8991b16..0000000
--- a/test/src/test/SimpleBaseTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test;
-
-import org.testng.TestNG;
-
-public class SimpleBaseTest {
-
-  protected TestNG create() {
-    TestNG result = new TestNG();
-    result.setVerbose(0);
-    return result;
-  }
-  
-  protected TestNG create(Class testClass) {
-    TestNG result = create();
-    result.setTestClasses(new Class[] { testClass});
-    return result;
-  }
-
-  protected TestNG create(Class[] testClasses) {
-    TestNG result = create();
-    result.setTestClasses(testClasses);
-    return result;
-  }
-}
diff --git a/test/src/test/Test1.java b/test/src/test/Test1.java
deleted file mode 100644
index 9517707..0000000
--- a/test/src/test/Test1.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package test;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Handler;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.testng.annotations.Test;
-
-public class Test1 extends BaseTest {
-  
-  @Test(groups = { "current" })
-  public void includedGroups() {
-    addClass("test.sample.Sample1");
-    assert 1 == getTest().getXmlClasses().size();
-    addIncludedGroup("odd");
-    run();
-    String[] passed = {
-      "method1", "method3",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void groupsOfGroupsSimple() {
-    addClass("test.sample.Sample1");
-    assert 1 == getTest().getXmlClasses().size();
-    // should match all methods belonging to group "odd" and "even"
-    addIncludedGroup("evenodd");
-    List l = new ArrayList<String>();
-    l.add("even");
-    l.add("odd");
-    addMetaGroup("evenodd", l);
-    run();
-   String passed[] = {
-    "method1", "method2", "method3",
-   };
-  String[] failed = {
-  };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }  
-  
-  @Test
-  public void groupsOfGroupsWithIndirections() {
-    addClass("test.sample.Sample1");
-    addIncludedGroup("all");
-    List l = new ArrayList<String>();
-    l.add("methods");
-    l.add("broken");
-    addMetaGroup("all", l);
-    l = new ArrayList<String>();
-    l.add("odd");
-    l.add("even");
-    addMetaGroup("methods", l);
-    addMetaGroup("broken", "broken");
-    run();
-    String[] passed = {
-      "method1", "method2", "method3", "broken"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void groupsOfGroupsWithCycle() {
-    addClass("test.sample.Sample1");
-    addIncludedGroup("all");
-    addMetaGroup("all", "all2");
-    addMetaGroup("all2", "methods");
-    addMetaGroup("methods", "all");
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }  
-
-  @Test // (groups = { "one" })
-  public void excludedGroups() {
-    addClass("test.sample.Sample1");
-    addExcludedGroup("odd");
-    run();
-   String passed[] = {
-    "method2",
-    "broken", "throwExpectedException1ShouldPass",
-    "throwExpectedException2ShouldPass"
-   };
-  String[] failed = {
-      "throwExceptionShouldFail", "verifyLastNameShouldFail"
-  };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }  
-  
-  @Test
-  public void regexp() {
-    addClass("test.sample.Sample1");
-    // should matches all methods belonging to group "odd"
-    addIncludedGroup("o.*");
-    run();
-   String passed[] = {
-      "method1", "method3"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }  
-  
-  @Test(groups = { "currentold" })
-  public void logger() {
-    Logger logger = Logger.getLogger("");
-//    System.out.println("# HANDLERS:" + logger.getHandlers().length);
-    for (Handler handler : logger.getHandlers())
-    {
-      handler.setLevel(Level.WARNING);
-      handler.setFormatter(new org.testng.log.TextFormatter());
-    }
-    logger.setLevel(Level.SEVERE);
-  }
-  
-  static public void ppp(String s) {
-    System.out.println("[Test1] " + s);
-  }
-
-} // Test1
-
-
diff --git a/test/src/test/Test2.java b/test/src/test/Test2.java
deleted file mode 100644
index 1807319..0000000
--- a/test/src/test/Test2.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package test;
-
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
-
-/**
- *
- * @author Cedric Beust, May 5, 2004
- * 
- */
-public class Test2 extends BaseTest {
-  private boolean m_initializedCorrectly = false;
-  private boolean m_initializedIncorrectly = false;
-  
-  @Configuration(beforeTestMethod = true)
-//  @BeforeMethod
-  public void correctSetup() {
-    m_initializedCorrectly = true;
-  }
-  
-  // Shouldn't be called
-  @Configuration(beforeTestMethod = true, groups = "excludeThisGroup")
-//  @BeforeMethod(groups = { "excludeThisGroup"} )
-  public void incorrectSetup() {
-    m_initializedIncorrectly = true;
-  }
-  
-  @Test
-  public void noGroups() {
-    addClass("test.sample.Sample1");
-    run();
-    String[] passed = {
-      "method1", 
-      "method2", "method3",
-      "broken", "throwExpectedException1ShouldPass",
-      "throwExpectedException2ShouldPass"
-    };
-    String[] failed = {
-        "throwExceptionShouldFail", "verifyLastNameShouldFail"
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void setUpWithGroups() {
-    run();
-    assert m_initializedCorrectly && (! m_initializedIncorrectly) :
-      "Wrong set up method was called, correct:" + m_initializedCorrectly +
-      " incorrect:" + m_initializedIncorrectly;
-  }
-  
-  @Test
-  public void partialGroupsClass() {
-    addClass("test.sample.PartialGroupTest");
-    addIncludedGroup("classGroup");
-    run();
-    String[] passed = {
-        "testMethodGroup", "testClassGroup" 
-      };
-      String[] failed = {
-          "testMethodGroupShouldFail", "testClassGroupShouldFail" 
-      };
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-      
-//      ppp("@@@@@@@@@@@@@@@@@@ PASSED TESTS");
-//      for (Object o : getPassedTests().values()) {
-//        ppp("@@@@@@@@@@ PASSED:" + o);
-//      }
-  }
-
-  @Test
-  public void partialGroupsMethod() {
-    addClass("test.sample.PartialGroupTest");
-    addIncludedGroup("methodGroup");
-    run();
-    String[] passed = {
-        "testMethodGroup", 
-      };
-      String[] failed = {
-         "testMethodGroupShouldFail"
-      };
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-  }
-  
-}
diff --git a/test/src/test/TestHelper.java b/test/src/test/TestHelper.java
deleted file mode 100644
index 59166da..0000000
--- a/test/src/test/TestHelper.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package test;
-
-import org.testng.TestNG;
-import org.testng.collections.Lists;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-public class TestHelper {
-
-  public static XmlSuite createSuite(String cls, String suiteName) {
-    XmlSuite result = new XmlSuite();
-    result.setName(suiteName);
-    
-    XmlTest test = new XmlTest(result);
-    test.setName("TmpTest");
-    List<XmlClass> classes = new ArrayList<XmlClass>();
-    classes.add(new XmlClass(cls));
-    test.setXmlClasses(classes);
-    
-    return result;
-  }
-  
-  public static TestNG createTestNG(String outputDir) {
-    return createTestNG(null, outputDir);
-  }
-
-  public static TestNG createTestNG() {
-    return createTestNG(null, null);
-  }
-
-  public static TestNG createTestNG(XmlSuite suite) {
-    return createTestNG(suite, System.getProperty("java.io.tmpdir"));
-  }
-
-  public static TestNG createTestNG(XmlSuite suite, String outputDir) {
-    TestNG result = new TestNG();
-    if (suite != null) {
-      List<XmlSuite> suites = Lists.newArrayList();
-      suites.add(suite);
-      result.setXmlSuites(suites);
-    }
-    if (outputDir == null) {
-      outputDir = createRandomDirectory().getAbsolutePath();
-    }
-    result.setOutputDirectory(outputDir);
-    result.setVerbose(-1);
-    
-    return result;
-  }
-  
-  public static File createRandomDirectory() {
-    String dir = System.getProperty("java.io.tmpdir");
-    String name = "testng-tmp-" + new Random(System.currentTimeMillis()).nextInt();
-    File result = new File(dir + File.separatorChar + name);
-    result.deleteOnExit();
-    result.mkdirs();
-    
-    return result;
-  }
-
-  private static void ppp(String string) {
-    System.out.println("[TestHelper] " + string);
-  }
-
-}
diff --git a/test/src/test/access/BasePrivateAccessConfigurationMethods.java b/test/src/test/access/BasePrivateAccessConfigurationMethods.java
deleted file mode 100644
index f0c9c38..0000000
--- a/test/src/test/access/BasePrivateAccessConfigurationMethods.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.access;
-
-import org.testng.annotations.BeforeMethod;
-
-public class BasePrivateAccessConfigurationMethods {
-  protected boolean m_baseProtected = false;
-  protected boolean m_baseDefault = false;
-  protected boolean m_basePrivate = true;
-  
-  @BeforeMethod
-  void baseDefaultConfBeforeMethod() {
-    m_baseDefault = true;
-  }
-  
-  @BeforeMethod
-  protected void baseProtectedConfBeforeMethod() {
-    m_baseProtected = true;
-  }
-
-  @BeforeMethod
-  private void basePrivateConfBeforeMethod() {
-    m_basePrivate = false;
-  }
-}
diff --git a/test/src/test/access/PrivateAccessConfigurationMethods.java b/test/src/test/access/PrivateAccessConfigurationMethods.java
deleted file mode 100644
index 26d8f6a..0000000
--- a/test/src/test/access/PrivateAccessConfigurationMethods.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.access;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * Test that private and protected @Configuration methods are run
- * 
- * @author cbeust
- */
-public class PrivateAccessConfigurationMethods 
-  extends BasePrivateAccessConfigurationMethods 
-{
-  private boolean m_private = false;
-  private boolean m_default = false;
-  private boolean m_protected = false;
-  private boolean m_public = false;
-  
-  @BeforeMethod
-  private void privateConfBeforeMethod() {
-    m_private = true;
-  }
-
-  @BeforeMethod
-  void defaultConfBeforeMethod() {
-    m_default = true;
-  }
-  
-  @BeforeMethod
-  protected void protectedConfBeforeMethod() {
-    m_protected = true;
-  }
-
-  @BeforeMethod
-  public void publicConfBeforeMethod() {
-    m_public = true;
-  }
-  
-  @Test
-  public void allAccessModifiersConfiguration() {
-    Assert.assertTrue(m_private, "private @Configuration should have been run");
-    Assert.assertTrue(m_default, "default @Configuration should have been run");
-    Assert.assertTrue(m_protected, "protected @Configuration should have been run");
-    Assert.assertTrue(m_public, "public @Configuration should have been run");
-    
-    Assert.assertTrue(m_baseProtected, "protected base @Configuration should have been run"); 
-    Assert.assertTrue(m_baseDefault, "default base @Configuration should have been run"); 
-    Assert.assertTrue(m_basePrivate, "private base @Configuration should not have been run"); 
-    
-  }
-}
diff --git a/test/src/test/alwaysrun/AlwaysRunAfter1.java b/test/src/test/alwaysrun/AlwaysRunAfter1.java
deleted file mode 100644
index 1a86877..0000000
--- a/test/src/test/alwaysrun/AlwaysRunAfter1.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.alwaysrun;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class AlwaysRunAfter1 {
-  private static boolean m_success = false;
-
-  @BeforeClass
-  public void setUpShouldFail() {
-    throw new RuntimeException("Failing in setUp");
-  }
-  
-  @AfterClass(alwaysRun = true)
-  public void tearDown() {
-    m_success = true;
-  }
-  
-  // Adding this method or @Configuration will never be invoked
-  @Test
-  public void dummy() {
-    
-  }
-  
-  static public boolean success() {
-    return m_success;
-  }
-}
diff --git a/test/src/test/alwaysrun/AlwaysRunAfter2.java b/test/src/test/alwaysrun/AlwaysRunAfter2.java
deleted file mode 100644
index f7c7ea3..0000000
--- a/test/src/test/alwaysrun/AlwaysRunAfter2.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.alwaysrun;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
-public class AlwaysRunAfter2 {
-
-  private static boolean m_success = true;
-
-  @BeforeClass
-  public void setUpShouldFail() {
-    throw new RuntimeException("Failing in setUp");
-  }
-  
-  // Should not be run
-  @AfterClass
-  public void tearDown() {
-    m_success = false;
-  }
-  
-  static public boolean success() {
-    return m_success;
-  }
-}
diff --git a/test/src/test/alwaysrun/AlwaysRunBefore1.java b/test/src/test/alwaysrun/AlwaysRunBefore1.java
deleted file mode 100644
index bdfe70c..0000000
--- a/test/src/test/alwaysrun/AlwaysRunBefore1.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package test.alwaysrun;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-/**
- * Tests alwaysRun on a before Configuration method.  Invoke this test
- * by running group "A"
- * 
- * @author cbeust
- * @date Mar 11, 2006
- */
-public class AlwaysRunBefore1 {
-  private static boolean m_beforeSuiteSuccess = false;
-  private static boolean m_beforeTestSuccess = false;
-  private static boolean m_beforeTestClassSuccess = false;
-  private static boolean m_beforeTestMethodSuccess = false;
-  
-  @BeforeSuite(alwaysRun = true)
-  public void initSuite() {
-    m_beforeSuiteSuccess = true;
-  }
-  
-  @BeforeTest(alwaysRun = true)
-  public void initTest() {
-    m_beforeTestSuccess = true;
-  }
-  
-  @BeforeClass(alwaysRun = true)
-  public void initTestClass() {
-    m_beforeTestClassSuccess = true;
-  }
-  
-  @BeforeMethod(alwaysRun = true)
-  public void initTestMethod() {
-    m_beforeTestMethodSuccess = true;
-  }
-  
-  @Test(groups = "A")
-  public void foo() {
-    Assert.assertTrue(m_beforeSuiteSuccess);
-    Assert.assertTrue(m_beforeTestSuccess);
-    Assert.assertTrue(m_beforeTestClassSuccess);
-    Assert.assertTrue(m_beforeTestMethodSuccess);
-  }
-
-  public static boolean success() {
-    return m_beforeSuiteSuccess && m_beforeTestSuccess &&
-      m_beforeTestClassSuccess && m_beforeTestMethodSuccess;
-  }
-
-}
diff --git a/test/src/test/alwaysrun/AlwaysRunTest.java b/test/src/test/alwaysrun/AlwaysRunTest.java
deleted file mode 100644
index 428b9fa..0000000
--- a/test/src/test/alwaysrun/AlwaysRunTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package test.alwaysrun;
-
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-import testhelper.OutputDirectoryPatch;
-
-import static org.testng.Assert.assertTrue;
-
-public class AlwaysRunTest extends SimpleBaseTest {
-  
-  @Test
-  public void withAlwaysRunAfter() {
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG testng = create();
-    testng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    testng.setTestClasses(new Class[] { AlwaysRunAfter1.class });
-    testng.addListener(tla);
-    testng.run();
-    assertTrue(AlwaysRunAfter1.success(), "afterTestMethod should have run");
-  }
-  
-  @Test
-  public void withoutAlwaysRunAfter() {
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG testng = create();
-    testng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    testng.setTestClasses(new Class[] { AlwaysRunAfter2.class });
-    testng.addListener(tla);
-    testng.run();
-    assertTrue(AlwaysRunAfter2.success(), "afterTestMethod should not have run");
-  }
-
-  @Test
-  public void withoutAlwaysRunBefore() {
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG testng = create();
-    testng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    testng.setTestClasses(new Class[] { AlwaysRunBefore1.class });
-    testng.setGroups("A");
-    testng.addListener(tla);
-    testng.run();
-    assertTrue(AlwaysRunBefore1.success(), "before alwaysRun methods should have been run");
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[AlwaysRunTest] " + s);
-  }
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerClassInvocationSampleTest.java b/test/src/test/annotationtransformer/AnnotationTransformerClassInvocationSampleTest.java
deleted file mode 100644
index 72ce228..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerClassInvocationSampleTest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.Test;
-
- at Test(invocationCount = 3)
-public class AnnotationTransformerClassInvocationSampleTest {
-
-  public void f1() {}
-  
-  public void f2() {}
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerClassSampleTest.java b/test/src/test/annotationtransformer/AnnotationTransformerClassSampleTest.java
deleted file mode 100644
index de770e2..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerClassSampleTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.Test;
-
-/**
- * This test will fail unless a time out transformer
- * is applied to it.
- * 
- * @author cbeust
- *
- */
- at Test(timeOut = 1000)
-public class AnnotationTransformerClassSampleTest {
-
-  public void one() {
-    try {
-      Thread.sleep(2000);
-//      ppp("FINISHED SLEEPING");
-    }
-    catch (InterruptedException e) {
-//      ppp("WAS INTERRUPTED");
-      // ignore
-    }
-  }
-
-  private void ppp(String string) {
-    System.out.println("[Transformer] " + string);
-  }
-  
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java b/test/src/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java
deleted file mode 100644
index 7fb13d3..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerDataProviderSampleTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class AnnotationTransformerDataProviderSampleTest {
-
-  @DataProvider
-  public Object[][] dp() {
-    return new Integer[][] {
-        new Integer[] { 42 },
-    };
-  }
-  
-  @Test(dataProvider = "dataProvider")
-  public void f(Integer n) {
-    Assert.assertEquals(n, new Integer(42));
-  }
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerFactorySampleTest.java b/test/src/test/annotationtransformer/AnnotationTransformerFactorySampleTest.java
deleted file mode 100644
index 0f7d387..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerFactorySampleTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Factory;
-
-public class AnnotationTransformerFactorySampleTest {
-  @DataProvider
-  public Object[][] dataProvider() {
-    return new Integer[][] {
-        new Integer[] { 42 },
-    };
-  }
-  
-  @Factory(dataProvider = "dp")
-  public Object[] init(int n) {
-    return new Object[] {
-        new SimpleTest(n)
-    };
-  }
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerInTestngXml.java b/test/src/test/annotationtransformer/AnnotationTransformerInTestngXml.java
deleted file mode 100644
index f1ec2d6..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerInTestngXml.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class AnnotationTransformerInTestngXml implements IAnnotationTransformer {
-
-  @Test(enabled = false)
-  public void shouldRunAfterTransformation() {}
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod) {
-    annotation.setEnabled(true);
-  }
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerSampleTest.java b/test/src/test/annotationtransformer/AnnotationTransformerSampleTest.java
deleted file mode 100644
index 9e42ed4..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerSampleTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-public class AnnotationTransformerSampleTest {
-
-  private int m_two = 0;
-  private int m_five = 0;
-  private int m_three = 0;
-  private int m_four = 0;
-  
-  @Test(invocationCount = 2)
-  public void two() {
-    m_two++;
-    ppp("Should be invoked 2 times");
-  }
-
-  @Test(invocationCount = 5)
-  public void four() {
-    m_four++;
-    ppp("Should be invoked 4 times");
-  }
-  
-  @Test(invocationCount = 5)
-  public void three() {
-    m_three++;
-    ppp("Should be invoked 3 times");
-  }
-
-  @Test
-  public void five() {
-    m_five++;
-    ppp("Should be invoked 5 times");
-  }
-  
-  @Test(dependsOnMethods = {"two", "three", "four", "five"})
-  public void verify() {
-    Assert.assertEquals(m_two, 2);
-    Assert.assertEquals(m_three, 3);
-    Assert.assertEquals(m_four, 4);
-    Assert.assertEquals(m_five, 5);
-    
-  }
-
-  public static void main(String[] argv) {
-    TestNG tng = new TestNG();
-    tng.setAnnotationTransformer(new MyTransformer());
-    tng.setTestClasses(new Class[] { AnnotationTransformerSampleTest.class});
-    
-    tng.run();
-  }
-  
-  private void ppp(String string) {
-    if (false) {
-      System.out.println("[AnnotationTransformerSampleTest] " + string);
-    }
-  }
-}
diff --git a/test/src/test/annotationtransformer/AnnotationTransformerTest.java b/test/src/test/annotationtransformer/AnnotationTransformerTest.java
deleted file mode 100644
index b1b7da7..0000000
--- a/test/src/test/annotationtransformer/AnnotationTransformerTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.Assert;
-import org.testng.IAnnotationTransformer;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.Parser;
-import org.testng.xml.XmlSuite;
-
-import test.SimpleBaseTest;
-
-import java.io.ByteArrayInputStream;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-public class AnnotationTransformerTest extends SimpleBaseTest {
-  
-  /**
-   * Make sure that without a transformer in place, a class-level
-   * annotation invocationCount is correctly used.
-   */
-  @Test
-  public void verifyAnnotationWithoutTransformer() {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { AnnotationTransformerClassInvocationSampleTest.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-    
-    List passed = tla.getPassedTests();
-    Assert.assertEquals(passed.size(), 6);
-  }
-
-  /**
-   * Test a transformer on a method-level @Test
-   */
-  @Test
-  public void verifyAnnotationTransformerMethod() {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setAnnotationTransformer(new MyTransformer());
-    tng.setTestClasses(new Class[] { AnnotationTransformerSampleTest.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-    
-    List passed = tla.getPassedTests();
-    Assert.assertEquals(passed.size(), 15);
-  }
-
-  /**
-   * Without an annotation transformer, we should have zero 
-   * passed tests and one failed test called "one".
-   */
-  @Test
-  public void verifyAnnotationTransformerClass2() {
-    runTest(null, null, "one");
-  }
-  
-  /**
-   * With an annotation transformer, we should have one passed
-   * test called "one" and zero failed tests.
-   */
-  @Test
-  public void verifyAnnotationTransformerClass() {
-    runTest(new MyTimeOutTransformer(), "one", null);
-  }
-  
-  private void runTest(IAnnotationTransformer transformer,
-      String passedName, String failedName)
-  {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    if (transformer != null) {
-      tng.setAnnotationTransformer(transformer);
-    }
-    tng.setTestClasses(new Class[] { AnnotationTransformerClassSampleTest.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-    
-    List<ITestResult> results =
-      passedName != null ? tla.getPassedTests() : tla.getFailedTests();
-    String name = passedName != null ? passedName : failedName;
-      
-    Assert.assertEquals(results.size(), 1);
-    Assert.assertEquals(name, results.get(0).getMethod().getMethodName());
-  }
-
-
-  @Test
-  public void verifyConfigurationTransformer() {
-    TestNG tng = new TestNG();
-    tng.setAnnotationTransformer(new ConfigurationTransformer());
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { ConfigurationSampleTest.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-
-    Assert.assertEquals(ConfigurationSampleTest.getBefore(), "correct");
-  }
-
-  @Test
-  public void verifyDataProviderTransformer() {
-    TestNG tng = create();
-    tng.setAnnotationTransformer(new DataProviderTransformer());
-    tng.setTestClasses(new Class[] { AnnotationTransformerDataProviderSampleTest.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-
-    Assert.assertEquals(tla.getPassedTests().size(), 1);
-  }
-
-  @Test
-  public void verifyFactoryTransformer() {
-    TestNG tng = create();
-    tng.setAnnotationTransformer(new FactoryTransformer());
-    tng.setTestClasses(new Class[] { AnnotationTransformerFactorySampleTest.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-
-    Assert.assertEquals(tla.getPassedTests().size(), 1);
-  }
-
-  @Test
-  public void annotationTransformerInXmlShouldBeRun() throws Exception {
-    String xml = "<suite name=\"SingleSuite\" >" +
-        "  <listeners>" +
-        "    <listener class-name=\"test.annotationtransformer.AnnotationTransformerInTestngXml\" />" +
-        "  </listeners>" +
-        "  <test enabled=\"true\" name=\"SingleTest\">" +
-        "    <classes>" +
-        "      <class name=\"test.annotationtransformer.AnnotationTransformerInTestngXml\" />" +
-        "    </classes>" +
-        "  </test>" +
-        "</suite>"
-        ;
-
-    ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes());
-    Collection<XmlSuite> suites = new Parser(is).parse();
-
-    TestNG tng = create();
-    tng.setXmlSuites(Arrays.asList(suites.toArray(new XmlSuite[0])));
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    tng.run();
-
-    Assert.assertEquals(tla.getPassedTests().size(), 1);
-    
-  }
-}
diff --git a/test/src/test/annotationtransformer/ConfigurationSampleTest.java b/test/src/test/annotationtransformer/ConfigurationSampleTest.java
deleted file mode 100644
index 5b9599a..0000000
--- a/test/src/test/annotationtransformer/ConfigurationSampleTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class ConfigurationSampleTest {
-  private static String m_before = "uninitialized";
-
-  @BeforeClass
-  public void beforeClass() {
-    m_before = "correct";
-  }
-  
-  @BeforeMethod(enabled = false)
-  public void testingEnabledOnConfiguration() {
-    m_before = "this method is not enabled, we should not be here";
-  }
-
-  // will be disabled by the configuration transformer
-  @BeforeMethod
-  public void beforeMethod() {
-    m_before = "incorrect";
-  }
-  
-  @Test
-  public void f() {}
-  
-  public static String getBefore() {
-    return m_before;
-  }
-}
diff --git a/test/src/test/annotationtransformer/ConfigurationTransformer.java b/test/src/test/annotationtransformer/ConfigurationTransformer.java
deleted file mode 100644
index e8c0c4d..0000000
--- a/test/src/test/annotationtransformer/ConfigurationTransformer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.IAnnotationTransformer2;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class ConfigurationTransformer implements IAnnotationTransformer2 {
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod)
-  {
-  }
-
-  public void transform(IConfigurationAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod)
-  {
-    if (annotation.getBeforeTestMethod()) {
-      annotation.setEnabled(false);
-    }
-  }
-
-  public void transform(IDataProviderAnnotation annotation, Method testMethod) {
-  }
-
-  public void transform(IFactoryAnnotation annotation, Method testMethod) {
-  }
-
-}
diff --git a/test/src/test/annotationtransformer/DataProviderTransformer.java b/test/src/test/annotationtransformer/DataProviderTransformer.java
deleted file mode 100644
index 42d1fc2..0000000
--- a/test/src/test/annotationtransformer/DataProviderTransformer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.IAnnotationTransformer2;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class DataProviderTransformer implements IAnnotationTransformer2 {
-
-  public void transform(IConfigurationAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod) 
-  {
-  }
-
-  public void transform(IDataProviderAnnotation annotation, Method testMethod) {
-    annotation.setName("dataProvider");
-  }
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod)
-  {
-  }
-
-  public void transform(IFactoryAnnotation annotation, Method testMethod) {
-  }
-}
diff --git a/test/src/test/annotationtransformer/FactoryTransformer.java b/test/src/test/annotationtransformer/FactoryTransformer.java
deleted file mode 100644
index fa2ddcc..0000000
--- a/test/src/test/annotationtransformer/FactoryTransformer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.IAnnotationTransformer2;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class FactoryTransformer implements IAnnotationTransformer2 {
-
-  public void transform(IConfigurationAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod) 
-  {
-  }
-
-  public void transform(IDataProviderAnnotation annotation, Method testMethod) {
-  }
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod)
-  {
-  }
-
-  public void transform(IFactoryAnnotation annotation, Method testMethod) {
-    annotation.setDataProvider("dataProvider");
-  }
-}
diff --git a/test/src/test/annotationtransformer/MyTimeOutTransformer.java b/test/src/test/annotationtransformer/MyTimeOutTransformer.java
deleted file mode 100644
index 6188471..0000000
--- a/test/src/test/annotationtransformer/MyTimeOutTransformer.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.annotationtransformer;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-import org.testng.annotations.ITestAnnotation;
-import org.testng.IAnnotationTransformer;
-
-public class MyTimeOutTransformer implements IAnnotationTransformer {
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod) 
-  {
-    annotation.setTimeOut(5000); // 5 seconds
-  }
-  
-
-}
diff --git a/test/src/test/annotationtransformer/MyTransformer.java b/test/src/test/annotationtransformer/MyTransformer.java
deleted file mode 100644
index 752332d..0000000
--- a/test/src/test/annotationtransformer/MyTransformer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.annotationtransformer;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-import org.testng.annotations.ITestAnnotation;
-import org.testng.IAnnotationTransformer;
-
-public class MyTransformer implements IAnnotationTransformer {
-
-  public void transform(ITestAnnotation annotation, Class testClass, 
-      Constructor testConstructor, Method testMethod) 
-  {
-    annotation.setTimeOut(10000);
-    if (testMethod != null) {
-      String name = testMethod.getName();
-      if ("three".equals(name)) {
-        annotation.setInvocationCount(3);
-      }
-      else if ("four".equals(name)) {
-        annotation.setInvocationCount(4);
-      }
-      else if ("five".equals(name)) {
-        annotation.setInvocationCount(5);
-      }
-    }
-  }
-
-  private void ppp(String string) {
-    System.out.println("[MyTransformer] " + string);
-  }
-  
-
-
-}
diff --git a/test/src/test/annotationtransformer/SimpleTest.java b/test/src/test/annotationtransformer/SimpleTest.java
deleted file mode 100644
index 81670dc..0000000
--- a/test/src/test/annotationtransformer/SimpleTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.annotationtransformer;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class SimpleTest {
-  private int m_n;
-
-  public SimpleTest(int n) {
-    m_n = n;
-  }
-  
-  @Test
-  public void run() {
-    Assert.assertEquals(m_n, 42);
-  }
-}
diff --git a/test/src/test/ant/TestCommandLineArgs.java b/test/src/test/ant/TestCommandLineArgs.java
deleted file mode 100644
index 023e5af..0000000
--- a/test/src/test/ant/TestCommandLineArgs.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.ant;
-
-import static org.testng.AssertJUnit.assertEquals;
-
-import java.io.File;
-
-import org.testng.TestNGCommandLineArgs;
-import org.testng.annotations.Test;
-
-
-/**
- * Tests some of the functionality in {@link TestNGCommandLineArgs}.
- * 
- * @author jkuhnert
- */
-public class TestCommandLineArgs
-{
-  
-  @Test
-  public void testUnixPathResolution()
-  {
-    String path = "/wee/wom/flibble.txt";
-    
-    String[] segments = path.split("[/\\\\]", -1);
-    
-    assertEquals(4, segments.length);
-    assertEquals("wee", segments[1]);
-  }
-  
-  @Test
-  public void testDOSPathResolution()
-  {
-    String path = "c:\\\\com\\pants\\wibble.txt";
-    
-    String[] segments = path.split("[/\\\\]", -1);
-    
-    assertEquals(5, segments.length);
-    assertEquals("com", segments[2]); // because c: is actually \\ which will be split twice
-  }
-  
-  @Test
-  public void testPathResolution()
-  {
-    File file = new File("build.xml");
-    
-    assert file.exists();
-    
-    String path = file.getAbsolutePath();
-    
-    assert path.split("[/\\\\]", -1).length > 1;
-  }
-}
diff --git a/test/src/test/asserttests/AssertTest.java b/test/src/test/asserttests/AssertTest.java
deleted file mode 100644
index e8bd793..0000000
--- a/test/src/test/asserttests/AssertTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.asserttests;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class AssertTest {
-
-  @Test
-  public void noOrderSuccess() {
-    String[] rto1 = { "boolean", "BigInteger", "List",};
-    String[] rto2 = {  "List", "BigInteger", "boolean",};
-    Assert.assertEqualsNoOrder(rto1, rto2);
-  }
-  
-  @Test(expectedExceptions = AssertionError.class)
-  public void noOrderFailure() {
-    String[] rto1 = { "a", "a", "b",};
-    String[] rto2 = {  "a", "b", "b",};
-    Assert.assertEqualsNoOrder(rto1, rto2);
-  }
-}
diff --git a/test/src/test/attributes/AttributeTest.java b/test/src/test/attributes/AttributeTest.java
deleted file mode 100644
index 079dd4f..0000000
--- a/test/src/test/attributes/AttributeTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.attributes;
-
-import org.testng.ITestContext;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Set;
-
-import junit.framework.Assert;
-
-public class AttributeTest {
-
-  @BeforeClass
-  public void bc(ITestContext ctx) {
-    ctx.setAttribute("test", "1");
-  }
-
-  @Test
-  public void f1(ITestContext ctx) {
-    Set<String> names = ctx.getAttributeNames();
-    Assert.assertEquals(1, names.size());
-    Assert.assertTrue(names.contains("test"));
-    Assert.assertEquals(ctx.getAttribute("test"), "1");
-    Object v = ctx.removeAttribute("test");
-    Assert.assertNotNull(v);
-    ctx.setAttribute("test2", "2");
-  }
-
-  @Test(dependsOnMethods = "f1")
-  public void f2(ITestContext ctx) {
-    Set<String> names = ctx.getAttributeNames();
-    Assert.assertEquals(1, names.size());
-    Assert.assertTrue(names.contains("test2"));
-    Assert.assertTrue(ctx.getAttribute("test2").equals("2"));
-  }
-
-}
diff --git a/test/src/test/classgroup/First.java b/test/src/test/classgroup/First.java
deleted file mode 100644
index f483850..0000000
--- a/test/src/test/classgroup/First.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.classgroup;
-
-import org.testng.annotations.*;
-
- at Test(groups = { "first" })
-public class First {
-  private static boolean m_first1 = false;
-  private static boolean m_first2 = false;
-  
-  @Test
-  public void first1() {
-    m_first1 = true;
-  }
-  
-  @Test
-  public void first2() {
-    m_first2 = true;
-  }
-  
-   static boolean allRun() {
-    return m_first1 && m_first2;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/classgroup/Second.java b/test/src/test/classgroup/Second.java
deleted file mode 100644
index 0fff133..0000000
--- a/test/src/test/classgroup/Second.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.classgroup;
-
-import org.testng.annotations.*;
-
- at Test(dependsOnGroups = { "first" })
-public class Second {
-  
-  @Test
-  public void verify() {
-    assert First.allRun() : "Methods for class First should have been invoked first.";
-  }
-  
-}
\ No newline at end of file
diff --git a/test/src/test/conffailure/ClassWithFailedBeforeSuite.java b/test/src/test/conffailure/ClassWithFailedBeforeSuite.java
deleted file mode 100644
index 29e9eb8..0000000
--- a/test/src/test/conffailure/ClassWithFailedBeforeSuite.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.conffailure;
-
-import org.testng.annotations.BeforeSuite;
-
-public class ClassWithFailedBeforeSuite {
-
-  @BeforeSuite
-  public void setUpShouldFail() {
-    throw new RuntimeException("Failing in setUp");
-  }
-
-}
diff --git a/test/src/test/conffailure/ClassWithFailedBeforeSuiteVerification.java b/test/src/test/conffailure/ClassWithFailedBeforeSuiteVerification.java
deleted file mode 100644
index 88f8730..0000000
--- a/test/src/test/conffailure/ClassWithFailedBeforeSuiteVerification.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.conffailure;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
-public class ClassWithFailedBeforeSuiteVerification {
-
-  private static boolean m_success1 = true;
-  private static boolean m_success2 = true;
-
-  // Should not be run because beforeSuite failed on the other class
-  @BeforeClass
-  public void setUp() {
-    m_success1 = false;
-  }
-
-  // Should not be run because beforeSuite failed on the other class
-  @AfterClass
-  public void tearDown() {
-    m_success2 = false;
-  }
-  
-  static public boolean success() {
-    return m_success1 && m_success2;
-  }
-}
diff --git a/test/src/test/conffailure/ClassWithFailedBeforeTestClass.java b/test/src/test/conffailure/ClassWithFailedBeforeTestClass.java
deleted file mode 100644
index baf2771..0000000
--- a/test/src/test/conffailure/ClassWithFailedBeforeTestClass.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.conffailure;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ClassWithFailedBeforeTestClass {
-  @BeforeClass
-  public void setUpShouldFail() {
-    throw new RuntimeException("Failing in setUp");
-  }
-  
-  // Adding this method or @Configuration will never be invoked
-  @Test
-  public void dummy() {
-    
-  }
-  
-}
diff --git a/test/src/test/conffailure/ClassWithFailedBeforeTestClassVerification.java b/test/src/test/conffailure/ClassWithFailedBeforeTestClassVerification.java
deleted file mode 100644
index 8a4f491..0000000
--- a/test/src/test/conffailure/ClassWithFailedBeforeTestClassVerification.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.conffailure;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ClassWithFailedBeforeTestClassVerification {
-
-  private static boolean m_success1 = false;
-  private static boolean m_success2 = false;
-
-  // Should be run even though ClassWithFailedBeforeTestClass failed in its configuration
-  @BeforeClass
-  public void setUpShouldPass() {
-    m_success1 = true;
-  }
-
-  // Should be run even though ClassWithFailedBeforeTestClass  failed in its configuration
-  @AfterClass
-  public void tearDown() {
-    m_success2 = true;
-  }
-  
-  // Adding this method or @Configuration will never be invoked
-  @Test
-  public void dummy() {
-    
-  }
-  
-  static public boolean success() {
-    return m_success1 && m_success2;
-  }
-}
diff --git a/test/src/test/conffailure/ConfigurationFailure.java b/test/src/test/conffailure/ConfigurationFailure.java
deleted file mode 100644
index 4138d59..0000000
--- a/test/src/test/conffailure/ConfigurationFailure.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package test.conffailure;
-
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import testhelper.OutputDirectoryPatch;
-
-import static org.testng.Assert.assertTrue;
-
-/**
- * Test various cases where the @Configuration methods fail
- * 
- * Created on Jul 20, 2005
- * @author cbeust
- */
-public class ConfigurationFailure {
-  
-  @Test
-  public void beforeTestClassFails() {
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG testng = new TestNG();
-    testng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    testng.setTestClasses(new Class[] { 
-        ClassWithFailedBeforeTestClass.class, 
-        ClassWithFailedBeforeTestClassVerification.class 
-    });
-    testng.addListener(tla);
-    testng.setVerbose(0);
-    testng.run();
-    assertTrue(ClassWithFailedBeforeTestClassVerification.success(), 
-        "Not all the @Configuration methods of Run2 were run");
-  }
-  
-  @Test
-  public void beforeTestSuiteFails() {
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG testng = new TestNG();
-    testng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    testng.setTestClasses(new Class[] { ClassWithFailedBeforeSuite.class, ClassWithFailedBeforeSuiteVerification.class });
-    testng.addListener(tla);
-    testng.setVerbose(0);
-    testng.run();
-    assertTrue(ClassWithFailedBeforeSuiteVerification.success(), 
-        "No @Configuration methods should have run");
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[AlwaysRunTest] " + s);
-  }
-}
diff --git a/test/src/test/configuration/Base.java b/test/src/test/configuration/Base.java
deleted file mode 100644
index 87b42be..0000000
--- a/test/src/test/configuration/Base.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
- at Test(groups = {"base"})
-public class Base {
-  static int m_count;
-  
-  @BeforeTest
-  public void init() {
-    m_count = 0;
-  }
-  
-  @BeforeGroups(groups = "foo")
-  public void beforeGroups() {
-    m_count++;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[Base] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/configuration/Base3.java b/test/src/test/configuration/Base3.java
deleted file mode 100644
index 2fb61f7..0000000
--- a/test/src/test/configuration/Base3.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeGroups;
-
-public class Base3 {
-
-  static private boolean m_before = false;
-
-  /**
-   * @return the m_before
-   */
-  public static boolean getBefore() {
-    return m_before;
-  }
-  
-  @BeforeGroups("cg34-1")
-  public void anotherBefore1() {
-    log("anotherBefore1");
-    Assert.assertFalse(m_before);
-    Assert.assertFalse(ConfigurationGroups3SampleTest.getF1());
-    m_before = true;
-  }
-  
-  private void log(String string) {
-    ppp(string);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[Base3] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/configuration/BaseBeforeTestOrdering.java b/test/src/test/configuration/BaseBeforeTestOrdering.java
deleted file mode 100644
index 7a6daa3..0000000
--- a/test/src/test/configuration/BaseBeforeTestOrdering.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package test.configuration;
-
-public class BaseBeforeTestOrdering {
-
-  public void log(String s) {
-    BeforeTestOrderingTest.addTest(s);
-  }
-}
diff --git a/test/src/test/configuration/BaseGroupsASampleTest.java b/test/src/test/configuration/BaseGroupsASampleTest.java
deleted file mode 100644
index d1fcbb1..0000000
--- a/test/src/test/configuration/BaseGroupsASampleTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.Test;
-
-public class BaseGroupsASampleTest extends Base {
-   @Test(groups = "foo")
-   public void a() {
-//       System.out.println( "a" );
-   }
-}
\ No newline at end of file
diff --git a/test/src/test/configuration/BaseGroupsBSampleTest.java b/test/src/test/configuration/BaseGroupsBSampleTest.java
deleted file mode 100644
index e345dc9..0000000
--- a/test/src/test/configuration/BaseGroupsBSampleTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.Test;
-
-public class BaseGroupsBSampleTest extends Base {
-   @Test(groups = "foo")
-   public void b() {
-//       System.out.println( "b" );
-   }
-}
\ No newline at end of file
diff --git a/test/src/test/configuration/BaseGroupsTest.java b/test/src/test/configuration/BaseGroupsTest.java
deleted file mode 100644
index e7d5f85..0000000
--- a/test/src/test/configuration/BaseGroupsTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-/**
- * Verify that a base class with a BeforeGroups method only gets invoked
- * once, no matter how many subclasses it has
- * 
- * Created on Jan 23, 2007
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class BaseGroupsTest {
-
-    @Test
-    public void verifySingleInvocation() {
-      TestNG tng = new TestNG();
-      tng.setVerbose(0);
-      tng.setTestClasses(new Class[] { 
-          BaseGroupsASampleTest.class,
-          BaseGroupsBSampleTest.class,
-      });
-      TestListenerAdapter tla = new TestListenerAdapter();
-      tng.addListener(tla);
-      
-      tng.run();
-
-      Assert.assertEquals(Base.m_count, 1);
-    }
-    
-    private static void ppp(String s) {
-      System.out.println("[BaseGroupsTest] " + s);
-    }
-}
diff --git a/test/src/test/configuration/BaseSuiteTest.java b/test/src/test/configuration/BaseSuiteTest.java
deleted file mode 100644
index ae7bdb5..0000000
--- a/test/src/test/configuration/BaseSuiteTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.BeforeSuite;
-
-public class BaseSuiteTest {
-  public static List<Integer> m_order;
-  
-  @BeforeSuite
-  public void beforeSuiteParent(){
-    m_order = new ArrayList<Integer>();
-    m_order.add(1);
-  }
-  
-//  @AfterSuite
-//  public void afterSuiteParent(){
-//    m_order.add(5);
-//    System.out.println("AFTER SUITE PARENT");
-//  }
-}
diff --git a/test/src/test/configuration/BeforeClassThreadA.java b/test/src/test/configuration/BeforeClassThreadA.java
deleted file mode 100644
index c940f43..0000000
--- a/test/src/test/configuration/BeforeClassThreadA.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class BeforeClassThreadA {
-    public static long WHEN;
-
-    @BeforeClass(alwaysRun = true)
-    public void setup() throws InterruptedException {
-        WHEN = System.currentTimeMillis();
-        Thread.sleep(2000);
-    }
-
-    @Test
-    public void execute() {
-    }
-}
diff --git a/test/src/test/configuration/BeforeClassThreadB.java b/test/src/test/configuration/BeforeClassThreadB.java
deleted file mode 100644
index fd641df..0000000
--- a/test/src/test/configuration/BeforeClassThreadB.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class BeforeClassThreadB {
-    public static long WHEN;
-
-    @BeforeClass(alwaysRun = true)
-    public void setup() throws InterruptedException {
-        WHEN = System.currentTimeMillis();
-        Thread.sleep(2000);
-    }
-
-    @Test
-    public void execute() {
-    }
-}
diff --git a/test/src/test/configuration/BeforeClassThreadTest.java b/test/src/test/configuration/BeforeClassThreadTest.java
deleted file mode 100644
index ad5b02e..0000000
--- a/test/src/test/configuration/BeforeClassThreadTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.configuration;
-
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-import junit.framework.Assert;
-
-public class BeforeClassThreadTest extends SimpleBaseTest{
-
-    @Test
-    public void beforeClassMethodsShouldRunInParallel() {
-        TestNG tng = create(new Class[] { BeforeClassThreadA.class, BeforeClassThreadB.class });
-        tng.setParallel("methods");
-        tng.run();
-
-        Assert.assertTrue(Math.abs(BeforeClassThreadA.WHEN - BeforeClassThreadB.WHEN) < 1000);
-    }
-}
diff --git a/test/src/test/configuration/BeforeMethodTest.java b/test/src/test/configuration/BeforeMethodTest.java
deleted file mode 100644
index 82f16ef..0000000
--- a/test/src/test/configuration/BeforeMethodTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-public class BeforeMethodTest {
-  private Method m_method;
-  private ITestContext m_context;
-  
-  @BeforeMethod
-  public void before(Method m, ITestContext ctx) {
-    m_method = m;
-    m_context = ctx;
-  }
-  
-  @Test
-  public void mainTest() {
-    Assert.assertEquals(m_method.getName(), "mainTest");
-    ITestNGMethod[] methods = m_context.getAllTestMethods();
-    Assert.assertEquals(1, methods.length);
-    Assert.assertEquals(methods[0].getMethod().getName(), "mainTest");
-    
-  }
-}
diff --git a/test/src/test/configuration/BeforeTestOrdering1Test.java b/test/src/test/configuration/BeforeTestOrdering1Test.java
deleted file mode 100644
index d6f8bdd..0000000
--- a/test/src/test/configuration/BeforeTestOrdering1Test.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-public class BeforeTestOrdering1Test extends BaseBeforeTestOrdering {
-  
-  @BeforeTest
-  public void bt1() {
-    log("bt1");
-  }
-  
-  @AfterTest
-  public void at1() {
-    log("at1");
-  }
-  
-  @Test
-  public void f1() {
-    log("f1");
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[BeforeTestOrdering1Test] " + s);
-  }
-
-}
diff --git a/test/src/test/configuration/BeforeTestOrdering2Test.java b/test/src/test/configuration/BeforeTestOrdering2Test.java
deleted file mode 100644
index fb33662..0000000
--- a/test/src/test/configuration/BeforeTestOrdering2Test.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-public class BeforeTestOrdering2Test extends BaseBeforeTestOrdering{
-  
-  @BeforeTest
-  public void bt2() {
-    log("bt2");
-  }
-  
-  @AfterTest
-  public void at2() {
-    log("at2");
-  }
-
-  @Test
-  public void f2() {
-    log("f2");
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[BeforeTestOrdering2Test] " + s);
-  }
-
-}
diff --git a/test/src/test/configuration/BeforeTestOrderingTest.java b/test/src/test/configuration/BeforeTestOrderingTest.java
deleted file mode 100644
index 13c41a6..0000000
--- a/test/src/test/configuration/BeforeTestOrderingTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.Reporter;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.TestHelper;
-
-public class BeforeTestOrderingTest {
-  private static List<String> m_testNames;
-  
-  @BeforeSuite
-  public void init() {
-    m_testNames = new ArrayList<String>();    
-  }
-  
-  static void addTest(String testName) {
-    m_testNames.add(testName);
-  }
-
-  @Test
-  public void verifyBeforeTestOrdering() {
-    
-    XmlSuite s = new XmlSuite();
-    
-    Reporter.log("BEFORE");
-    
-    XmlTest t1 = new XmlTest(s);
-    XmlClass c1 = new XmlClass("test.configuration.BeforeTestOrdering1Test");
-    t1.getXmlClasses().add(c1); 
-
-    XmlTest t2 = new XmlTest(s);
-    XmlClass c2 = new XmlClass("test.configuration.BeforeTestOrdering2Test");
-    t2.getXmlClasses().add(c2);
-    
-    TestNG tng = TestHelper.createTestNG();
-    TestListenerAdapter tl = new TestListenerAdapter();
-    tng.addListener(tl);
-    tng.setXmlSuites(Arrays.asList(new XmlSuite[] { s }));
-    tng.run();
-    
-    List<String> expected = Arrays.asList(new String[] {
-      "bt1", "f1", "at1", "bt2", "f2", "at2",
-    });
-    
-    Assert.assertEquals(expected, m_testNames);
-  }
-  
-  
-
-  private static void ppp(String s) {
-    System.out.println("[BeforeTestOrderingTest] " + s);
-  }
-  
-}
diff --git a/test/src/test/configuration/ConfigurationGroupBothSampleTest.java b/test/src/test/configuration/ConfigurationGroupBothSampleTest.java
deleted file mode 100644
index 1d4e4d5..0000000
--- a/test/src/test/configuration/ConfigurationGroupBothSampleTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class ConfigurationGroupBothSampleTest {
-  static List<Integer> m_list = new ArrayList<Integer>();
-  
-  @BeforeGroups(groups={"twice"}, value={"twice"})
-  public void a(){
-    ppp("BEFORE()");
-    m_list.add(1);
-  }
-
-  @Test(groups={"twice"}, dataProvider="MyData", invocationCount = 2, threadPoolSize=2)
-  public void b(int a, int b) {
-    m_list.add(2);
-    ppp("B()"  + a + "," + b);
-  }
-
-  @AfterGroups(groups={"twice"}, value={"twice"})
-  public void c(){
-    m_list.add(3);
-    ppp("AFTER()");
-  }
-  
-  @DataProvider(name="MyData")
-  public Object[][] input(){
-    return new Object[][]{ {1,1}, {2,2}, {3,3}};
-  }
-  
-  private void ppp(String string) {
-    if (false) {
-      System.out.println("[A] " + string + " on Thread:" + Thread.currentThread());
-    }
-  }
-  
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroupDataProviderSampleTest.java b/test/src/test/configuration/ConfigurationGroupDataProviderSampleTest.java
deleted file mode 100644
index 8268c04..0000000
--- a/test/src/test/configuration/ConfigurationGroupDataProviderSampleTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class ConfigurationGroupDataProviderSampleTest {
-  static List<Integer> m_list = new ArrayList<Integer>();
-  
-  @BeforeGroups(groups={"twice"}, value={"twice"})
-  public void a(){
-    ppp("BEFORE()");
-    m_list.add(1);
-  }
-
-  @Test(groups={"twice"}, dataProvider="MyData")
-  public void b(int a, int b) {
-    m_list.add(2);
-    ppp("B()"  + a + "," + b);
-  }
-
-  @AfterGroups(groups={"twice"}, value={"twice"})
-  public void c(){
-    m_list.add(3);
-    ppp("AFTER()");
-  }
-  
-  @DataProvider(name="MyData")
-  public Object[][] input(){
-    return new Object[][]{ {1,1}, {2,2}, {3,3}};
-  }
-  
-  private void ppp(String string) {
-    if (false) {
-      System.out.println("[A] " + string);
-    }
-  }
-  
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroupInvocationCountSampleTest.java b/test/src/test/configuration/ConfigurationGroupInvocationCountSampleTest.java
deleted file mode 100644
index ed8d0aa..0000000
--- a/test/src/test/configuration/ConfigurationGroupInvocationCountSampleTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-public class ConfigurationGroupInvocationCountSampleTest {
-  static List<Integer> m_list = new ArrayList<Integer>();
-  
-  @BeforeGroups(groups={"twice"}, value={"twice"})
-  public void a(){
-    ppp("BEFORE()");
-    m_list.add(1);
-  }
-
-  @Test(groups = {"twice"}, invocationCount = 3)
-  public void b() {
-    m_list.add(2);
-    ppp("B()");
-  }
-
-  @AfterGroups(groups={"twice"}, value={"twice"})
-  public void c(){
-    m_list.add(3);
-    ppp("AFTER()");
-  }
-  
-  private void ppp(String string) {
-    if (false) {
-      System.out.println("[A] " + string);
-    }
-  }
-  
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups1SampleTest.java b/test/src/test/configuration/ConfigurationGroups1SampleTest.java
deleted file mode 100644
index 9c57974..0000000
--- a/test/src/test/configuration/ConfigurationGroups1SampleTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-/**
- * Simple beforeGroups test:  1 before method and 2 test method
- * 
- * @author cbeust
- * @date Mar 3, 2006
- */
-public class ConfigurationGroups1SampleTest {
-  private boolean m_before = false;
-  private boolean m_f1 = false;
-  
-  @BeforeGroups("cg1-1")
-  public void before1() {
-    Assert.assertFalse(m_before);
-    Assert.assertFalse(m_f1);
-    m_before = true;
-    log("before1");
-  }
-
-  @Test(groups = "cg1-a")
-  public void fa() {
-    log("fa");
-  }
-  
-  @Test(groups = "cg1-1")
-  public void f1() {
-    Assert.assertTrue(m_before);
-    m_f1 = true;
-    log("f1");
-  }
-  
-  private List<String> m_list = new ArrayList<String>();
-  
-  @Test(dependsOnGroups = {"cg1-a", "cg1-1"})
-  public void verify() {
-    Assert.assertTrue(m_before);
-    Assert.assertTrue(m_f1);
-  }
-  
-  private void log(String s) {
-    m_list.add(s);
-    ppp(s);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationGroups1SampleTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups2SampleTest.java b/test/src/test/configuration/ConfigurationGroups2SampleTest.java
deleted file mode 100644
index 7cfc228..0000000
--- a/test/src/test/configuration/ConfigurationGroups2SampleTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-/**
- * beforeGroups test:  make sure that the beforeGroups method is invoked
- * only once even if two test methods belong to the group
- * 
- * @author cbeust
- * @date Mar 3, 2006
- */
-public class ConfigurationGroups2SampleTest {
-  private boolean m_before = false;
-  private boolean m_f1 = false;
-  private boolean m_g1 = false;
-  
-  @BeforeGroups("cg2-1")
-  public void before1() {
-    Assert.assertFalse(m_before);
-    Assert.assertFalse(m_f1);
-    Assert.assertFalse(m_g1);
-    m_before = true;
-    log("before1");
-  }
-
-  @Test(groups = "cg2-a")
-  public void fa() {
-    log("fa");
-  }
-  
-  @Test(groups = "cg2-1")
-  public void f1() {
-    Assert.assertTrue(m_before);
-    m_f1 = true;
-    log("f1");
-  }
-  
-  @Test(groups = "cg2-1")
-  public void g1() {
-    Assert.assertTrue(m_before);
-    m_g1 = true;
-    log("g1");
-  }
-  
-  private List<String> m_list = new ArrayList<String>();
-  
-  @Test(dependsOnGroups = {"cg2-a", "cg2-1"})
-  public void verify() {
-    Assert.assertTrue(m_before);
-    Assert.assertTrue(m_f1);
-    Assert.assertTrue(m_g1);
-  }
-  
-  private void log(String s) {
-    m_list.add(s);
-    ppp(s);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationGroups2SampleTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups3SampleTest.java b/test/src/test/configuration/ConfigurationGroups3SampleTest.java
deleted file mode 100644
index 51c313b..0000000
--- a/test/src/test/configuration/ConfigurationGroups3SampleTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-/**
- * beforeGroups test:  make sure that if before methods are scattered on
- * more than one class, they are still taken into account
- * 
- * @author cbeust
- * @date Mar 3, 2006
- */
-public class ConfigurationGroups3SampleTest extends Base3 {
-  private boolean m_before = false;
-  static private boolean m_f1 = false;
-  
-  @BeforeGroups("cg34-1")
-  public void before1() {
-    Assert.assertFalse(m_before);
-    Assert.assertFalse(m_f1);
-    m_before = true;
-    log("before1");
-  }
-
-  @Test(groups = "cg34-a")
-  public void fa() {
-    log("fa");
-  }
-  
-  @Test(groups = "cg34-1")
-  public void f1() {
-    Assert.assertTrue(m_before);
-    Assert.assertTrue(Base3.getBefore());
-    m_f1 = true;
-    log("f1");
-  }
-  
-  private List<String> m_list = new ArrayList<String>();
-  
-  @Test(dependsOnGroups = {"cg34-a", "cg34-1"})
-  public void verify() {
-    Assert.assertTrue(m_before);
-    Assert.assertTrue(Base3.getBefore());
-    Assert.assertTrue(m_f1);
-  }
-  
-  private void log(String s) {
-    m_list.add(s);
-    ppp(s);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationGroups3SampleTest] " + s);
-    }
-  }
-
-  public static boolean getF1() {
-    return m_f1;
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups4SampleTest.java b/test/src/test/configuration/ConfigurationGroups4SampleTest.java
deleted file mode 100644
index f0c0a01..0000000
--- a/test/src/test/configuration/ConfigurationGroups4SampleTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.Test;
-
-/**
- * Simple afterGroups test
- * 
- * @author cbeust
- * @date Mar 7, 2006
- */
-public class ConfigurationGroups4SampleTest {
-
-  private boolean m_after = false;
-  private boolean m_run = false;
-
-  @Test
-  public void f() {
-    log("f");
-  }
-  
-  @Test(groups = "cg4-1")
-  public void run() {
-    log("run");
-    Assert.assertFalse(m_after);
-    m_run = true;
-    m_run = true;
-  }
-
-  @AfterGroups("cg4-1")
-  public void after1() {
-    log("after1");
-    Assert.assertTrue(m_run);
-    Assert.assertFalse(m_after);
-    m_after = true;
-  }
-  
-  @Test(dependsOnGroups = "cg4-1")
-  public void verify() {
-    log("verify");
-    Assert.assertTrue(m_run, "run() wasn't run");
-    Assert.assertTrue(m_after, "after1() wasn't run");
-  }
-  
-  private void log(String string) {
-    ppp(string);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationGroups4SampleTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups5SampleTest.java b/test/src/test/configuration/ConfigurationGroups5SampleTest.java
deleted file mode 100644
index 9267b56..0000000
--- a/test/src/test/configuration/ConfigurationGroups5SampleTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.Test;
-
-/**
- * afterGroups test with more than one group
- * 
- * @author cbeust
- * @date Mar 7, 2006
- */
-public class ConfigurationGroups5SampleTest {
-
-  private boolean m_after = false;
-  private boolean m_run1 = false;
-  private boolean m_run2 = false;
-  private int m_afterCount = 0;
-
-  @Test
-  public void f() {
-    log("f");
-  }
-  
-  @Test(groups = "cg5-1")
-  public void run1() {
-    log("run1");
-    if (m_afterCount == 0) Assert.assertFalse(m_after);
-    m_run1 = true;
-  }
-
-  @Test(groups = "cg5-2")
-  public void run2() {
-    log("run2");
-    if (m_afterCount == 0) Assert.assertFalse(m_after);
-    m_run2 = true;
-  }
-
-  @AfterGroups({ "cg5-1", "cg5-2"})
-  public void after() {
-    log("after");
-    m_afterCount++;
-    Assert.assertTrue(m_run1 || m_run2);
-    if (m_afterCount == 0) Assert.assertFalse(m_after);
-    m_after = true;
-  }
-  
-  @Test(dependsOnGroups = { "cg5-1", "cg5-2" })
-  public void verify() {
-    log("verify");
-    Assert.assertTrue(m_run1, "run1() wasn't run");
-    Assert.assertTrue(m_run2, "run2() wasn't run");
-    Assert.assertTrue(m_after, "after1() wasn't run");
-    Assert.assertEquals(2, m_afterCount);
-  }
-  
-  private void log(String string) {
-    ppp(string);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationGroups5SampleTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups6SampleTest.java b/test/src/test/configuration/ConfigurationGroups6SampleTest.java
deleted file mode 100644
index ff19b6a..0000000
--- a/test/src/test/configuration/ConfigurationGroups6SampleTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.Test;
-
-/**
- * afterGroups test when the group contains more than one method
- * 
- * @author cbeust
- * @date Mar 7, 2006
- */
-public class ConfigurationGroups6SampleTest {
-
-  private boolean m_after = false;
-  private boolean m_run1 = false;
-  private boolean m_run2 = false;
-
-  @Test
-  public void f() {
-    log("f");
-  }
-  
-  @Test(groups = "cg6-1")
-  public void run1() {
-    log("run1");
-    Assert.assertFalse(m_after);
-    m_run1 = true;
-  }
-
-  @Test(groups = "cg6-1")
-  public void run2() {
-    log("run2");
-    Assert.assertFalse(m_after);
-    m_run2 = true;
-  }
-
-  @AfterGroups("cg6-1")
-  public void after() {
-    log("after");
-    Assert.assertTrue(m_run1);
-    Assert.assertTrue(m_run2);
-    Assert.assertFalse(m_after);
-    m_after = true;
-  }
-  
-  @Test(dependsOnGroups = { "cg6-1" })
-  public void verify() {
-    log("verify");
-    Assert.assertTrue(m_run1, "run1() wasn't run");
-    Assert.assertTrue(m_run2, "run2() wasn't run");
-    Assert.assertTrue(m_after, "after1() wasn't run");
-  }
-  
-  private void log(String string) {
-    ppp(string);
-  }
-
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationGroups4SampleTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups7SampleTest.java b/test/src/test/configuration/ConfigurationGroups7SampleTest.java
deleted file mode 100644
index f6a35a9..0000000
--- a/test/src/test/configuration/ConfigurationGroups7SampleTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-public class ConfigurationGroups7SampleTest {
-  private List<String> m_log = new ArrayList<String>();
-
-   @BeforeGroups({"A"})
-   private void initA() {
-     m_log.add("1");
-   }
-
-   @Test(groups = {"A"})
-   public void testSomething() {
-     m_log.add("2");
-   }
-
-   @Test(groups = {"A"})
-   public void testSomethingMore() {
-     m_log.add("2");
-   }
-   
-   @AfterGroups({"A"})
-   private void cleanUpA() {
-     m_log.add("3");
-   }
-   
-   @Test(dependsOnGroups = "A")
-   public void verify() {
-     Assert.assertEquals(Arrays.asList(new String[] { "1", "2", "2", "3"}), m_log);
-   }
-
-}
diff --git a/test/src/test/configuration/ConfigurationGroups8SampleTest.java b/test/src/test/configuration/ConfigurationGroups8SampleTest.java
deleted file mode 100644
index feec65e..0000000
--- a/test/src/test/configuration/ConfigurationGroups8SampleTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package test.configuration;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-/**
- * Run with group "A" and "B"
- * Make sure that only methods and configurations belonging to that group
- * get invoked.
- * 
- * @author cbeust
- * @date Mar 9, 2006
- */
-public class ConfigurationGroups8SampleTest {
-  private List<String> m_log = new ArrayList<String>();
-
-  @Test
-  public void dummy() {
-    m_log.add("should not be invoked");
-  }
-  
-  @Test(groups = { "A" })
-  public void testSomething() {
-    m_log.add("1");
-  }
-
-  @Test(groups = { "A" })
-  public void testSomethingMore() {
-    m_log.add("1");
-  }
-
-  @AfterMethod
-  private void cleanUpDummy() {
-    m_log.add("should not be invoked");
-  }
-
-  @AfterMethod(groups = "A")
-  private void cleanUpA() {
-    m_log.add("a");
-  }
-
-  @Test(dependsOnGroups = "A", groups = "B")
-  public void verify() {
-    Assert.assertEquals(Arrays.asList(new String[] { "1", "a", "1", "a" }),
-        m_log);
-  }
-
-}
diff --git a/test/src/test/configuration/ConfigurationInheritGroupsSampleTest.java b/test/src/test/configuration/ConfigurationInheritGroupsSampleTest.java
deleted file mode 100644
index 1a4e28a..0000000
--- a/test/src/test/configuration/ConfigurationInheritGroupsSampleTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
- at Test(groups = { "group1" })
-public class ConfigurationInheritGroupsSampleTest {
-  private boolean m_ok = false;
-
-  @BeforeMethod
-  public void setUp() {
-    m_ok = true;
-  }
-
-  public void test1() { 
-    Assert.assertTrue(m_ok);
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[ConfigurationInheritGroupsSampleTest] " + s);
-  }
-}
diff --git a/test/src/test/configuration/ConfigurationTest.java b/test/src/test/configuration/ConfigurationTest.java
deleted file mode 100644
index 9b13a91..0000000
--- a/test/src/test/configuration/ConfigurationTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-/**
- * Test @Configuration
- * 
- * @author cbeust
- */
-public class ConfigurationTest {
-  private boolean m_beforeSuite = false;
-  private boolean m_afterSuite = false;
-  private boolean m_beforeClass = false;
-  private boolean m_afterClass = false;
-  private boolean m_beforeMethod  = false;
-  private boolean m_afterMethod = false;
-
-  @BeforeSuite
-  public void beforeSuite() {
-    ppp("@@@@ BEFORE_SUITE");
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    assert ! m_beforeClass : "beforeClass shouldn't have run";
-    assert ! m_afterClass : "afterClass shouldn't have run";
-    assert ! m_beforeMethod: "beforeMethod shouldn't have run";
-    assert ! m_afterMethod: "afterMethod shouldn't have run";
-    m_beforeSuite = true;
-  }
-  
-  @BeforeClass
-  public void beforeClass() {
-    ppp("@@@@ BEFORE_CLASS");
-    assert m_beforeSuite : "beforeSuite should have run";
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    assert ! m_beforeClass : "beforeClass shouldn't have run";
-    assert ! m_afterClass : "afterClass shouldn't have run";
-    assert ! m_beforeMethod: "beforeMethod shouldn't have run";
-    assert ! m_afterMethod: "afterMethod shouldn't have run";
-    m_beforeClass = true;
-  }
-
-  @BeforeMethod
-  public void beforeMethod() {
-    ppp("@@@@ BEFORE_METHOD");
-    assert m_beforeSuite : "beforeSuite should have run";
-    assert m_beforeClass : "beforeClass have run";
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    assert ! m_afterClass : "afterClass shouldn't have run";
-    assert ! m_beforeMethod: "beforeMethod shouldn't have run";
-    assert ! m_afterMethod: "afterMethod shouldn't have run";
-    m_beforeMethod = true;
-  }
-  
-  @AfterMethod
-  public void afterMethod() {
-    ppp("@@@@ AFTER_METHOD");
-    assert m_beforeSuite : "beforeSuite should have run";
-    assert m_beforeClass : "beforeClass have run";
-    assert m_beforeMethod: "beforeMethod should have run";
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    assert ! m_afterClass : "afterClass shouldn't have run";
-    assert ! m_afterMethod: "afterMethod shouldn't have run";
-    m_afterMethod = true;
-  }
-
-  @AfterClass
-  public void afterClass() {
-    ppp("@@@@ AFTER_CLASS");
-    assert m_beforeSuite : "beforeSuite should have run";
-    assert m_beforeClass : "beforeClass have run";
-    assert m_beforeMethod: "beforeMethod should have run";
-    assert m_afterMethod: "afterMethod should have run";
-    assert ! m_afterClass : "afterClass shouldn't have run";
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    m_afterClass = true;
-  }
-
-  @AfterSuite
-  public void afterSuite() {
-    ppp("@@@@ AFTER_SUITE");
-    ppp(m_beforeSuite + " " + m_beforeClass + " " + m_beforeMethod
-        + " " + m_afterMethod + " " + m_afterClass + " " + m_afterSuite);
-    assert m_beforeSuite : "beforeSuite should have run";
-    assert m_beforeClass : "beforeClass have run";
-    assert m_beforeMethod: "beforeMethod should have run";
-    assert m_afterMethod: "afterMethod should have run";
-    assert m_afterClass : "afterClass should have run";
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    m_afterSuite = true;
-  }
-
-  @Test
-  public void verify() {
-    ppp("@@@@ VERIFY");
-    assert m_beforeSuite : "beforeSuite should have run";
-    assert m_beforeClass : "beforeClass have run";
-    assert m_beforeMethod: "beforeMethod should have run";
-    assert ! m_afterSuite : "afterSuite shouldn't have run";
-    assert ! m_afterClass : "afterClass shouldn't have run";
-    assert ! m_afterMethod: "afterMethod shouldn't have run";
-  }
-  
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationTest] " + s);
-    }
-  }
-  
-}
diff --git a/test/src/test/configuration/ConfigurationWithParameters.java b/test/src/test/configuration/ConfigurationWithParameters.java
deleted file mode 100644
index 91e3c72..0000000
--- a/test/src/test/configuration/ConfigurationWithParameters.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-public class ConfigurationWithParameters {
-  private String m_param;
-
-  @Parameters({ "param" })
-  @BeforeTest
-  public void testInit(String param) {
-    m_param = param;
-  }
-
-  @Parameters({ "param" })
-  @Test
-  public void testMethod(String param) {
-    Assert.assertEquals(m_param, param);
-  }
-
-}
diff --git a/test/src/test/configuration/ExternalConfigurationClass.java b/test/src/test/configuration/ExternalConfigurationClass.java
deleted file mode 100644
index 34d270e..0000000
--- a/test/src/test/configuration/ExternalConfigurationClass.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package test.configuration;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-
-
-public class ExternalConfigurationClass {
-  public static boolean s_afterMethod;
-  public static boolean s_afterClass;
-  public static boolean s_afterTest;
-
-  @BeforeSuite
-  public void beforeSuite() {
-    MethodCallOrderTest.s_beforeSuite = true;
-  }
-
-  @AfterSuite
-  public void cleanUp() {
-    s_afterMethod = false;
-    s_afterClass = false;
-    s_afterTest = false;
-  }
-
-  @BeforeTest
-  public void beforeTest() {
-    assertTrue(MethodCallOrderTest.s_beforeSuite);
-    assertFalse(MethodCallOrderTest.s_beforeTest);
-    assertFalse(MethodCallOrderTest.s_beforeClass);
-    assertFalse(MethodCallOrderTest.s_beforeMethod);
-    
-    MethodCallOrderTest.s_beforeTest = true;
-  }
-  
-  @AfterTest
-  public void afterTest() {
-    assertTrue(s_afterMethod, "afterTestMethod should have been run");
-    assertTrue(s_afterClass, "afterTestClass should have been run");
-    assertFalse(s_afterTest, "afterTest should haven't been run");
-    s_afterTest = true;
-  }
-  
-  @AfterSuite
-  public void afterSuite() {
-    assertTrue(s_afterMethod, "afterTestMethod should have been run");
-    assertTrue(s_afterClass, "afterTestClass should have been run");
-    assertTrue(s_afterTest, "afterTest should have been run");
-  }
-}
diff --git a/test/src/test/configuration/GroupsTest.java b/test/src/test/configuration/GroupsTest.java
deleted file mode 100644
index 13938fc..0000000
--- a/test/src/test/configuration/GroupsTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package test.configuration;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class GroupsTest {
-  
-  private TestNG m_testNg;
-  
-  @BeforeMethod
-  public void setUp() {
-    m_testNg = new TestNG();
-    m_testNg.setVerbose(0);
-  }
-
-  @Test
-  public void verifyDataProviderAfterGroups() {
-    runTest(ConfigurationGroupDataProviderSampleTest.class, 
-        ConfigurationGroupDataProviderSampleTest.m_list,
-        Arrays.asList(new Integer[] {
-            1, 2, 2, 2, 3
-      }));
-  }
-  
-  @Test
-  public void verifyParametersAfterGroups() {
-    runTest(ConfigurationGroupInvocationCountSampleTest.class, 
-        ConfigurationGroupInvocationCountSampleTest.m_list,
-        Arrays.asList(new Integer[] {
-            1, 2, 2, 2, 3
-      }));
-  }
-
-  @Test
-  public void verifyBothAfterGroups() {
-    runTest(ConfigurationGroupBothSampleTest.class, 
-        ConfigurationGroupBothSampleTest.m_list,
-        Arrays.asList(new Integer[] {
-          1, 2, 2, 2, 2, 2, 2, 3
-      }));
-  }
-  
-  private void runTest(Class cls, List<Integer> list, List<Integer> expected) {
-      m_testNg.setTestClasses(new Class[] { 
-          cls 
-      });
-      m_testNg.run();
-      
-      Assert.assertEquals(list, expected);
-  }
-}
diff --git a/test/src/test/configuration/MethodCallOrderTest.java b/test/src/test/configuration/MethodCallOrderTest.java
deleted file mode 100644
index 78486c5..0000000
--- a/test/src/test/configuration/MethodCallOrderTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package test.configuration;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class MethodCallOrderTest {
-  public static boolean s_beforeSuite;
-  public static boolean s_beforeTest;
-  public static boolean s_beforeClass;
-  public static boolean s_beforeMethod;
-
-  @BeforeClass
-  public void beforeClass() {
-    assertTrue(s_beforeSuite);
-    assertTrue(s_beforeTest);
-    assertFalse(s_beforeClass);
-    assertFalse(s_beforeMethod);
-    
-    s_beforeClass = true;
-  }
-  
-  @AfterSuite
-  public void cleanUp() {
-    s_beforeSuite = false;
-    s_beforeTest = false;
-    s_beforeClass = false;
-    s_beforeMethod = false;
-  }
-
-  
-  @BeforeMethod
-  public void beforeMethod() {
-    assertTrue(s_beforeSuite);
-    assertTrue(s_beforeTest);
-    assertTrue(s_beforeClass);
-    assertFalse(s_beforeMethod);
-    s_beforeMethod = true;
-  }
-  
-  @Test
-  public void realTest() {
-    assertTrue(s_beforeSuite);
-    assertTrue(s_beforeTest);
-    assertTrue(s_beforeClass);
-    assertTrue(s_beforeMethod);
-  }
-  
-  @AfterMethod
-  public void afterMethod() {
-    assertFalse(ExternalConfigurationClass.s_afterMethod, "afterTestMethod shouldn't have been run");
-    assertFalse(ExternalConfigurationClass.s_afterClass, "afterTestClass shouldn't have been run");
-    assertFalse(ExternalConfigurationClass.s_afterTest, "afterTest should haven't been run");
-
-    ExternalConfigurationClass.s_afterMethod = true;
-  }
-  
-  @AfterClass
-  public void afterClass() {
-    assertTrue(ExternalConfigurationClass.s_afterMethod, "afterTestMethod should have been run");
-    assertFalse(ExternalConfigurationClass.s_afterClass, "afterTestClass shouldn't have been run");
-    assertFalse(ExternalConfigurationClass.s_afterTest, "afterTest should haven't been run");
-    ExternalConfigurationClass.s_afterClass = true;
-  }
-}
diff --git a/test/src/test/configuration/MultipleBeforeGroupTest.java b/test/src/test/configuration/MultipleBeforeGroupTest.java
deleted file mode 100644
index e4b3182..0000000
--- a/test/src/test/configuration/MultipleBeforeGroupTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.configuration;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
- at Test( groups = "foo" )
-public class MultipleBeforeGroupTest {
-  private int m_count = 0;
-  
-  @BeforeGroups( "foo" )
-  public void beforeGroups() {
-    m_count++;
-  }
-
-  @Test()
-  public void test() {
-  }
-  
-  @Test(dependsOnMethods = "test")
-  public void verify() {
-    Assert.assertEquals(1, m_count);
-  }
-
-}
diff --git a/test/src/test/configuration/ReflectMethodParametrizedConfigurationMethodTest.java b/test/src/test/configuration/ReflectMethodParametrizedConfigurationMethodTest.java
deleted file mode 100644
index 1197cc8..0000000
--- a/test/src/test/configuration/ReflectMethodParametrizedConfigurationMethodTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.configuration;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class ReflectMethodParametrizedConfigurationMethodTest {
-  private Map<String, String> m_before= new HashMap<String, String>();
-  private Map<String, String> m_after= new HashMap<String, String>();
-  
-  @BeforeMethod
-  public void beforeMethod(Method tobeInvokedTestMethod) {
-    m_before.put(tobeInvokedTestMethod.getName(), tobeInvokedTestMethod.getName());
-  }
-  
-  @Test
-  public void test1() {}
-  
-  @Test
-  public void test2() {}
-  
-  @AfterMethod
-  public void afterMethod(Method invokedTestMethod) {
-    m_after.put(invokedTestMethod.getName(), invokedTestMethod.getName());
-  }
-  
-  @AfterClass
-  public void assertBeforeAfterMethodsInvocations() {
-    Assert.assertTrue(m_before.containsKey("test1"), "@Test method should have been passed to @BeforeMethod");
-    Assert.assertTrue(m_before.containsKey("test2"), "@Test method should have been passed to @BeforeMethod");
-    Assert.assertTrue(m_after.containsKey("test1"), "@Test method should have been passed to @AfterMethod");
-    Assert.assertTrue(m_before.containsKey("test2"), "@Test method should have been passed to @AfterMethod");
-  }
-}
diff --git a/test/src/test/configuration/SuiteFactoryOnceSample1Test.java b/test/src/test/configuration/SuiteFactoryOnceSample1Test.java
deleted file mode 100644
index 12976ed..0000000
--- a/test/src/test/configuration/SuiteFactoryOnceSample1Test.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-public class SuiteFactoryOnceSample1Test {
-  public static int m_before = 0;
-  public static int m_after = 0;
-  
-  @BeforeSuite
-  public void bs() {
-    m_before++;
-  }
-
-  @AfterSuite
-  public void as() {
-    m_after++;
-  }
-
-  @Test
-  public void g1() {
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/configuration/SuiteFactoryOnceSample2Test.java b/test/src/test/configuration/SuiteFactoryOnceSample2Test.java
deleted file mode 100644
index d5bbfcb..0000000
--- a/test/src/test/configuration/SuiteFactoryOnceSample2Test.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.Factory;
-
-public class SuiteFactoryOnceSample2Test {
-
-  @Factory
-  public Object[] factory() {
-    return new Object[] { new SuiteFactoryOnceSample1Test(), new SuiteFactoryOnceSample1Test() }; 
-  }
-}
diff --git a/test/src/test/configuration/SuiteFactoryOnceTest.java b/test/src/test/configuration/SuiteFactoryOnceTest.java
deleted file mode 100644
index ad4192f..0000000
--- a/test/src/test/configuration/SuiteFactoryOnceTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.configuration;
-
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import junit.framework.Assert;
-
-import test.SimpleBaseTest;
-
-public class SuiteFactoryOnceTest extends SimpleBaseTest {
-
-  @Test
-  public void suiteMethodsShouldOnlyRunOnce() {
-    TestNG tng = create(SuiteFactoryOnceSample2Test.class);
-    SuiteFactoryOnceSample1Test.m_before = 0;
-    SuiteFactoryOnceSample1Test.m_after = 0;
-    tng.run();
-
-    Assert.assertEquals(1, SuiteFactoryOnceSample1Test.m_before);
-    Assert.assertEquals(1, SuiteFactoryOnceSample1Test.m_after);
-  }
-  
-}
diff --git a/test/src/test/configuration/SuiteTest.java b/test/src/test/configuration/SuiteTest.java
deleted file mode 100644
index dd70b71..0000000
--- a/test/src/test/configuration/SuiteTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.configuration;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-public class SuiteTest extends BaseSuiteTest {
-  @BeforeSuite(dependsOnMethods={"beforeSuiteParent"})
-  public void beforeSuiteChild(){
-    m_order.add(2);
-  }
-
-//  @AfterSuite(dependsOnMethods={"afterSuiteParent"})
-//  public void afterSuiteChild(){
-//    m_order.add(4);
-//    System.out.println("AFTER SUITE CHILD");
-//  }
-
-  @Test
-  public void test1(){
-    m_order.add(3);
-  }
-}
diff --git a/test/src/test/configuration/VerifySuiteTest.java b/test/src/test/configuration/VerifySuiteTest.java
deleted file mode 100644
index a9302f5..0000000
--- a/test/src/test/configuration/VerifySuiteTest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.configuration;
-
-import java.util.Arrays;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterSuite;
-
-public class VerifySuiteTest {
-
-  @AfterSuite
-  public void verify() {
-    Assert.assertEquals(Arrays.asList(1, 2, 3), SuiteTest.m_order);
-  }
-}
diff --git a/test/src/test/convert/JUnitConverterTest.java b/test/src/test/convert/JUnitConverterTest.java
deleted file mode 100644
index 0d45100..0000000
--- a/test/src/test/convert/JUnitConverterTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.convert;
-
-import org.testng.junit.JUnitDirectoryConverter;
-
-import java.io.File;
-
-/**
- * Test unit for JUnitDirectoryConverter
- *
- * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
- */
-public class JUnitConverterTest {
-   private File m_output;
-
-   /**
-    * @testng.test parameters="inputDir"
-    */
-   public void convert(String inputDir) {
-      System.out.println("convert");
-      m_output = new File(inputDir, "generated");
-      m_output.mkdirs();
-
-      JUnitDirectoryConverter convertor = new JUnitDirectoryConverter(new File(inputDir),
-            m_output,
-            "1.4",
-            false, null);
-
-      int result = convertor.convert();
-      assert 2 == result : "Expected number of tests 2, found " + result;
-   }
-
-   /**
-    * @testng.configuration afterTestMethod=true
-    */
-   public void clean() {
-      File[] files = m_output.listFiles();
-
-      for(int i = 0; i < files.length; i++) {
-         files[i].delete();
-      }
-
-      m_output.delete();
-   }
-}
diff --git a/test/src/test/converter/ConverterSample1.java b/test/src/test/converter/ConverterSample1.java
deleted file mode 100644
index 2d51b24..0000000
--- a/test/src/test/converter/ConverterSample1.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.converter;
-
-import junit.framework.TestCase;
-
-
-public class ConverterSample1 extends TestCase {
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        int classId =10;
-        String className = "ajay";
-
-    }
-
-    protected void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    public final void testClassJunit() {
-      int classId = 10;
-        String className = "nspe";
-    }
-
-
-    public final void testSetClassId() {
-        int classId = 12;
-    }
-
-    public final void testSetClassName() {
-        String className = "account";
-    }
-
-}
diff --git a/test/src/test/converter/JUnitConverterTest.java b/test/src/test/converter/JUnitConverterTest.java
deleted file mode 100644
index 6f7eb57..0000000
--- a/test/src/test/converter/JUnitConverterTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package test.converter;
-
-import org.testng.Assert;
-import org.testng.JUnitConverter;
-import org.testng.annotations.Test;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Pattern;
-
-public class JUnitConverterTest {
-  
-  /**
-   * 
-   * @param fileName The filename to parse
-   * @param regexp The regular expression
-   * @param resultLines An out parameter that will contain all the lines
-   * that matched the regexp
-   * @return A List<Integer> containing the lines of all the matches
-   * 
-   * Note that the size() of the returned valuewill always be equal to 
-   * result.size() at the end of this function.
-   */
-  static public List grep(File fileName, String regexp, List resultLines) {
-    List resultLineNumbers = new ArrayList();
-    try {
-      BufferedReader fr = new BufferedReader(new FileReader(fileName));
-      String line = fr.readLine();
-      int currentLine = 0;
-      Pattern p = Pattern.compile(".*" + regexp + ".*");
-      
-      while (null != line) {
-//        ppp("COMPARING " + p + " TO @@@" + line + "@@@");
-         if (p.matcher(line).matches()) {
-           resultLines.add(line);
-           resultLineNumbers.add(currentLine);
-         }
-         
-         line = fr.readLine();
-         currentLine++;
-      }
-    }
-    catch (FileNotFoundException e) {
-      e.printStackTrace();
-    }
-    catch (IOException e) {
-      e.printStackTrace();
-    }
-    
-    return resultLineNumbers;
-    
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[JUnitConverterTest] " + s);
-  }
-  
-  /**
-   * @param fileName
-   * @param tag
-   * @param annotationType
-   * @param expected A list of line numbers where the tag is expected
-   * to be present
-   */
-  private void runTest(File sourceDir, String packageName, String fileName, String tag, 
-      String annotationType, List expected) 
-  {
-    String outputDir = System.getProperty("java.io.tmpdir");
-    String packageDir = packageName.replace('.', File.separatorChar);
-    List args = new ArrayList();
-    args.add("-quiet");
-    args.add(annotationType);
-    args.add("-srcdir");
-    args.add(sourceDir.getAbsolutePath());
-    args.add("-d");
-    args.add(outputDir);
-    String[] argv = (String[]) args.toArray(new String[args.size()]);
-    JUnitConverter.main(argv);
-    
-    List resultLines = new ArrayList();
-    File file = new File(outputDir, packageDir + File.separatorChar + fileName);
-    List actualLineNumbers = grep(file, tag, resultLines);
-    Assert.assertEquals(actualLineNumbers, expected, file + "\n    tag:" + tag);
-    
-  }
-  
-  private void runJavaDocTest(File sourcePath, String pkg, String fileName, List[] expected) {
-    runTest(sourcePath, pkg, fileName, "@testng.test", "-javadoc", expected[0]);
-    runTest(sourcePath, pkg, fileName, "@testng.before-method", "-javadoc", expected[1]);
-    runTest(sourcePath, pkg, fileName, "@testng.after-method", "-javadoc", expected[2]);
-  }
-
-  private void runAnnotationTest(File sourcePath, String pkg, String fileName, List[] expected) {
-    runTest(sourcePath, pkg, fileName, "@Test", "-annotation", expected[0]);
-    runTest(sourcePath, pkg, fileName, "@BeforeMethod", "-annotation", expected[1]);
-    runTest(sourcePath, pkg, fileName, "@AfterMethod", "-annotation", expected[2]);
-  }
-
-  @Test(parameters = { "source-directory" })
-  public void testAnnotations(String dir) {
-    runAnnotationTest(new File(dir),  "test.converter", "ConverterSample1.java", 
-        new List[] { Arrays.asList(23, 30, 35), Arrays.asList(9), Arrays.asList(18) });
-  }
-  
-  @Test(parameters = { "source-directory" })
-  public void testAnnotationsNoPackage(String dir) {
-    runAnnotationTest(new File(dir, "../../.."),  "", "ConverterSample2.java", 
-        new List[] { Arrays.asList(23, 30, 35), Arrays.asList(9), Arrays.asList(18) });
-  }
-  
-  @Test(parameters = { "source-directory" })
-  public void testJavaDoc(String dir) {
-    runJavaDocTest(new File(dir),  "test.converter", "ConverterSample1.java", 
-        new List[] { Arrays.asList(25, 34, 41), Arrays.asList(7), Arrays.asList(18) });
-  }
-
-  @Test(parameters = { "source-directory" })
-  public void testJavaDocNoPackage(String dir) {
-    runJavaDocTest(new File(dir, "../../.."),  "", "ConverterSample2.java",
-        new List[] { Arrays.asList(25, 34, 41), Arrays.asList(7), Arrays.asList(18) });
-  }
-
-  
-}
diff --git a/test/src/test/cyclic/AbstractGenericTests.java b/test/src/test/cyclic/AbstractGenericTests.java
deleted file mode 100644
index 62c78ce..0000000
--- a/test/src/test/cyclic/AbstractGenericTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.cyclic;
-
-import org.testng.annotations.Test;
-
-public abstract class AbstractGenericTests extends BaseIntegrationTest {
-
-    @Test(groups="integration")
-    public final void testSomething() {
-        //...
-    }
-
- }
-
diff --git a/test/src/test/cyclic/BaseIntegrationTest.java b/test/src/test/cyclic/BaseIntegrationTest.java
deleted file mode 100644
index 53a5bd6..0000000
--- a/test/src/test/cyclic/BaseIntegrationTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.cyclic;
-
-import org.testng.annotations.BeforeClass;
-
-public abstract class BaseIntegrationTest {
-
-    @BeforeClass(groups="integration")
-    protected void initIntegrationTesting() {
-        //...
-    }
-
-    @BeforeClass(groups="integration")
-    void executeBeforeClassDbOperations() {
-        //...
-    }
-
- }
-
diff --git a/test/src/test/cyclic/HibernateConcreteTests.java b/test/src/test/cyclic/HibernateConcreteTests.java
deleted file mode 100644
index 070016c..0000000
--- a/test/src/test/cyclic/HibernateConcreteTests.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.cyclic;
-
-import org.testng.annotations.Test;
-
-public class HibernateConcreteTests extends AbstractGenericTests {
-
-    @Test(groups="integration")
-    public void testSomethingElse() {
-        //...
-    }
-
- }
\ No newline at end of file
diff --git a/test/src/test/cyclic/SomeConcreteTests.java b/test/src/test/cyclic/SomeConcreteTests.java
deleted file mode 100644
index 2f27a85..0000000
--- a/test/src/test/cyclic/SomeConcreteTests.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.cyclic;
-
-import org.testng.annotations.Test;
-
-public class SomeConcreteTests extends AbstractGenericTests {
-
-    @Test(groups="integration")
-    public void testSomethingElse() {
-        //...
-    }
-
- }
\ No newline at end of file
diff --git a/test/src/test/dataprovider/BooleanTest.java b/test/src/test/dataprovider/BooleanTest.java
deleted file mode 100644
index e14e79e..0000000
--- a/test/src/test/dataprovider/BooleanTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class BooleanTest {
-  private boolean m_false = false;
-  private boolean m_true = false;
-  
-  @Test(dataProvider = "allBooleans")
-  public void doStuff(boolean t) {
-    if (t) m_true = true;
-    if (! t) m_false = true;
-  }
-  
-  @Test(dependsOnMethods = {"doStuff"} )
-  public void verify() {
-    Assert.assertTrue(m_true);
-    Assert.assertTrue(m_false);    
-  }
-
-  private void ppp(String string) {
-    System.out.println("[BooleanTest] " + string);
-  }
-
-  @DataProvider(name = "allBooleans")
-  public Object[][] createData() {
-    return new Object[][] {
-      new Object[] { true },
-      new Object[] { false },
-    };
-  }
- 
-}
diff --git a/test/src/test/dataprovider/ClassSampleTest.java b/test/src/test/dataprovider/ClassSampleTest.java
deleted file mode 100644
index 175a1ca..0000000
--- a/test/src/test/dataprovider/ClassSampleTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
- at Test(dataProvider = "dp")
-public class ClassSampleTest {
-
-  @DataProvider
-  public Object[][] dp() {
-    return new Object[][] {
-        new Object[] { "a" },
-        new Object[] { "b" },
-    };
-  }
-
-  public void f(String a) {
-  }
-
-  public void g(String a) {
-  }    
-
-}
diff --git a/test/src/test/dataprovider/ClassTest.java b/test/src/test/dataprovider/ClassTest.java
deleted file mode 100644
index 56df444..0000000
--- a/test/src/test/dataprovider/ClassTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class ClassTest extends BaseTest {
-  @Test(groups = { "current" })
-  public void includeMethodsOnly() {
-    addClass(ClassSampleTest.class.getName());
-    run();
-    String[] passed = {
-      "f", "g"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-}
diff --git a/test/src/test/dataprovider/ConfigurationAndDataProvidersTest.java b/test/src/test/dataprovider/ConfigurationAndDataProvidersTest.java
deleted file mode 100644
index 85c3a5e..0000000
--- a/test/src/test/dataprovider/ConfigurationAndDataProvidersTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-/**
- * Make sure that all before methods except beforeTestMethod are invoked
- * before DataProvider.
- * 
- * Created on Jan 19, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class ConfigurationAndDataProvidersTest {
-  private boolean m_beforeSuite = false;
-  private boolean m_beforeTest = false;
-  private boolean m_beforeClass = false;
-  private boolean m_beforeTestMethod = false;
-  
-  @DataProvider(name = "test1")
-  public Object[][] createData() {
-    Assert.assertTrue(m_beforeSuite, "beforeSuite should have been invoked"); 
-    Assert.assertTrue(m_beforeTest, "beforeTest should have been invoked"); 
-    Assert.assertTrue(m_beforeClass, "beforeClass should have been invoked"); 
-    Assert.assertFalse(m_beforeTestMethod, "beforeMethod should not have been invoked"); 
-    return new Object[][] { new Object[] { "Test" } };
-  }
-
-  @Test(dataProvider = "test1")
-  public void verifyNames(Object p) {
-    // do nothing
-  }
-  
-  
-  @BeforeSuite
-  public void setUpSuite () {
-    m_beforeSuite  = true;
-    ppp("BEFORE SUITE");
-  }
-  
-  @BeforeTest
-  public void setUpTest() {
-    m_beforeTest = true;
-    ppp("BEFORE TEST");
-  }
-  
-  @BeforeClass
-  public void setUpClass() {
-    m_beforeClass = true;
-    ppp("BEFORE TEST CLASS");
-  }
-  
-  @BeforeMethod
-  public void setUp() {
-    m_beforeTestMethod = true;
-    ppp("BEFORE TEST METHOD");
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[ConfigurationAndDataProvidersTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/dataprovider/CreateDataTest.java b/test/src/test/dataprovider/CreateDataTest.java
deleted file mode 100644
index b9053d8..0000000
--- a/test/src/test/dataprovider/CreateDataTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class CreateDataTest {
-  
-  /**
-   * @testng.data-provider name = "create-data"
-   */
-  @DataProvider(name = "create-data")
-  public Object[][] create() {
-         return new Object[][] {
-                 new Object[] { new MyObject() }
-         };
-  }
-
-  /**
-   * @testng.test data-provider = "create-data"
-   */
-  @Test(dataProvider = "create-data")
-  public void testMyTest(MyObject o) {
-   // do something with o
-  }
-
-
-}
-
-class MyObject {}
diff --git a/test/src/test/dataprovider/DataProviderAsTest.java b/test/src/test/dataprovider/DataProviderAsTest.java
deleted file mode 100644
index 76b1c32..0000000
--- a/test/src/test/dataprovider/DataProviderAsTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-
-/**
- * Test that if a class @Test is used, the @DataProvider
- * method won't be considered as a test.
- */
- at Test
-public class DataProviderAsTest {
-  
-  public void f() {
-  }
-  
-  @DataProvider
-  public Object[][] dataProvider() {
-    throw new RuntimeException();
-  }
-
-}
diff --git a/test/src/test/dataprovider/DependentSampleTest.java b/test/src/test/dataprovider/DependentSampleTest.java
deleted file mode 100644
index 11b8a6e..0000000
--- a/test/src/test/dataprovider/DependentSampleTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class DependentSampleTest {
-  @DataProvider(name = "data")
-  public Object[][] dp() {
-      return new Object[][] { { "ok" }, { "not ok" }, };
-  }
-
-  @Test(groups = { "a" }, dataProvider = "data")
-  public void method1(String s) {
-      if (!"ok".equals(s)) {
-          throw new RuntimeException("error " + s);
-      }
-  }
-
-  @Test(groups = { "b" }, dependsOnGroups = { "a" })
-  public void method2() throws InterruptedException {
-  }
-}
diff --git a/test/src/test/dataprovider/FailedDataProviderSample.java b/test/src/test/dataprovider/FailedDataProviderSample.java
deleted file mode 100644
index 5ad85ef..0000000
--- a/test/src/test/dataprovider/FailedDataProviderSample.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class FailedDataProviderSample {
-  @DataProvider
-  public Object[][] dp() {
-    return new Integer[][] {
-        new Integer[] { 1 },
-        new Integer[] { 2 },
-        new Integer[] { 3 },
-    };
-  }
-  
-  @Test(dataProvider = "dp")
-  public void f(int n) {
-    FailedDataProviderTest.m_total += n;
-    if (n == 2) {
-      throw new RuntimeException("Failed")  ;
-    }
-  }
-  
-}
diff --git a/test/src/test/dataprovider/FailedDataProviderTest.java b/test/src/test/dataprovider/FailedDataProviderTest.java
deleted file mode 100644
index c55a3cf..0000000
--- a/test/src/test/dataprovider/FailedDataProviderTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class FailedDataProviderTest extends BaseTest {
-  static int m_total = 0;
-
-  @BeforeMethod
-  public void init() {
-    m_total = 0;
-  }
-
-  /**
-   * Make sure that if a test method fails in the middle of a data provider, the rest
-   * of the data set is still run.
-   */
-  @Test
-  public void allMethodsShouldBeInvoked() {
-    TestNG tng = new TestNG();
-    tng.setTestClasses(new Class[] { FailedDataProviderSample.class });
-    tng.setVerbose(0);
-    tng.run();
-
-    Assert.assertEquals(m_total, 6);
-  }
-
-  @Test
-  public void failedDataProviderShouldCauseSkip() {
-    addClass("test.dataprovider.DependentSampleTest");
-    
-    run();
-    String[] passed = {
-      "method1"
-    };
-    String[] failed = {
-      "method1"
-    };
-    String[] skipped = {
-      "method2"
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-}
-
diff --git a/test/src/test/dataprovider/FailingDataProvider.java b/test/src/test/dataprovider/FailingDataProvider.java
deleted file mode 100644
index e325d61..0000000
--- a/test/src/test/dataprovider/FailingDataProvider.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class FailingDataProvider {
-  @DataProvider
-  public Object[][] throwsExpectedException() {
-    throw new RuntimeException("expected exception from @DP");
-  }
-  
-  @Test(dataProvider="throwsExpectedException")
-  public void dpThrowingException() {
-    Assert.fail("Method should never get invoked");
-  }
-}
diff --git a/test/src/test/dataprovider/FailingDataProviderTest.java b/test/src/test/dataprovider/FailingDataProviderTest.java
deleted file mode 100644
index 39c0418..0000000
--- a/test/src/test/dataprovider/FailingDataProviderTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-
-/**
- * TESTNG-142:
- * Exceptions in DataProvider are not reported as failed test
- */
-public class FailingDataProviderTest {
-  @Test
-  public void failingDataProvider() {
-    TestNG testng= new TestNG(false);
-    testng.setTestClasses(new Class[] {FailingDataProvider.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    testng.addListener(tla);
-    testng.setVerbose(0);
-    testng.run();
-    Assert.assertEquals(tla.getFailedTests().size(), 1, "Test method should be marked as failed");
-  }
-}
diff --git a/test/src/test/dataprovider/FailingIterableDataProvider.java b/test/src/test/dataprovider/FailingIterableDataProvider.java
deleted file mode 100644
index a6b3814..0000000
--- a/test/src/test/dataprovider/FailingIterableDataProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.dataprovider;
-
-import java.util.Iterator;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class FailingIterableDataProvider {
-  
-  @DataProvider(name = "dp")
-  public Iterator<Object[]> createData() {
-    return new Iterator<Object[]>() {
-    int count=0;
-      
-    public boolean hasNext() {
-      return count<10;
-    }
-
-    public Object[] next() {
-      if (++count==6) {
-        throw new RuntimeException();
-      }
-      return new Object[] { count };
-    }
-
-    public void remove() {}
-      
-    };
-  }
-  
-  @Test(dataProvider="dp")
-  public void happyTest(int count) {
-    //pass
-  }
-}
diff --git a/test/src/test/dataprovider/FailingIterableDataProviderTest.java b/test/src/test/dataprovider/FailingIterableDataProviderTest.java
deleted file mode 100644
index 15cb275..0000000
--- a/test/src/test/dataprovider/FailingIterableDataProviderTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-
-/**
- * TESTNG-291:
- * Exceptions thrown by Iterable DataProviders are not caught, no failed test reported
- */
-public class FailingIterableDataProviderTest {
-  @Test
-  public void failingDataProvider() {
-    TestNG testng= new TestNG(false);
-    testng.setTestClasses(new Class[] {FailingIterableDataProvider.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    testng.addListener(tla);
-    testng.setVerbose(0);
-    try {
-      testng.run();
-    } catch (RuntimeException e) {
-      Assert.fail("Exceptions thrown during tests should always be caught!", e);
-    }
-    Assert.assertEquals(tla.getFailedTests().size(), 1,
-      "Should have 1 failure from a bad data-provider iteration");
-    Assert.assertEquals(tla.getPassedTests().size(), 5,
-      "Should have 5 passed test from before the bad data-provider iteration");
-    }
-}
\ No newline at end of file
diff --git a/test/src/test/dataprovider/InheritanceATest.java b/test/src/test/dataprovider/InheritanceATest.java
deleted file mode 100644
index 4ac35f2..0000000
--- a/test/src/test/dataprovider/InheritanceATest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-
-public class InheritanceATest {
-
-  @DataProvider
-  public Object[][] dp() {
-    return new Object[][] {
-        new Object[] { "a"}
-    };
-  }
-  
-  
-}
diff --git a/test/src/test/dataprovider/InheritanceBTest.java b/test/src/test/dataprovider/InheritanceBTest.java
deleted file mode 100644
index 17687b9..0000000
--- a/test/src/test/dataprovider/InheritanceBTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Test;
-
-public class InheritanceBTest extends InheritanceATest {
-
-  @Test(dataProvider = "dp")
-  public void f(String s) {
-  }
-}
diff --git a/test/src/test/dataprovider/InheritedDataProviderBaseSampleTest.java b/test/src/test/dataprovider/InheritedDataProviderBaseSampleTest.java
deleted file mode 100644
index a137e96..0000000
--- a/test/src/test/dataprovider/InheritedDataProviderBaseSampleTest.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Test;
-
-//@Test(description = "parent")
- at Test (dataProviderClass=InheritedDataProviderSample1Test.class)
-public class InheritedDataProviderBaseSampleTest {
-
-}
diff --git a/test/src/test/dataprovider/InheritedDataProviderSample1Test.java b/test/src/test/dataprovider/InheritedDataProviderSample1Test.java
deleted file mode 100644
index 1fb8cbd..0000000
--- a/test/src/test/dataprovider/InheritedDataProviderSample1Test.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-
-public class InheritedDataProviderSample1Test {
-
-  @DataProvider
-  static public Object[][] dp() {
-    return new Object[][] {
-      new Object[] { "a" }
-    };
-  }
-}
diff --git a/test/src/test/dataprovider/InheritedDataProviderTest.java b/test/src/test/dataprovider/InheritedDataProviderTest.java
deleted file mode 100644
index d42c37e..0000000
--- a/test/src/test/dataprovider/InheritedDataProviderTest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Test;
-
-//@Test(description = "class")
-public class InheritedDataProviderTest extends InheritedDataProviderBaseSampleTest {
-
-  @Test(dataProvider = "dp")
-  public void f(String a) {
-  }
-}
diff --git a/test/src/test/dataprovider/InnexistentDataProvider.java b/test/src/test/dataprovider/InnexistentDataProvider.java
deleted file mode 100644
index 689cc15..0000000
--- a/test/src/test/dataprovider/InnexistentDataProvider.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class InnexistentDataProvider {
-  @Test(dataProvider="doesnotexist")
-  public void testMethod(String s)
-  {
-    // doesn't matter
-  }
-}
diff --git a/test/src/test/dataprovider/InstanceDataProviderSampleTest.java b/test/src/test/dataprovider/InstanceDataProviderSampleTest.java
deleted file mode 100644
index ea10052..0000000
--- a/test/src/test/dataprovider/InstanceDataProviderSampleTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class InstanceDataProviderSampleTest {
-  @DataProvider
-  public Object[][] dp() {
-    p("DATA PROVIDER");
-    return new Object[][] {
-        new Object[] { new Integer(hashCode()) },
-    };
-  }
-  
-  @BeforeClass
-  public void beforeTest() {
-    p("BEFORE");
-  }
-
-  @Test(dataProvider = "dp")
-  public void f(Integer n) {
-    p("  PARAM:" + n);
-    Assert.assertEquals(n, new Integer(hashCode()));
-  }
-  
-  @AfterClass
-  public void afterTest() {
-    p("AFTER");
-  }
-
-  private void p(String s) {
-    if (false) {
-      System.out.println(hashCode() + " " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/dataprovider/InstanceDataProviderTest.java b/test/src/test/dataprovider/InstanceDataProviderTest.java
deleted file mode 100644
index 73e7c46..0000000
--- a/test/src/test/dataprovider/InstanceDataProviderTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Factory;
-
-
-public class InstanceDataProviderTest {
-
-  @Factory
-  public Object[] create() {
-    return new Object[] {
-        new InstanceDataProviderSampleTest(),
-        new InstanceDataProviderSampleTest()
-    };
-  }
-}
diff --git a/test/src/test/dataprovider/IterableTest.java b/test/src/test/dataprovider/IterableTest.java
deleted file mode 100644
index b88e2c1..0000000
--- a/test/src/test/dataprovider/IterableTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package test.dataprovider;
-
-import java.util.Iterator;
-
-import org.testng.Assert;
-
-public class IterableTest {
-  private boolean m_ok1 = false;
-  private boolean m_ok2 = false;
-
-  public static final String FN2 = "Anne Marie";
-  public static final Integer LN2 = new Integer(37);
-  public static final String FN1 = "Cedric";
-  public static final Integer LN1 = new Integer(36);
-  
-  public static final Object[][] DATA =new Object[][] {
-    new Object[] { FN1, LN1 },
-    new Object[] { FN2, LN2 },      
-  };
-
-  /**
-   * @testng.data-provider name="test1"
-   */
-  public Iterator createData() {
-    return new MyIterator(DATA);
-  } 
-
-  /**
-   * @testng.test dataProvider="test1"
-   */
-  public void verifyNames(String firstName, Integer age) {
-    if (firstName.equals(FN1) && age.equals(LN1)) {
-      m_ok1 = true;
-      Assert.assertEquals(MyIterator.getCount(), 1);
-    }
-    if (firstName.equals(FN2) && age.equals(LN2)) {
-      m_ok2 = true;
-      Assert.assertEquals(MyIterator.getCount(), 2);
-    }
-  }
-  
-  /**
-   * @testng.test dependsOnMethods = "verifyNames"
-   */
-  public void verifyCount() {
-    Assert.assertTrue(m_ok1 && m_ok2);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[IterableTest] " + s);
-  }
-}
-
-
diff --git a/test/src/test/dataprovider/MethodTest.java b/test/src/test/dataprovider/MethodTest.java
deleted file mode 100644
index b61e08a..0000000
--- a/test/src/test/dataprovider/MethodTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package test.dataprovider;
-
-import java.lang.reflect.Method;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class MethodTest {
-
-  @DataProvider(name = "dp1")
-  public Object[][] createData(Method m) {
-    Assert.assertEquals("test1", m.getName());
-    Assert.assertEquals("test.dataprovider.MethodTest", m.getDeclaringClass().getName());
-    return new Object[][] {
-      new Object[] { "Cedric" },  
-      new Object[] { "Alois" },  
-    };
-  }
-  
-  @Test(dataProvider = "dp1")
-  public void test1(String s) {
-    Assert.assertTrue("Cedric".equals(s) || "Alois".equals(s));
-  }
-  
-  private int m_test2 = 0;
-  private int m_test3 = 0;
-
-  @DataProvider(name = "dp2")
-  public Object[][] createData2(Method m) {
-    if ("test2".equals(m.getName())) m_test2++;
-    else if ("test3".equals(m.getName())) m_test3++;
-    else throw new RuntimeException("Received method " + m + ", expected test2 or test3");
-    Assert.assertEquals("test.dataprovider.MethodTest", m.getDeclaringClass().getName());
-    return new Object[][] {
-      new Object[] { "Cedric" },
-    };
-  }
-  
-  @Test(dataProvider = "dp2")
-  public void test2(String s) {
-    Assert.assertTrue("Cedric".equals(s));
-  }
-
-  @Test(dataProvider = "dp2")
-  public void test3(String s) {
-    Assert.assertTrue("Cedric".equals(s));
-  }
-  
-  @Test(dependsOnMethods = {"test2", "test3"})
-  public void multipleTestMethods() {
-    Assert.assertEquals(1, m_test2);
-    Assert.assertEquals(1, m_test3);    
-  }
-
-}
diff --git a/test/src/test/dataprovider/MyIterator.java b/test/src/test/dataprovider/MyIterator.java
deleted file mode 100644
index e754005..0000000
--- a/test/src/test/dataprovider/MyIterator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package test.dataprovider;
-
-import java.util.Iterator;
-
-public class MyIterator implements Iterator<Object[]> {
-  private static int m_count = 0;
-  private Object[][] m_data;
-  
-  public MyIterator(Object[][] data) {
-    m_data = data;
-    m_count = 0;
-  }
-
-  public boolean hasNext() {
-    return m_count < m_data.length;
-  }
-
-  public Object[] next() {
-    ppp("RETURNING INDEX " + m_count);
-    return m_data[m_count++];
-  }
-
-  public void remove() {
-  }
-
-  public static int getCount() {
-    return m_count;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[MyIterator] " + s);
-  }
-  
-}
diff --git a/test/src/test/dataprovider/Sample1Test.java b/test/src/test/dataprovider/Sample1Test.java
deleted file mode 100644
index 246feaf..0000000
--- a/test/src/test/dataprovider/Sample1Test.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class Sample1Test {
-  private boolean m_ok1 = false;
-  private boolean m_ok2 = false;
-
-  private static final String FN2 = "Anne Marie";
-  private static final Integer LN2 = new Integer(37);
-  private static final String FN1 = "Cedric";
-  private static final Integer LN1 = new Integer(36);
-
-  @DataProvider(name = "test1")
-  public Object[][] createData() {
-    return new Object[][] {
-        new Object[] { FN1, LN1 },
-        new Object[] { FN2, LN2 },      
-      };
-  }
-
-  @Test(dataProvider = "test1")
-  public void verifyNames(String firstName, Integer age) {
-    if (firstName.equals(FN1) && age.equals(LN1)) {
-      m_ok1 = true;
-    }
-    if (firstName.equals(FN2) && age.equals(LN2)) {
-      m_ok2 = true;
-    }
-  }
-
-  @Test(dependsOnMethods = {"verifyNames"})
-  public void verifyCount() {
-    Assert.assertTrue(m_ok1 && m_ok2);
-  }
-}
diff --git a/test/src/test/dataprovider/StaticDataProviderSampleTest.java b/test/src/test/dataprovider/StaticDataProviderSampleTest.java
deleted file mode 100644
index 1ee1445..0000000
--- a/test/src/test/dataprovider/StaticDataProviderSampleTest.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class StaticDataProviderSampleTest {
-
-  @Test(dataProvider = "static", dataProviderClass = StaticProvider.class)
-  public void verifyStatic(String s) {
-    Assert.assertEquals(s, "Cedric");
-  }
-}
diff --git a/test/src/test/dataprovider/StaticProvider.java b/test/src/test/dataprovider/StaticProvider.java
deleted file mode 100644
index 46948fe..0000000
--- a/test/src/test/dataprovider/StaticProvider.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.DataProvider;
-
-public class StaticProvider {
-  
-  @DataProvider(name = "static")
-  public static Object[][] create() {
-    return new Object[][] {
-        new Object[] { "Cedric" },
-    };
-  }
-}
diff --git a/test/src/test/dataprovider/TestContextSampleTest.java b/test/src/test/dataprovider/TestContextSampleTest.java
deleted file mode 100644
index 8919691..0000000
--- a/test/src/test/dataprovider/TestContextSampleTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.ITestContext;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-/**
- * Tests that when a DataProvider is declared with an ITestContext,
- * this parameter is correctly passed.
- * 
- * Created on Dec 28, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class TestContextSampleTest {
-
-  /**
-   * @return As many parameters as the name of the included group
-   */
-  @DataProvider(name = "testContext")
-  public Object[][] createContext(ITestContext ctx) {
-//    ppp("CONTEXT:" + ctx);
-    String[] groups = ctx.getIncludedGroups();
-
-    int n = groups.length > 0 ? new Integer(groups[0]): 0;
-    Object[] result = new Object[n];
-    for (int i = 0; i < n; i++) {
-      result[i] = "foo";
-    }
-    
-    return new Object[][] {
-        new Object[] { result },
-    };
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[TestContextSampleTest] " + s);
-  }
-  
-  @Test(dataProvider = "testContext", groups="10") 
-  public void verifyTen(Object[] objects) {
-    Assert.assertEquals(objects.length, 10);
-  }
-  
-  @Test(dataProvider = "testContext", groups="5") 
-  public void verifyFive(Object[] objects) {
-    Assert.assertEquals(objects.length, 5);
-  }
-
-}
diff --git a/test/src/test/dataprovider/TestContextTest.java b/test/src/test/dataprovider/TestContextTest.java
deleted file mode 100644
index c26635b..0000000
--- a/test/src/test/dataprovider/TestContextTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-public class TestContextTest {
-
-  @Test
-  public void verifyTen() {
-    verify("10", "verifyTen", 1, 0);
-  }
-
-  @Test
-  public void verifyFive() {
-    verify("5", "verifyFive", 1, 0);
-  }
-  
-  @Test
-  public void verifySix() {
-    // Not including any group, so the two test methods should fail
-    verify(null, null, 0, 2);
-  }
-
-  private void verify(String groupName, String passed, int passedCount, int failedCount) {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { TestContextSampleTest.class });
-    if (groupName != null) {
-      tng.setGroups(groupName);
-    }
-    TestListenerAdapter al = new TestListenerAdapter();
-    tng.addListener(al);
-    tng.run();
-    
-    if (passedCount > 0) {
-      Assert.assertEquals(al.getPassedTests().size(), passedCount);
-      Assert.assertEquals(al.getPassedTests().get(0).getMethod().getMethodName(), passed);
-    }
-    
-    if (failedCount > 0) {
-      Assert.assertEquals(al.getFailedTests().size(), failedCount);
-    }
-  }
-}
diff --git a/test/src/test/dataprovider/TestInstanceFactory.java b/test/src/test/dataprovider/TestInstanceFactory.java
deleted file mode 100644
index c7d3d9e..0000000
--- a/test/src/test/dataprovider/TestInstanceFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.dataprovider;
-
-import org.testng.annotations.Factory;
-
-public class TestInstanceFactory {
-  @Factory
-  public Object[] init() {
-    return new Object[] {
-        new TestInstanceTest(1),
-        new TestInstanceTest(2)
-    };
-  }
-  
-
-}
diff --git a/test/src/test/dataprovider/TestInstanceTest.java b/test/src/test/dataprovider/TestInstanceTest.java
deleted file mode 100644
index 3be1f1a..0000000
--- a/test/src/test/dataprovider/TestInstanceTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import org.testng.annotations.TestInstance;
-
-import java.lang.reflect.Method;
-
-public class TestInstanceTest {
-  
-  private int m_n;
-  private static int m_instanceCount = 0;
-
-  public TestInstanceTest() {}
-
-  public TestInstanceTest(int n) {
-    this.m_n = n;
-  }
-
-  @DataProvider
-  public Object[][] dp(Method m, @TestInstance Object instance) {
-    TestInstanceTest o0 = (TestInstanceTest) instance;
-    Assert.assertTrue(o0.m_n == 1 || o0.m_n == 2);
-    m_instanceCount++;
-    return new Object[][] {
-        new Object[] { new Integer(42) },
-        new Object[] { new Integer(43) },
-    };
-  }
-
-  @Test(dataProvider = "dp")
-  public void f(int o) {
-  }
-  
-  public String toString() {
-    return "[A n:" + m_n + "]";
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[A] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/dataprovider/UnnamedDataProviderTest.java b/test/src/test/dataprovider/UnnamedDataProviderTest.java
deleted file mode 100644
index f7c52dd..0000000
--- a/test/src/test/dataprovider/UnnamedDataProviderTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package test.dataprovider;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class UnnamedDataProviderTest {
-  private boolean m_false = false;
-  private boolean m_true = false;
-  
-  @Test(dataProvider = "unnamedDataProvider")
-  public void doStuff(boolean t) {
-    if (t) m_true = true;
-    if (! t) m_false = true;
-  }
-  
-  @Test(dependsOnMethods = {"doStuff"} )
-  public void verify() {
-    Assert.assertTrue(m_true);
-    Assert.assertTrue(m_false);    
-  }
-  
-  @DataProvider
-  public Object[][] unnamedDataProvider() {
-    return new Object[][] {
-        {Boolean.TRUE},
-        {Boolean.FALSE}
-    };
-  }
-}
diff --git a/test/src/test/dependent/BaseOrderMethodTest.java b/test/src/test/dependent/BaseOrderMethodTest.java
deleted file mode 100644
index 96b5ded..0000000
--- a/test/src/test/dependent/BaseOrderMethodTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- *
- * @author Cedric Beust, Aug 20, 2004
- * 
- */
-public class BaseOrderMethodTest {
-  protected boolean[] m_group1 = {
-      false, false 
-  };
-  protected boolean[] m_group2 = {
-      false, false
-  };
-  protected boolean[] m_group3 = {
-      false
-  };
-  
-  @Test(groups = { "2.0" }, dependsOnGroups = { "1.0", "1.1" })
-  public void a_second0() {
-    verifyGroup(2, m_group1);
-    m_group2[0] = true;
-  }
-  
-  @Test(groups = { "3" }, dependsOnGroups = { "2.*" })
-  public void third0() {
-    verifyGroup(3, m_group2);
-    m_group3[0] = true;
-  }
-
-    public static void ppp(String s) {
-	    System.out.println("[BaseOrderMethodTest] " + s);
-    }
-    
-
-    protected void verifyGroup(int groupNumber, boolean[] group) {
-      for (int i = 0; i < group.length; i++) {
-        assert group[i] : "Error while running group " + groupNumber + ": "
-        + " index " + i
-        + " of previous group should have been run before.";
-      }
-    }
-
-}
diff --git a/test/src/test/dependent/ClassDependsOnGroups.java b/test/src/test/dependent/ClassDependsOnGroups.java
deleted file mode 100644
index d8dea0e..0000000
--- a/test/src/test/dependent/ClassDependsOnGroups.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-
-public class ClassDependsOnGroups extends BaseTest {
-  @Test
-  public void verifyDependsOnGroups() {
-     addClass("test.dependent.DifferentClassDependsOnGroupsTest1");
-     addClass("test.dependent.DifferentClassDependsOnGroupsTest2");
-
-     run();
-     String[] failed = {
-        "test0"
-     };
-     String[] skipped = {
-         "test1", "test2"
-     };
-     verifyTests("Failed", failed, getFailedTests());
-     verifyTests("Skipped", skipped, getSkippedTests());
-  }
-}
diff --git a/test/src/test/dependent/ClassWide1Test.java b/test/src/test/dependent/ClassWide1Test.java
deleted file mode 100644
index d14c4cc..0000000
--- a/test/src/test/dependent/ClassWide1Test.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-public class ClassWide1Test {
-  private static boolean m_ok = false;
-
-  @BeforeTest
-  public void init() {
-    m_ok = false;
-  }
-  
-  @Test
-  public void m1() {
-    m_ok = true;
-  }
-
-  public static boolean m1WasRun() {
-    return m_ok;
-  }
-}
diff --git a/test/src/test/dependent/ClassWide2Test.java b/test/src/test/dependent/ClassWide2Test.java
deleted file mode 100644
index 76a4f41..0000000
--- a/test/src/test/dependent/ClassWide2Test.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class ClassWide2Test {
-
-//  @Test(dependsOnMethods = {"m1" })
-  @Test(dependsOnMethods = {"test.dependent.ClassWide1Test.m1" })
-  public void m2() {
-    Assert.assertTrue(ClassWide1Test.m1WasRun());
-  }
-  
-//  @Test
-//  public void m1() {
-//    
-//  }
-
-}
diff --git a/test/src/test/dependent/DepBugSampleTest.java b/test/src/test/dependent/DepBugSampleTest.java
deleted file mode 100644
index cf910e7..0000000
--- a/test/src/test/dependent/DepBugSampleTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package test.dependent;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
- at Test
-public class DepBugSampleTest {
-  private static List<String> m_log = new ArrayList<String>();
-  
-  private static void log(String s) {
-//    ppp(s);
-    m_log.add(s);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[DepBugSampleTest] " + s);
-  }
-  
-  public static List<String> getLog() {
-    return m_log;
-  }
-
-  @BeforeClass
-  public void setup() throws Exception {
-    log("setup");
-  }
-
-  @AfterClass
-  public void destroy() throws Exception {
-    log("destroy");
-  }
-
-  @Test(dependsOnMethods = "send")
-  public void get() throws Exception {
-    log("get");
-  }
-
-  public void send() throws Exception {
-    log("send");
-  }
-
-  public void list() throws Exception {
-    log("list");
-  }
-}
diff --git a/test/src/test/dependent/DepBugVerifyTest.java b/test/src/test/dependent/DepBugVerifyTest.java
deleted file mode 100644
index 30bc829..0000000
--- a/test/src/test/dependent/DepBugVerifyTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class DepBugVerifyTest {
-
-  @Test
-  public void verify() {
-    List<String> log = DepBugSampleTest.getLog();
-    String[] expected = new String[] {
-      "setup", "send", "get", "list", "destroy"
-    };
-    for (int i = 0; i < log.size(); i++) {
-      Assert.assertEquals(expected[i], log.get(i));
-    }
-  }
-}
diff --git a/test/src/test/dependent/DependentAlwaysRunTest.java b/test/src/test/dependent/DependentAlwaysRunTest.java
deleted file mode 100644
index 8605dfd..0000000
--- a/test/src/test/dependent/DependentAlwaysRunTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class DependentAlwaysRunTest extends BaseTest {
-  @Test
-  public void verifyDependsOnMethodsAlwaysRun() {
-    addClass("test.dependent.DependentOnMethod1AlwaysRunSampleTest");
-  
-    run();
-    String[] passed = {
-        "b", "verify"
-     };
-    String[] failed = {
-       "a"
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-  
-  @Test
-  public void verifyDependsOnGroups1AlwaysRun() {
-    addClass("test.dependent.DependentOnGroup1AlwaysRunSampleTest");
-  
-    run();
-    String[] passed = {
-        "b", "verify"
-     };
-    String[] failed = {
-       "a"
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-
-  @Test
-  public void verifyDependsOnGroups2AlwaysRun() {
-    addClass("test.dependent.DependentOnGroup2AlwaysRunSampleTest");
-  
-    run();
-    String[] passed = {
-        "a2", "b", "verify"
-     };
-    String[] failed = {
-       "a"
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-
-}
diff --git a/test/src/test/dependent/DependentOnGroup1AlwaysRunSampleTest.java b/test/src/test/dependent/DependentOnGroup1AlwaysRunSampleTest.java
deleted file mode 100644
index 8f971e2..0000000
--- a/test/src/test/dependent/DependentOnGroup1AlwaysRunSampleTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * a will fail but b should run anyway because of alwaysRun=true
- * 
- * Created on Nov 18, 2005
- * @author cbeust
- */
-public class DependentOnGroup1AlwaysRunSampleTest {
-
-  private boolean m_ok = false;
-
-  @Test(groups = { "group-a"})
-  public void a() {
-    throw new RuntimeException("Voluntary failure");
-  }
-  
-  @Test(dependsOnGroups = {"group-a"}, alwaysRun = true)
-  public void b() {
-    m_ok = true;
-  }
-  
-  @Test(dependsOnMethods = {"b"})
-  public void verify() {
-    Assert.assertTrue(m_ok, "method b() should have been invoked");
-  }
-}
diff --git a/test/src/test/dependent/DependentOnGroup2AlwaysRunSampleTest.java b/test/src/test/dependent/DependentOnGroup2AlwaysRunSampleTest.java
deleted file mode 100644
index dba374f..0000000
--- a/test/src/test/dependent/DependentOnGroup2AlwaysRunSampleTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * a will fail but b should run anyway because of alwaysRun=true
- * 
- * Created on Nov 18, 2005
- * @author cbeust
- */
-public class DependentOnGroup2AlwaysRunSampleTest {
-
-  private boolean m_ok = false;
-
-  @Test(groups = { "group-a"})
-  public void a() {
-    throw new RuntimeException("Voluntary failure");
-  }
-  
-  @Test(groups = { "group-a"})
-  public void a2() {
-  }
-
-  @Test(dependsOnGroups = {"group-a"}, alwaysRun = true)
-  public void b() {
-    m_ok = true;
-  }
-  
-  @Test(dependsOnMethods = {"b"})
-  public void verify() {
-    Assert.assertTrue(m_ok, "method b() should have been invoked");
-  }
-}
diff --git a/test/src/test/dependent/DependentOnMethod1AlwaysRunSampleTest.java b/test/src/test/dependent/DependentOnMethod1AlwaysRunSampleTest.java
deleted file mode 100644
index c435270..0000000
--- a/test/src/test/dependent/DependentOnMethod1AlwaysRunSampleTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * a will fail but b should run anyway because of alwaysRun=true
- * 
- * Created on Nov 18, 2005
- * @author cbeust
- */
-public class DependentOnMethod1AlwaysRunSampleTest {
-
-  private boolean m_ok = false;
-
-  @Test
-  public void a() {
-    throw new RuntimeException("Voluntary failure");
-  }
-  
-  @Test(dependsOnMethods = {"a"}, alwaysRun = true)
-  public void b() {
-    m_ok = true;
-  }
-  
-  @Test(dependsOnMethods = {"b"})
-  public void verify() {
-    Assert.assertTrue(m_ok, "method b() should have been invoked");
-  }
-}
diff --git a/test/src/test/dependent/DependentTest.java b/test/src/test/dependent/DependentTest.java
deleted file mode 100644
index f096865..0000000
--- a/test/src/test/dependent/DependentTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package test.dependent;
-
-import test.BaseTest;
-import org.testng.annotations.*;
-
-public class DependentTest extends BaseTest {
-  
-  @Test
-  public void simpleSkip() {
-    addClass("test.dependent.SampleDependent1");
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-      "fail"
-    };
-    String[] skipped = {
-      "shouldBeSkipped"
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-
-  @Test
-  public void dependentMethods() {
-    addClass("test.dependent.SampleDependentMethods");
-    run();
-    String[] passed = {
-        "oneA", "oneB", "secondA", "thirdA", "canBeRunAnytime"
-    };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-  
-  @Test
-  public void dependentMethodsWithSkip() {
-    addClass("test.dependent.SampleDependentMethods4");
-    run();
-    String[] passed = {
-        "step1",
-    };
-    String[] failed = {
-        "step2",
-    };
-    String[] skipped = {
-        "step3"
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-
-  @Test
-  @ExpectedExceptions({ org.testng.TestNGException.class })
-  public void dependentMethodsWithNonExistentMethod() {
-    addClass("test.dependent.SampleDependentMethods5");
-    run();
-    String[] passed = {
-        "step1", "step2"
-    };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-  
-  @Test
-  @ExpectedExceptions({ org.testng.TestNGException.class })
-  public void dependentMethodsWithCycle() {
-    addClass("test.dependent.SampleDependentMethods6");
-    run();
-    String[] passed = {
-        "step1", "step2"
-    };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());
-  }
-  
-} // DependentTest
-
-
diff --git a/test/src/test/dependent/DependsOnProtectedMethodTest.java b/test/src/test/dependent/DependsOnProtectedMethodTest.java
deleted file mode 100644
index 2def555..0000000
--- a/test/src/test/dependent/DependsOnProtectedMethodTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class DependsOnProtectedMethodTest {
-  private boolean m_before1 = false;
-  private boolean m_before2 = false;
-  
-  @BeforeMethod(dependsOnMethods = { "before2" })
-  protected void before() {
-    m_before1 = true;
-  }
-  
-  @BeforeMethod
-  protected void before2() {
-    m_before2 = true;
-  }
-  
-  @Test
-  public void verifyBeforeInvocations() {
-    Assert.assertTrue(m_before1 && m_before2, "Protected dependent @BeforeMethods should have been invoked");
-  }
-}
diff --git a/test/src/test/dependent/DepthDependencyTest.java b/test/src/test/dependent/DepthDependencyTest.java
deleted file mode 100644
index 4d146cb..0000000
--- a/test/src/test/dependent/DepthDependencyTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-public class DepthDependencyTest {
-
-  @Test(groups = { "1"} )
-  public void f1() {
-    throw new RuntimeException();
-  }
-  
-  @Test(groups = { "2"}, dependsOnGroups = {"1"} )
-  public void f2() {
-    
-  }
-
-  @Test(groups = { "3"}, dependsOnGroups = {"2"} )
-  public void f3() {
-    
-  }
-}
diff --git a/test/src/test/dependent/DifferentClassDependsOnGroupsTest1.java b/test/src/test/dependent/DifferentClassDependsOnGroupsTest1.java
deleted file mode 100644
index dfd05ed..0000000
--- a/test/src/test/dependent/DifferentClassDependsOnGroupsTest1.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.dependent;
-
-
-import static org.testng.Assert.assertTrue;
-import org.testng.annotations.Test;
-
-
-public class DifferentClassDependsOnGroupsTest1 {
-  @Test(groups = { "mainGroup" })
-  public void test0() {
-    assertTrue(1 == 0); // Force a failure
-  }
-
-  @Test(dependsOnGroups= {"mainGroup"})
-  public void test2() {
-  }
-}
diff --git a/test/src/test/dependent/DifferentClassDependsOnGroupsTest2.java b/test/src/test/dependent/DifferentClassDependsOnGroupsTest2.java
deleted file mode 100644
index fea81c2..0000000
--- a/test/src/test/dependent/DifferentClassDependsOnGroupsTest2.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.dependent;
-
-
-import org.testng.annotations.Test;
-
-
-public class DifferentClassDependsOnGroupsTest2 {
-  @Test(dependsOnGroups = { "mainGroup" })
-  public void test1() {
-  }
-}
diff --git a/test/src/test/dependent/ImplicitGroupInclusion2SampleTest.java b/test/src/test/dependent/ImplicitGroupInclusion2SampleTest.java
deleted file mode 100644
index f2e1d80..0000000
--- a/test/src/test/dependent/ImplicitGroupInclusion2SampleTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ImplicitGroupInclusion2SampleTest {
-  private boolean m_m1, m_m2, m_m3;
-  
-  @BeforeClass(groups = {"g2"})
-  public void init() {
-    m_m1 = m_m2 = m_m3 = false;
-  }
-  
-  @Test (groups = {"g1"})
-  public void m1() {
-    m_m1 = true;
- }
-
- @Test (groups = {"g1"}, dependsOnMethods="m1")
-  public void m2() {
-     m_m2 = true;
- }
-
- @Test (groups = {"g2"})
-  public void m3() {
-     m_m3 = true;
- }
- 
- @AfterClass(groups = {"g2"})
- public void verify() {
-   Assert.assertFalse(m_m1, "Shouldn't have invoked m1()");
-   Assert.assertFalse(m_m2);
-   Assert.assertTrue(m_m3);
- }
-}
\ No newline at end of file
diff --git a/test/src/test/dependent/ImplicitGroupInclusion3SampleTest.java b/test/src/test/dependent/ImplicitGroupInclusion3SampleTest.java
deleted file mode 100644
index 67d5760..0000000
--- a/test/src/test/dependent/ImplicitGroupInclusion3SampleTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-public class ImplicitGroupInclusion3SampleTest {
- @Test( groups = {"inc"} )
- public void test1() {}
-
- @Test( groups = {"exc"} )
- public void test2() {
-   throw new RuntimeException("exclude me");
- }
-
- @Test( groups = {"exc"}, dependsOnMethods={"test2"} )
- public void test3() {
-   throw new RuntimeException("exclude me");
- }
- 
-}
\ No newline at end of file
diff --git a/test/src/test/dependent/ImplicitGroupInclusion4SampleTest.java b/test/src/test/dependent/ImplicitGroupInclusion4SampleTest.java
deleted file mode 100644
index 3cb53d7..0000000
--- a/test/src/test/dependent/ImplicitGroupInclusion4SampleTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ImplicitGroupInclusion4SampleTest {
-  private boolean m_m1, m_m2, m_m3, m_m4;
-  
-  @BeforeClass(groups = {"g2"})
-  public void init() {
-    m_m1 = m_m2 = m_m3 = m_m4 = false;
-  }
-  
-  @Test (groups = {"g1"})
-  public void m1() {
-    m_m1 = true;
- }
-
- @Test (groups = {"g1"}, dependsOnMethods="m1")
-  public void m2() {
-     m_m2 = true;
- }
-
- @Test (groups = {"g2"})
-  public void m3() {
-     m_m3 = true;
- }
- 
- @Test (groups = {"g2"}, dependsOnMethods="m3")
- public void m4() {
-   m_m4 = true;
- }
- 
- @AfterClass(groups = {"g2"})
- public void verify() {
-   Assert.assertFalse(m_m1, "Shouldn't have invoked m1()");
-   Assert.assertFalse(m_m2);
-   Assert.assertTrue(m_m3);
-   Assert.assertTrue(m_m4);
- }
-}
\ No newline at end of file
diff --git a/test/src/test/dependent/ImplicitGroupInclusionSampleTest.java b/test/src/test/dependent/ImplicitGroupInclusionSampleTest.java
deleted file mode 100644
index 4637423..0000000
--- a/test/src/test/dependent/ImplicitGroupInclusionSampleTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-public class ImplicitGroupInclusionSampleTest {
-
-  @Test(groups = "z")
-  public void z() {
-    
-  }
-  
-  @Test(groups = "a", dependsOnGroups = {"z"})
-  public void a() {
-    
-  }
-  
-  @Test(groups = "b", dependsOnGroups = {"a"})
-  public void b() {
-    
-  }
-}
diff --git a/test/src/test/dependent/ImplicitGroupInclusionTest.java b/test/src/test/dependent/ImplicitGroupInclusionTest.java
deleted file mode 100644
index 62e5249..0000000
--- a/test/src/test/dependent/ImplicitGroupInclusionTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class ImplicitGroupInclusionTest extends BaseTest {
-
-  @Test
-  public void verifyImplicitGroupInclusion() {
-    addClass("test.dependent.ImplicitGroupInclusionSampleTest");
-    addIncludedGroup("b");
-    
-    run();
-    String[] passed = {
-        "a", "b", "z"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-  }
-  
-  @Test
-  public void verifyImplicitGroupInclusion2() {
-    addClass("test.dependent.ImplicitGroupInclusion2SampleTest");
-    addIncludedGroup("g2");
-    
-    run();
-    String[] passed = {
-        "m3"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-  }
-
-  @Test
-  public void verifyImplicitGroupInclusion4() {
-    addClass("test.dependent.ImplicitGroupInclusion4SampleTest");
-    addIncludedGroup("g2");
-    
-    run();
-    String[] passed = {
-        "m3", "m4"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-  }
-
-  @Test
-  public void verifyImplicitGroupInclusion3() {
-    addClass("test.dependent.ImplicitGroupInclusion3SampleTest");
-    addIncludedGroup("inc");
-    addExcludedGroup("exc");
-    
-    run();
-    String[] passed = {
-        "test1"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-  }
-
-  @Test
-  public void verifyImplicitMethodInclusion() {
-    addClass("test.dependent.ImplicitMethodInclusionSampleTest");
-    addIncludedGroup("windows");
-    
-    run();
-    String[] passed = {
-        "a", "b"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-  }
-
-}
diff --git a/test/src/test/dependent/ImplicitMethodInclusionSampleTest.java b/test/src/test/dependent/ImplicitMethodInclusionSampleTest.java
deleted file mode 100644
index a2408ed..0000000
--- a/test/src/test/dependent/ImplicitMethodInclusionSampleTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-public class ImplicitMethodInclusionSampleTest {
-  @Test(groups = {"linux"})
-  public void a() {
-//    ppp("A");
-  }
-
-  @Test(groups = {"linux", "windows"} , dependsOnMethods={"a"})
-  public void b() {
-//    ppp("B");
-  }
-
-  private void ppp(String string) {
-    System.out.println("[Implicit] " + string);
-  }  
-  
-}
diff --git a/test/src/test/dependent/MissingGroupSampleTest.java b/test/src/test/dependent/MissingGroupSampleTest.java
deleted file mode 100644
index 49c3d06..0000000
--- a/test/src/test/dependent/MissingGroupSampleTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.dependent;
-
-import java.io.ByteArrayInputStream;
-
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.Parser;
-
-public class MissingGroupSampleTest {
-
-  @Test(dependsOnGroups = {"missing-group"})
-  public void shouldBeSkipped() {
-    
-  }
-
-  @Test(dependsOnGroups = {"missing-group"}, ignoreMissingDependencies=true)
-  public void shouldNotBeSkipped() {
-    
-  }
-  
-  public static void main(String[] args) throws Exception {
-    TestNG tng = new TestNG();
-    String xml = "<suite name=\"dgf\" verbose=\"10\"><test name=\"dgf\"><classes><class name=\"test.dependent.MissingGroupSampleTest\"></class></classes></test></suite>";
-    System.out.println(xml);
-    ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes());
-    tng.setXmlSuites(new Parser(is).parseToList());
-    tng.run();
-  }
-}
diff --git a/test/src/test/dependent/MissingGroupTest.java b/test/src/test/dependent/MissingGroupTest.java
deleted file mode 100644
index 925b015..0000000
--- a/test/src/test/dependent/MissingGroupTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class MissingGroupTest extends BaseTest {
-  
-  @Test
-  public void verifyThatExceptionIsThrownIfMissingGroup() {    
-    addClass("test.dependent.MissingGroupSampleTest");
-    
-    run();
-    String[] passed = {
-        "shouldNotBeSkipped"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-      "shouldBeSkipped"
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-
-  }
-
-}
diff --git a/test/src/test/dependent/MissingMethodSampleTest.java b/test/src/test/dependent/MissingMethodSampleTest.java
deleted file mode 100644
index d44a3bb..0000000
--- a/test/src/test/dependent/MissingMethodSampleTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.dependent;
-
-import java.io.ByteArrayInputStream;
-
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.Parser;
-
-public class MissingMethodSampleTest {
-
-  @Test(dependsOnMethods="missingMethod", ignoreMissingDependencies=true)
-  public void explicitlyIgnoreMissingMethod() {
-    
-  }
-  
-  @Test(dependsOnMethods="missingMethod", alwaysRun=true)
-  public void alwaysRunDespiteMissingMethod() {}
-  
-  public static void main(String[] args) throws Exception {
-    TestNG tng = new TestNG();
-    String xml = "<suite name=\"dgf\" verbose=\"10\"><test name=\"dgf\"><classes>" +
-    		"<class name=\"test.dependent.MissingMethodSampleTest\"/>" +
-    		"</classes></test></suite>";
-    System.out.println(xml);
-    ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes());
-    tng.setXmlSuites(new Parser(is).parseToList());
-    tng.run();
-  }
-}
diff --git a/test/src/test/dependent/MissingMethodTest.java b/test/src/test/dependent/MissingMethodTest.java
deleted file mode 100644
index 867ad0c..0000000
--- a/test/src/test/dependent/MissingMethodTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class MissingMethodTest extends BaseTest {
-  
-  @Test
-  public void verifyThatExceptionIsThrownIfMissingMethod() {    
-    addClass("test.dependent.MissingMethodSampleTest");
-    
-    run();
-    String[] passed = {
-        "explicitlyIgnoreMissingMethod",
-        "alwaysRunDespiteMissingMethod"
-     };
-    String[] failed = {
-    };
-    String[] skipped = {
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-
-  }
-
-}
diff --git a/test/src/test/dependent/MultiGroup1SampleTest.java b/test/src/test/dependent/MultiGroup1SampleTest.java
deleted file mode 100644
index cf1901f..0000000
--- a/test/src/test/dependent/MultiGroup1SampleTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
- at Test(groups = { "checkin" })
-public class MultiGroup1SampleTest {
-
-  @Test(groups = {"a"})
-  public void testA() {
-    
-  }
-  
-  public void test1() throws Exception {
-    throw new Exception("fail");
-  }
-}
diff --git a/test/src/test/dependent/MultiGroup2SampleTest.java b/test/src/test/dependent/MultiGroup2SampleTest.java
deleted file mode 100644
index cf33bb4..0000000
--- a/test/src/test/dependent/MultiGroup2SampleTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
- at Test(groups = {"integration"}, dependsOnGroups = {"checkin", "a"}) 
-public class MultiGroup2SampleTest {
-
-  public void test2() throws Exception {
-  }
-}
diff --git a/test/src/test/dependent/MultiGroupTest.java b/test/src/test/dependent/MultiGroupTest.java
deleted file mode 100644
index f45702a..0000000
--- a/test/src/test/dependent/MultiGroupTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class MultiGroupTest extends BaseTest {
-  @Test
-  public void verifyDependsOnMultiGroups() {
-     addClass("test.dependent.MultiGroup1SampleTest");
-     addClass("test.dependent.MultiGroup2SampleTest");
-
-     run();
-     String[] passed = {
-         "testA"
-      };
-     String[] failed = {
-        "test1"
-     };
-     String[] skipped = {
-         "test2"
-     };
-     verifyTests("Passed", passed, getPassedTests());
-     verifyTests("Failed", failed, getFailedTests());
-     verifyTests("Skipped", skipped, getSkippedTests());
-  }
-}
diff --git a/test/src/test/dependent/OrderMethodTest.java b/test/src/test/dependent/OrderMethodTest.java
deleted file mode 100644
index 8aa4663..0000000
--- a/test/src/test/dependent/OrderMethodTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.*;
-
-
-/**
- * This class verifies that when methods have dependents, they are run
- * in the correct order.
- *
- * @author Cedric Beust, Aug 19, 2004
- * 
- */
-public class OrderMethodTest extends BaseOrderMethodTest {
-  @Test(groups = { "1.0" })
-  public void z_first0() {
-//    ppp("1.0");
-    m_group1[0] = true;
-  }
-  
-  @Test(groups = { "2.1" }, dependsOnGroups = { "1.0", "1.1" })
-  public void a_second1() {
-//    ppp("2.1");
-    verifyGroup(2, m_group1);
-    m_group2[1] = true;
-  }
-
-  @Test(groups = { "1.1" })
-  public void z_premiere1() {
-//    ppp("1.1");
-    m_group1[1] = true;
-  }
-  
-    
-  
-}
diff --git a/test/src/test/dependent/SampleDependent1.java b/test/src/test/dependent/SampleDependent1.java
deleted file mode 100644
index b46be3b..0000000
--- a/test/src/test/dependent/SampleDependent1.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-
-/**
- * This class exercises dependent groups
- *
- * @author Cedric Beust, Aug 19, 2004
- * 
- */
-public class SampleDependent1 {
-
-  @Test(groups = { "fail" })
-  public void fail() {
-    Assert.assertTrue(false);
-  }
-  
-  @Test(dependsOnGroups = { "fail" })
-  public void shouldBeSkipped() {
-  }
-}
diff --git a/test/src/test/dependent/SampleDependentConfigurationMethods.java b/test/src/test/dependent/SampleDependentConfigurationMethods.java
deleted file mode 100644
index 7ccec0c..0000000
--- a/test/src/test/dependent/SampleDependentConfigurationMethods.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class SampleDependentConfigurationMethods {
-  private boolean m_create = false;
-  private boolean m_first = false;
-
-  @BeforeMethod
-  public void createInstance() {
-    m_create = true;
-  }
-  
-  @BeforeMethod(dependsOnMethods = { "createInstance"})
-  public void firstInvocation() {
-    assert m_create : "createInstance() was never called"; 
-    m_first = true;
-  }
-  
-  @Test
-  public void verifyDependents() {
-    assert m_create : "createInstance() was never called";
-    assert m_first : "firstInvocation() was never called";
-  }
-}
diff --git a/test/src/test/dependent/SampleDependentMethods.java b/test/src/test/dependent/SampleDependentMethods.java
deleted file mode 100644
index fa824f4..0000000
--- a/test/src/test/dependent/SampleDependentMethods.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class exercises dependent methods
- *
- * @author Cedric Beust, Aug 19, 2004
- * 
- */
-public class SampleDependentMethods {
-  private boolean m_oneA = false;
-  private boolean m_oneB = false;
-  private boolean m_secondA = false;
-  private boolean m_thirdA = false;
-  
-  @Test
-  public void oneA() {
-//    ppp("oneA");
-//    assert false : "TEMPORARY FAILURE";
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_oneA = true;
-  }
-  
-  @Test
-  public void canBeRunAnytime() {
-    
-  }
-  
-  @Test(dependsOnMethods= { "oneA", "oneB" })
-  public void secondA() {
-//    ppp("secondA");
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_secondA = true;
-
-  }
-
-  @Test(dependsOnMethods= { "secondA" })
-  public void thirdA() {
-//    ppp("thirdA");
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert m_secondA : "secondA wasn't run";
-    assert ! m_thirdA : "thirdA shouldn't have been run yet";
-    m_thirdA = true;
-
-}
-
-  @Test
-  public void oneB() {
-//    ppp("oneB");
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_oneB = true;
-  }
-  
-  @AfterClass
-  public void tearDown() {
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert m_secondA : "secondA wasn't run";
-    assert m_thirdA : "thirdA wasn't run";
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[SampleDependentMethods] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/dependent/SampleDependentMethods2.java b/test/src/test/dependent/SampleDependentMethods2.java
deleted file mode 100644
index fe6cd0b..0000000
--- a/test/src/test/dependent/SampleDependentMethods2.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class exercises dependent methods
- *
- * @author Cedric Beust, Aug 19, 2004
- * 
- */
-public class SampleDependentMethods2 {
-  private boolean m_oneA = false;
-  private boolean m_oneB = false;
-  private boolean m_secondA = false;
-  private boolean m_thirdA = false;
-  
-  @Test(groups = { "one" })
-  public void oneA() {
-//    ppp("oneA");
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_oneA = true;
-  }
-  
-  @Test
-  public void canBeRunAnytime() {
-    
-  }
-  
-  @Test(dependsOnGroups = { "one" } )
-  public void secondA() {
-//    ppp("secondA");
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_secondA = true;
-  }
-
-  @Test(dependsOnMethods= { "secondA" })
-  public void thirdA() {
-//    ppp("thirdA");
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert m_secondA : "secondA wasn't run";
-    assert ! m_thirdA : "thirdA shouldn't have been run yet";
-    m_thirdA = true;
-  }
-
-  @Test(groups = { "one" })
-  public void oneB() {
-//    ppp("oneB");
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_oneB = true;
-  }
-  
-  @AfterClass
-  public void tearDown() {
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert m_secondA : "secondA wasn't run";
-    assert m_thirdA : "thirdA wasn't run";
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[SampleDependentMethods] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/dependent/SampleDependentMethods3.java b/test/src/test/dependent/SampleDependentMethods3.java
deleted file mode 100644
index 8ae0b46..0000000
--- a/test/src/test/dependent/SampleDependentMethods3.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-
-/**
- * This class tests overloaded dependent methods
- *
- * @author Cedric Beust, Aug 19, 2004
- * 
- */
-public class SampleDependentMethods3 {
-  private boolean m_oneA = false;
-  private boolean m_oneB = false;
-  private boolean m_secondA = false;
-  
-  @Test
-  public void one() {
-//    ppp("oneA");
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_oneA = true;
-  }
-  
-  @Parameters({ "foo" })
-  @Test
-  public void one(String s) {
-//    ppp("oneB");
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    assert "Cedric".equals(s) : "Expected parameter value Cedric but got " + s;
-    m_oneB = true;    
-  }
-
-  @Test(dependsOnMethods = { "one" } )
-  public void secondA() {
-//    ppp("secondA");
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert ! m_secondA : "secondA shouldn't have been run yet";
-    m_secondA = true;
-  }
-
-  @AfterClass
-  public void tearDown() {
-    assert m_oneA : "oneA wasn't run";
-    assert m_oneB : "oneB wasn't run";
-    assert m_secondA : "secondA wasn't run";
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[SampleDependentMethods] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/dependent/SampleDependentMethods4.java b/test/src/test/dependent/SampleDependentMethods4.java
deleted file mode 100644
index c6d25e1..0000000
--- a/test/src/test/dependent/SampleDependentMethods4.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.dependent;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class SampleDependentMethods4 {
-
-  @Test
-  public void step1() {
-  } 
-
-  @Test(dependsOnMethods = { "step1" })
-  public void step2() {
-    Assert.assertTrue(false, "Problem in step2");
-  }
-
-  @Test(dependsOnMethods = { "step2" })
-  public void step3() {
-  }
-}
diff --git a/test/src/test/dependent/SampleDependentMethods5.java b/test/src/test/dependent/SampleDependentMethods5.java
deleted file mode 100644
index e0c9575..0000000
--- a/test/src/test/dependent/SampleDependentMethods5.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class SampleDependentMethods5 {
-  
-  @Test
-  public void step1() {
-  }
-
-  @Test(dependsOnMethods = { "step1", "blablabla" })
-  public void step2() {
-  }
-}
diff --git a/test/src/test/dependent/SampleDependentMethods6.java b/test/src/test/dependent/SampleDependentMethods6.java
deleted file mode 100644
index ee8cc10..0000000
--- a/test/src/test/dependent/SampleDependentMethods6.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.dependent;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class SampleDependentMethods6 {
-  @Test(dependsOnMethods = { "step2" })
-  public void step1() {
-  }
-
-  @Test(dependsOnMethods = { "step1" })
-  public void step2() {
-  }
-}
diff --git a/test/src/test/dependent/Test1.java b/test/src/test/dependent/Test1.java
deleted file mode 100644
index 18ca788..0000000
--- a/test/src/test/dependent/Test1.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package test.dependent;
-
-public class Test1 {
-
-}
diff --git a/test/src/test/dependent/functionality1/Config.java b/test/src/test/dependent/functionality1/Config.java
deleted file mode 100644
index c4a4d2b..0000000
--- a/test/src/test/dependent/functionality1/Config.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.dependent.functionality1;
-
-import org.testng.annotations.BeforeSuite;
-
-public class Config {
-
-   @BeforeSuite (groups = "other")
-   public void beforeSuite(){
-       System.out.println("BeforeSuite group 'other'");
-   }
-}
diff --git a/test/src/test/dependent/functionality1/Test1.java b/test/src/test/dependent/functionality1/Test1.java
deleted file mode 100644
index 4b06b55..0000000
--- a/test/src/test/dependent/functionality1/Test1.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.dependent.functionality1;
-
-import org.testng.annotations.Test;
-
- at Test (groups = "tests.functional.package")
-public class Test1 {
-
-   public void test1_1(){
-       System.out.println("Test 1_1");
-   }
-   public void test1_2(){
-       System.out.println("Test 1_2");
-   }
-}
diff --git a/test/src/test/dependent/functionality1/Test2.java b/test/src/test/dependent/functionality1/Test2.java
deleted file mode 100644
index 2a45541..0000000
--- a/test/src/test/dependent/functionality1/Test2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.dependent.functionality1;
-
-import org.testng.annotations.Test;
-
- at Test(groups = "tests.functional.upload", dependsOnGroups = "tests.functional.package")
-public class Test2 {
-
-  public void test2_1() {
-    System.out.println("Test 2_1");
-  }
-
-  public void test2_2() {
-    System.out.println("Test 2_2");
-  }
-}
diff --git a/test/src/test/dependsongroup/DependsOnGroupsTest.java b/test/src/test/dependsongroup/DependsOnGroupsTest.java
deleted file mode 100644
index 63e2b35..0000000
--- a/test/src/test/dependsongroup/DependsOnGroupsTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test.dependsongroup;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class DependsOnGroupsTest extends SimpleBaseTest {
-
-  @Test
-  public void methodsShouldBeGroupedByClasses() {
-    TestNG tng = create(new Class[] {
-        ZeroSampleTest.class, FirstSampleTest.class, SecondSampleTest.class
-    });
-    
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    String[] expected = new String[] {
-        "zeroA", "zeroB",
-        "firstA", "firstB",
-        "secondA", "secondB"
-    };
-    for (int i = 0; i < expected.length; i++) {
-      ITestResult testResult = tla.getPassedTests().get(i);
-      Assert.assertEquals(testResult.getMethod().getMethodName(), expected[i]);
-    }
-  }
-}
diff --git a/test/src/test/dependsongroup/FirstSampleTest.java b/test/src/test/dependsongroup/FirstSampleTest.java
deleted file mode 100644
index 2fb354b..0000000
--- a/test/src/test/dependsongroup/FirstSampleTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.dependsongroup;
-
-import org.testng.annotations.Test;
-
- at Test(groups = { "first" }, dependsOnGroups = { "zero" })
-public class FirstSampleTest {
-
-  @Test
-  public void firstA() {
-//    System.out.println("firstA");
-  }
-
-  @Test
-  public void firstB() {
-//    System.out.println("firstB");
-  }
-
-}
-
diff --git a/test/src/test/dependsongroup/SecondSampleTest.java b/test/src/test/dependsongroup/SecondSampleTest.java
deleted file mode 100644
index 34a0d66..0000000
--- a/test/src/test/dependsongroup/SecondSampleTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.dependsongroup;
-
-import org.testng.annotations.Test;
-
- at Test(groups = { "second" }, dependsOnGroups = { "zero" })
-public class SecondSampleTest {
-
-  @Test
-  public void secondA() {
-//    System.out.println("secondA");
-  }
-
-  @Test
-  public void secondB() {
-//    System.out.println("secondB");
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/dependsongroup/TestFixture1.java b/test/src/test/dependsongroup/TestFixture1.java
deleted file mode 100644
index d0647a5..0000000
--- a/test/src/test/dependsongroup/TestFixture1.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.dependsongroup;
-
-import org.testng.annotations.BeforeTest;
-
-
-public class TestFixture1 {
-  @BeforeTest(groups={"test", "testgroup"})
-  public void setup() {
-  }
-  
-}
diff --git a/test/src/test/dependsongroup/TestFixture2.java b/test/src/test/dependsongroup/TestFixture2.java
deleted file mode 100644
index 3479d5a..0000000
--- a/test/src/test/dependsongroup/TestFixture2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.dependsongroup;
-
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-
-public class TestFixture2 {
-  @BeforeTest(groups={"test"}, dependsOnGroups={"testgroup"})
-  public void setup() {
-  }
-
-  @Test(groups={"test"})  //@@
-  public void testMethod() {
-  }
-}
diff --git a/test/src/test/dependsongroup/ZeroSampleTest.java b/test/src/test/dependsongroup/ZeroSampleTest.java
deleted file mode 100644
index 21ba07f..0000000
--- a/test/src/test/dependsongroup/ZeroSampleTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.dependsongroup;
-
-import org.testng.annotations.Test;
-
- at Test(groups = { "zero" })
-public class ZeroSampleTest {
-
-  @Test
-  public void zeroA() {
-//    System.out.println("zeroA");
-  }
-
-  @Test
-  public void zeroB() {
-//    System.out.println("zeroB");
-  }
-
-}
-
diff --git a/test/src/test/dependsongroup/suite.xml b/test/src/test/dependsongroup/suite.xml
deleted file mode 100644
index c5c182a..0000000
--- a/test/src/test/dependsongroup/suite.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
-<suite name="webpublic" verbose="10">
-    <test name="test">
-        <groups>
-            <run>
-                <include name="test" />
-            </run>
-        </groups>
-        
-        <packages>
-            <package name="test.dependsongroup" />
-        </packages>
-    </test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/distributed/DistributedTest.java b/test/src/test/distributed/DistributedTest.java
deleted file mode 100644
index ee20792..0000000
--- a/test/src/test/distributed/DistributedTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package test.distributed;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Random;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-import org.testng.remote.SuiteDispatcher;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.BaseDistributedTest;
-
-import testhelper.OutputDirectoryPatch;
-
-public class DistributedTest extends BaseDistributedTest {
-  
-  private List<Thread> m_hostThreads = new ArrayList<Thread>();
-
-  protected Thread startSlave(final String filename) {
-    Thread result = new Thread(new Runnable() {
-      public void run() {
-        TestNG.main(new String[] { "-slave", filename, "-d", OutputDirectoryPatch.getOutputDirectory() });       
-      }
-    });
-    result.setName("Slave-" + filename);
-    result.start();
-    m_hostThreads.add(result);
-    return result;
-  }
-  
-  private File createMasterProperties(String strategy)
-  throws IOException 
-  {
-    String fileName = "remote";
-    
-    File result = File.createTempFile(fileName, ".properties");
-    result.deleteOnExit();
-    Properties p = new Properties();
-    p.setProperty("testng.hosts", "localhost:" + m_ports[0] + " localhost:" + m_ports[1]);
-    p.setProperty("testng.master.strategy", strategy);
-    p.setProperty("testng.verbose", "0");
-    p.setProperty("testng.master.adpter", "org.testng.remote.adapter.DefaultMastertAdapter");
-    FileOutputStream fos = new FileOutputStream(result);
-    p.store(fos, "Automatically generated by tests");
-    fos.close();    
-    
-    return result;
-  }
-  
-  private File createSlaveProperties(String port)
-  throws IOException 
-  {
-    String fileName = "remote";
-    
-    File result = File.createTempFile(fileName, ".properties");
-    result.deleteOnExit();
-    Properties p = new Properties();
-    p.setProperty("testng.verbose", "0");
-    p.setProperty("slave.port", port);
-    p.setProperty("testng.slave.adpter", "org.testng.remote.adapter.DefaultWorkerAdapter");
-    FileOutputStream fos = new FileOutputStream(result);
-    p.store(fos, "Automatically generated by tests");
-    fos.close();    
-    
-    return result;
-  }
-  
-  private XmlSuite createSuite(String name, Class[] classes) {
-    XmlSuite result = new XmlSuite();
-    result.setName(name);
-    
-    for (Class c : classes) {
-      XmlTest test1 = new XmlTest(result);
-      test1.setName(c.getName());
-      XmlClass class1 = new XmlClass(c);
-      test1.getXmlClasses().add(class1);
-    }
-    
-    return result;
-  }
-  
-//  @ Configuration(beforeTestClass = true) 
-  private void startSlaves() throws IOException{
-	  int port = new Random().nextInt(50000) + 2000;
-	  m_ports = new String[] { Integer.toString(port), Integer.toString(port+1)};
-
-	  File slaveFile = createSlaveProperties(m_ports[0]);
-	  startSlave( slaveFile.getCanonicalPath());
-	  
-	  slaveFile = createSlaveProperties(m_ports[1]);
-	  startSlave( slaveFile.getCanonicalPath());
-  }
-
-  private String[] m_ports = new String[2];
-
-  public TestListenerAdapter twoHosts(String strategy) throws IOException {  
-    TestNG tng = new TestNG();
-    tng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    
-    File masterFile = createMasterProperties(strategy);
-    tng.setMaster(masterFile.getAbsolutePath());
-    
-    XmlSuite suite = createSuite("DistributedSuite1", new Class[] { Test1.class, Test2.class });
-    tng.setXmlSuites(Arrays.asList(new XmlSuite[] { suite }));
-    
-    TestListenerAdapter result = new TestListenerAdapter();
-    tng.addListener(result);
-    tng.run();
-    
-    String[] passed = {
-        "f1", "f2"
-    };
-    String[] failed = {};
-    String[] skipped = {};
-
-    verifyTests("Passed", passed, toMap(result.getPassedTests()));
-    verifyTests("Failed", failed, toMap(result.getFailedTests()));
-    verifyTests("Skipped", skipped, toMap(result.getSkippedTests()));
-    
-    return result;
-  }
-  
-  @Test
-  public void twoHostsWithTestStrategy() throws IOException {
-    startSlaves();
-    TestListenerAdapter listener = twoHosts(SuiteDispatcher.STRATEGY_TEST);
-    
-    boolean found1 = false;
-    boolean found2 = false;
-    for (ITestResult tr : listener.getPassedTests()) {
-      String host = tr.getHost();
-      if (! found1) found1 = host.contains(m_ports[0]);
-      if (! found2) found2 = host.contains(m_ports[1]);
-    }
-    Assert.assertTrue(found1, "No tests ran on port " + m_ports[0]);
-    Assert.assertTrue(found2, "No tests ran on port " + m_ports[1]);    
-  }
-  
-  @Test
-  public void twoHostsWithSuiteStrategy() throws IOException {
-    startSlaves();
-    TestListenerAdapter listener = twoHosts( SuiteDispatcher.STRATEGY_SUITE);
-  }
-
-  private Map<String, ITestResult> toMap(List<ITestResult> results) {
-    Map<String, ITestResult> result = new HashMap<String, ITestResult>();
-    for (ITestResult tr : results) {
-      result.put(tr.getName(), tr);
-    }
-    
-    return result;
-  }
-  private void ppp(String string) {
-    System.out.println("[DistributedTest] " + string);
-  }
-}
-
diff --git a/test/src/test/distributed/Test1.java b/test/src/test/distributed/Test1.java
deleted file mode 100644
index 8868ffc..0000000
--- a/test/src/test/distributed/Test1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.distributed;
-
-import org.testng.annotations.Test;
-
-public class Test1 {
-  @Test
-  public void f1() {
-//    ppp("f1");
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[Test1] " + s);
-  }
-}
-
diff --git a/test/src/test/distributed/Test2.java b/test/src/test/distributed/Test2.java
deleted file mode 100644
index dd5683d..0000000
--- a/test/src/test/distributed/Test2.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.distributed;
-
-import org.testng.annotations.Test;
-
-public class Test2 {
-  @Test 
-  public void f2() {
-//    ppp("f2");
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[Test2] " + s);
-  }    
-}
diff --git a/test/src/test/expectedexceptions/ExpectedExceptionsTest.java b/test/src/test/expectedexceptions/ExpectedExceptionsTest.java
deleted file mode 100644
index c571133..0000000
--- a/test/src/test/expectedexceptions/ExpectedExceptionsTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.expectedexceptions;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class ExpectedExceptionsTest extends BaseTest {
-  
-  @Test
-  public void expectedExceptionsDeprecatedSyntax() {
-    runTest("test.expectedexceptions.SampleExceptions",
-        new String[] { "shouldPass" },
-        new String[] { "shouldFail1", "shouldFail2", "shouldFail3" },
-        new String[] {});
-  }
-
-  @Test
-  public void expectedExceptions() {
-    runTest("test.expectedexceptions.SampleExceptions2",
-        new String[] { "shouldPass", "shouldPass2", "shouldPass3" },
-        new String[] { "shouldFail1", "shouldFail2", "shouldFail3", "shouldFail4" },
-        new String[] {});
-  }
-
-}
-
-
diff --git a/test/src/test/expectedexceptions/ParametersExceptionTest.java b/test/src/test/expectedexceptions/ParametersExceptionTest.java
deleted file mode 100644
index a8f8900..0000000
--- a/test/src/test/expectedexceptions/ParametersExceptionTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.expectedexceptions;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import org.xml.sax.SAXException;
-
-
-/**
- * This class/interface 
- */
-public class ParametersExceptionTest {
-    @Test(dataProvider="A")
-    public void testA(Exception err) {
-      System.out.println("testA");
-    }
-
-    @DataProvider(name="A")
-    protected Object[][] dp() {
-      return new Object[][] { {new IOException(), new SAXException() } };
-    }
-
-    @AfterMethod
-    protected void verify(Method method) {
-      Assert.assertTrue(false, "forced failure");
-    }
-}
diff --git a/test/src/test/expectedexceptions/SampleExceptions.java b/test/src/test/expectedexceptions/SampleExceptions.java
deleted file mode 100644
index 2cfc23a..0000000
--- a/test/src/test/expectedexceptions/SampleExceptions.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package test.expectedexceptions;
-
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Test;
-
-/**
- * This class tests @ExpectedExceptions
- * 
- * @author cbeust
- */
-public class SampleExceptions {
-
-  @Test
-  @ExpectedExceptions({ NumberFormatException.class} )
-  public void shouldPass() {
-    throw new NumberFormatException();
-  }
-
-  @Test
-  @ExpectedExceptions({ NumberFormatException.class} )
-  public void shouldFail1() {
-    throw new RuntimeException();
-  }
-
-  @Test
-  @ExpectedExceptions({ NumberFormatException.class} )
-  public void shouldFail2() {
-  }
-
-  @Test
-  @ExpectedExceptions(RuntimeException.class)
-  public void shouldFail3() {
-  }
-//  @Test(expectedExceptions = NumberFormatException.class)
-//  public void throwWrongException() {
-//      throw new NullPointerException();
-//  }
-  
-//  @Test
-//  @ExpectedExceptions({ FileNotFoundException.class, IOException.class })
-//  public void shouldPass2() throws Exception {
-//    throw new FileNotFoundException();
-//  }
-  
-}
diff --git a/test/src/test/expectedexceptions/SampleExceptions2.java b/test/src/test/expectedexceptions/SampleExceptions2.java
deleted file mode 100644
index 3d203e1..0000000
--- a/test/src/test/expectedexceptions/SampleExceptions2.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package test.expectedexceptions;
-
-import org.testng.annotations.Test;
-
-/**
- * This class tests @ExpectedExceptions
- * 
- * @author cbeust
- */
-public class SampleExceptions2 {
-
-  @Test(expectedExceptions = NumberFormatException.class )
-  public void shouldPass() {
-    throw new NumberFormatException();
-  }
-
-  @Test(expectedExceptions = NumberFormatException.class)
-  public void shouldFail1() {
-    throw new RuntimeException();
-  }
-
-  @Test(expectedExceptions = NumberFormatException.class)
-  public void shouldFail2() {
-  }
-
-  @Test(expectedExceptions = NumberFormatException.class,
-      expectedExceptionsMessageRegExp = ".*bomb.*")
-  public void shouldPass2() {
-    throw new NumberFormatException("This should not bomb at all");
-  }
-
-  @Test(expectedExceptions = NumberFormatException.class,
-      expectedExceptionsMessageRegExp = ".*bombc.*")
-  public void shouldFail3() {
-    throw new NumberFormatException("This should bomb for good");
-  }
-  
-  @Test(expectedExceptions = NumberFormatException.class, expectedExceptionsMessageRegExp = ".*")
-  public void shouldPass3() {
-    throw new NumberFormatException(null);
-  }
-
-  @Test(expectedExceptions = RuntimeException.class)
-  public void shouldFail4() {
-  }
-}
diff --git a/test/src/test/expectedexceptions/WrappedExpectedException.java b/test/src/test/expectedexceptions/WrappedExpectedException.java
deleted file mode 100644
index 831dc1c..0000000
--- a/test/src/test/expectedexceptions/WrappedExpectedException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.expectedexceptions;
-
-
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Test;
-
-public class WrappedExpectedException {
-  @Test(timeOut = 1000L)
-  @ExpectedExceptions({ IllegalStateException.class })
-  public void testTimeout() {
-    throw new IllegalStateException("expected failure");
-  }
-}
diff --git a/test/src/test/factory/Factory2Test.java b/test/src/test/factory/Factory2Test.java
deleted file mode 100644
index 66a3f65..0000000
--- a/test/src/test/factory/Factory2Test.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.Factory;
-
-/**
- * Factory to test that setUp methods are correctly interleaved even
- * when we use similar instances of a same test class.
- * 
- * @author cbeust
- */
-public class Factory2Test {
-  
-  @Factory()
-  public Object[] createObjects() 
-  {
-    return new Object[] { new Sample2(), new Sample2() };
-  }
-  
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryTest] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/factory/FactoryBase.java b/test/src/test/factory/FactoryBase.java
deleted file mode 100644
index 60e793c..0000000
--- a/test/src/test/factory/FactoryBase.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.Factory;
-
-public class FactoryBase {
-
-  @Factory
-  public Object[] create() {
-    return new Object[] {
-      new FactoryBaseSampleTest()
-    };
-  }
-}
diff --git a/test/src/test/factory/FactoryBaseSampleTest.java b/test/src/test/factory/FactoryBaseSampleTest.java
deleted file mode 100644
index b1de892..0000000
--- a/test/src/test/factory/FactoryBaseSampleTest.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.Test;
-
-public class FactoryBaseSampleTest {
-
-  @Test
-  public void f() {}
-}
diff --git a/test/src/test/factory/FactoryChild.java b/test/src/test/factory/FactoryChild.java
deleted file mode 100644
index 83ffd2a..0000000
--- a/test/src/test/factory/FactoryChild.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package test.factory;
-
-public class FactoryChild extends FactoryBase {
-
-}
diff --git a/test/src/test/factory/FactoryFailureSampleTest.java b/test/src/test/factory/FactoryFailureSampleTest.java
deleted file mode 100644
index 4b0b949..0000000
--- a/test/src/test/factory/FactoryFailureSampleTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-public class FactoryFailureSampleTest {
-
-  @Factory
-  public Object[] factory() {
-    throw new NullPointerException();
-  }
-
-  @Test
-  public void f() {
-  }
-}
diff --git a/test/src/test/factory/FactoryFailureTest.java b/test/src/test/factory/FactoryFailureTest.java
deleted file mode 100644
index 4d6f450..0000000
--- a/test/src/test/factory/FactoryFailureTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class FactoryFailureTest extends SimpleBaseTest {
-
-   @Test
-   public void factoryThrowingShouldNotRunTests() {
-     TestNG tng = create(FactoryFailureSampleTest.class);
-     TestListenerAdapter tla = new TestListenerAdapter();
-
-     try {
-       tng.run();
-       Assert.fail();
-     }
-     catch(Exception ex) {
-       // success
-     }
-   }
-}
diff --git a/test/src/test/factory/FactoryInSeparateClass.java b/test/src/test/factory/FactoryInSeparateClass.java
deleted file mode 100644
index 4b8d496..0000000
--- a/test/src/test/factory/FactoryInSeparateClass.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-/**
- * this is like the FactoryTest, except it creates test instances in a separate
- * class from the test class
- */
-public class FactoryInSeparateClass {
-  static private boolean m_wasRun = false;
-  static private int m_checkSum = 0;
-  
-  public static void addToSum(int i) {
-    m_checkSum += i; 
-  }
-
-  @BeforeTest
-  public void beforeTest() {
-    m_wasRun = false;
-    m_checkSum = 0;
-  }
-  
-  @Factory
-  public Object[] createObjects() {
-    return new Object[] {
-      new MyTest(1),
-      new MyTest(2),
-      new MyTest(3),
-    };
-  }
-
-   @Test(groups = "testMethodOnFactoryClass", dependsOnGroups={"MyTest"})
-    public void checkSum() {
-    m_wasRun = true;
-      assert (m_checkSum == 6) :
-        "Test instances made by factory did not invoke their test methods correctly.  expected 6 but got " + m_checkSum;
-    }
-  
-    public static boolean wasRun() {
-      return m_wasRun;
-    }
-}
-
diff --git a/test/src/test/factory/FactoryInSuperClassTest.java b/test/src/test/factory/FactoryInSuperClassTest.java
deleted file mode 100644
index d380dd9..0000000
--- a/test/src/test/factory/FactoryInSuperClassTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class FactoryInSuperClassTest extends SimpleBaseTest {
-
-  @Test
-  public void factoryInSuperClassShouldWork() {
-    TestNG tng = create(FactoryChild.class);
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-
-    Assert.assertEquals(tla.getPassedTests().size(), 1);
-  }
-}
diff --git a/test/src/test/factory/FactoryInterleavingSampleA.java b/test/src/test/factory/FactoryInterleavingSampleA.java
deleted file mode 100644
index f21ecda..0000000
--- a/test/src/test/factory/FactoryInterleavingSampleA.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class FactoryInterleavingSampleA {
-  public int m_n;
-
-  public FactoryInterleavingSampleA(int n) {
-    m_n = n;
-  }
-
-  private void log(Integer s) {
-    FactoryInterleavingTest.LOG.add(m_n * 10 + s);
-//    System.out.println(" Instance " + m_n + " " + s);
-  }
-
-  @Override
-  public String toString() {
-    return "[A n:" + m_n + "]";
-  }
-
-  @BeforeClass
-  public void bc() {
-    log(0);
-  }
-
-  @AfterClass
-  public void ac() {
-    log(3);
-  }
-
-  @Test
-  public void f1() {
-    log(1);
-  }
-
-  @Test
-  public void f2() {
-    log(2);
-  }
-
-}
diff --git a/test/src/test/factory/FactoryInterleavingSampleFactory.java b/test/src/test/factory/FactoryInterleavingSampleFactory.java
deleted file mode 100644
index 84a7580..0000000
--- a/test/src/test/factory/FactoryInterleavingSampleFactory.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Factory;
-
-public class FactoryInterleavingSampleFactory {
-  @Factory
-  public Object[] factory() {
-    return new Object[] {
-        new FactoryInterleavingSampleA(1), new FactoryInterleavingSampleA(2)
-    };
-  }
-
-  @BeforeClass
-  public void beforeB() {
-    System.out.println("Before B");
-  }
-}
-
diff --git a/test/src/test/factory/FactoryInterleavingTest.java b/test/src/test/factory/FactoryInterleavingTest.java
deleted file mode 100644
index e800fc3..0000000
--- a/test/src/test/factory/FactoryInterleavingTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
-
-import test.SimpleBaseTest;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class FactoryInterleavingTest extends SimpleBaseTest {
-
-  public static List<Integer> LOG = Lists.newArrayList();
-
-  @Test
-  public void methodsShouldBeInterleaved() {
-    TestNG tng = create(FactoryInterleavingSampleFactory.class);
-    tng.run();
-    Integer[] valid1 = {
-        10, 11, 12, 13,
-        20, 21, 22, 23,
-    };
-
-    Integer[] valid2 = {
-        20, 21, 22, 23,
-        10, 11, 12, 13,
-    };
-    Integer[] logArray = LOG.toArray(new Integer[LOG.size()]);
-    Assert.assertTrue(Arrays.equals(logArray, valid1) || Arrays.equals(logArray, valid2));
-  }
-}
diff --git a/test/src/test/factory/FactoryOrderMainTest.java b/test/src/test/factory/FactoryOrderMainTest.java
deleted file mode 100644
index 69de70b..0000000
--- a/test/src/test/factory/FactoryOrderMainTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-import java.util.List;
-
-public class FactoryOrderMainTest extends SimpleBaseTest {
-
-  @Test
-  public void factoriesShouldBeInvokedInTheOrderOfCreation() {
-    TestNG tng = create(FactoryOrderTest.class);
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    List<ITestResult> passed = tla.getPassedTests();
-    for (int i = 0; i < passed.size(); i++) {
-      Assert.assertEquals(((FactoryOrderSampleTest) passed.get(i).getInstance()).getValue(), i);
-    }
-  }
-}
diff --git a/test/src/test/factory/FactoryOrderSampleTest.java b/test/src/test/factory/FactoryOrderSampleTest.java
deleted file mode 100644
index ae82dc9..0000000
--- a/test/src/test/factory/FactoryOrderSampleTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class FactoryOrderSampleTest {
-
-  int value;
-
-  public FactoryOrderSampleTest(int j) {
-    value = j;
-    log("classC constructor " + value);
-  }
-
-  private void log(String string) {
-//    System.out.println(string);
-  }
-
-  @BeforeClass(groups = { "s1ds" })
-  public void setup() {
-    log("classC.BeforeClass " + value);
-  }
-
-  @Test(groups = { "s1ds" })
-  public void methodC1() throws Exception {
-//    Thread.sleep(1000);
-    log("classC.methodC1 " + value);
-  }
-
-  @AfterClass(groups = { "s1ds" })
-  public void cleanup() {
-    log("classC.AfterClass " + value);
-  }
-
-  @Override
-  public String toString() {
-    return "[FactoryOrderSampleTest " + value + "]";
-  }
-  
-  public int getValue() {
-    return value;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/factory/FactoryOrderTest.java b/test/src/test/factory/FactoryOrderTest.java
deleted file mode 100644
index f020c8c..0000000
--- a/test/src/test/factory/FactoryOrderTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.factory;
-
-
-import java.util.ArrayList;
-import java.util.List;
-import org.testng.annotations.Factory;
-
-public class FactoryOrderTest {
-
-   public FactoryOrderTest() {
-//       System.out.println("inside testFactory constructor");
-   }
-
-   @Factory
-   public static Object[] testF()
-   throws Exception {
-       List result = new ArrayList();
-//       System.out.println("inside factory: ");
-       int i = 0;
-       while (i < 5) {
-           result.add(new FactoryOrderSampleTest(i));
-           i++;
-       }
-       return result.toArray();
-   }
-}
\ No newline at end of file
diff --git a/test/src/test/factory/FactoryTest.java b/test/src/test/factory/FactoryTest.java
deleted file mode 100644
index f16865d..0000000
--- a/test/src/test/factory/FactoryTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.factory;
-
-import static org.testng.Assert.assertFalse;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Parameters;
-
-public class FactoryTest {
-  static boolean m_invoked = false;
-  
-  @Parameters({ "factory-param" })
-  @Factory
-  public Object[] createObjects(String param) 
-  {
-    assert "FactoryParam".equals(param) : "Incorrect param: " + param;
-    
-    assertFalse(m_invoked, "Should only be invoked once");
-    m_invoked = true;
-    
-    return new Object[] {
-        new FactoryTest2(42),
-        new FactoryTest2(43)
-    };
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryTest] " + s);
-  }
-  
-  @AfterSuite
-  public void afterSuite() {
-    m_invoked = false;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/factory/FactoryTest2.java b/test/src/test/factory/FactoryTest2.java
deleted file mode 100644
index ea31d97..0000000
--- a/test/src/test/factory/FactoryTest2.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.*;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class FactoryTest2 {
-  private static Map<Integer, Integer> m_numbers = new HashMap<Integer, Integer>();
-  private int m_number;
-  
-  public FactoryTest2() {
-    throw new RuntimeException("Shouldn't be invoked");    
-  }
-  
-  public static Map<Integer, Integer> getNumbers() {
-    return m_numbers;
-  }
-  
-  public FactoryTest2(int n) {
-    m_number = n;
-  }
-  
-  @Test(groups = { "first" })
-  public void testInt() {
-    Integer n = new Integer(m_number);
-    m_numbers.put(n, n);
-  }
-
-  @Override
-  public String toString() {
-    return "[FactoryTest2 " + m_number + "]";
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[FactoryTest2] " + s);
-  }
-  
-}
diff --git a/test/src/test/factory/FactoryWithDataProvider.java b/test/src/test/factory/FactoryWithDataProvider.java
deleted file mode 100644
index cf5b70c..0000000
--- a/test/src/test/factory/FactoryWithDataProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Factory;
-
-public class FactoryWithDataProvider {
-  
-  @DataProvider
-  public Object[][] dp() {
-    return new Object[][] {
-      new Object[] { new int[] { 3, 5 } },
-      new Object[] { new int [] { 7, 9 } },
-    };
-  }
-  
-  @Factory(dataProvider = "dp")
-  public Object[] factory(int[] array) {
-    List<Object> result = new ArrayList<Object>();
-    for (int n : array) {
-      result.add(new OddTest(n));
-    }
-    
-    return result.toArray();
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryWithDataProvider] " + s);
-  }
-
-}
diff --git a/test/src/test/factory/FactoryWithDataProviderTest.java b/test/src/test/factory/FactoryWithDataProviderTest.java
deleted file mode 100644
index d5945c6..0000000
--- a/test/src/test/factory/FactoryWithDataProviderTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-public class FactoryWithDataProviderTest {
-
-  /**
-   * Verify that a factory can receive a data provider
-   */
-  @Test
-  public void verifyDataProvider() {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { FactoryWithDataProvider.class });
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), 4);
-    
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[FactoryWithDataProviderTest] " + s);
-  }
-}
diff --git a/test/src/test/factory/FactoryWithInstanceInfoTest.java b/test/src/test/factory/FactoryWithInstanceInfoTest.java
deleted file mode 100644
index a0c8a4b..0000000
--- a/test/src/test/factory/FactoryWithInstanceInfoTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package test.factory;
-
-import static org.testng.Assert.assertFalse;
-
-import org.testng.IInstanceInfo;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Parameters;
-import org.testng.internal.InstanceInfo;
-
-public class FactoryWithInstanceInfoTest {
-  static boolean m_invoked = false;
-  
-  @Parameters({ "factory-param" })
-  @Factory
-  public IInstanceInfo[] createObjectsWithInstanceInfo(String param) 
-  {
-    assert "FactoryParam".equals(param) : "Incorrect param: " + param;
-    
-    assertFalse(m_invoked, "Should only be invoked once");
-    m_invoked = true;
-    
-    return new IInstanceInfo[] {
-        new InstanceInfo(FactoryWithInstanceInfoTest2.class, 
-            new FactoryWithInstanceInfoTest2(42)),
-        new InstanceInfo(FactoryWithInstanceInfoTest2.class, 
-            new FactoryWithInstanceInfoTest2(43)),
-    };
-  }
-  
-  @BeforeSuite
-  public void beforeSuite() {
-    m_invoked = false;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryWithInstanceInfoTest] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/factory/FactoryWithInstanceInfoTest2.java b/test/src/test/factory/FactoryWithInstanceInfoTest2.java
deleted file mode 100644
index 6eab00d..0000000
--- a/test/src/test/factory/FactoryWithInstanceInfoTest2.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.*;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * This class is created by FactoryWithInstanceInfoTest2
- * 
- * @author cbeust
- */
-public class FactoryWithInstanceInfoTest2 {
-  private static Map<Integer, Integer> m_numbers = new HashMap<Integer, Integer>();
-  private int m_number;
-  
-  public FactoryWithInstanceInfoTest2() {
-    throw new RuntimeException("Shouldn't be invoked");    
-  }
-  
-  public static Map<Integer, Integer> getNumbers() {
-    return m_numbers;
-  }
-  
-  public FactoryWithInstanceInfoTest2(int n) {
-    m_number = n;
-  }
-  
-  @Test(groups = { "first" })
-  public void testInt() {
-    Integer n = new Integer(m_number);
-    m_numbers.put(n, n);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryTest2] " + s);
-  }
-  
-}
diff --git a/test/src/test/factory/MyTest.java b/test/src/test/factory/MyTest.java
deleted file mode 100644
index a2a756a..0000000
--- a/test/src/test/factory/MyTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.Test;
-
-public class MyTest {
-  private int i;
-
-  // in this test, our default constructor sets s to a value that will cause a failure
-  // the valid test instances should come from the factory
-  public MyTest() { 
-    i = 0;
-  }
-
-  public MyTest(int i) {
-    this.i = i;
-  }
-
-  @Test(groups = "MyTest")
-  public void testMethod() {
-    FactoryInSeparateClass.addToSum(i);
-    //    assert i > 0 : "MyTest was not constructed with correct params";
-    assert (i != 0) : "My test was not created by the factory";
-  }
-  
-  @Test(dependsOnGroups = "testMethodOnFactoryClass")
-  public void verifyThatTestMethodOnFactoryClassWasRun() {
-    assert FactoryInSeparateClass.wasRun() : "Test method on factory class wasn't run";
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/factory/NestedFactoryTest.java b/test/src/test/factory/NestedFactoryTest.java
deleted file mode 100644
index d2880d3..0000000
--- a/test/src/test/factory/NestedFactoryTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package test.factory;
-
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-public class NestedFactoryTest {
-  private int m_capacity = 2;
-  private float m_loadFactor = 0.4f;
-
-  public class NestedFactory {
-    @Factory 
-    public Object[] createInstances() {
-      return new NestedFactoryTest[] {
-        new NestedFactoryTest(1, 0.1f),
-        new NestedFactoryTest(10, 0.5f),
-      };
-    }
-  };
-  
-  private static int m_instanceCount = 0;
-  public NestedFactoryTest() {
-    m_instanceCount++;
-  }
-
-  public NestedFactoryTest(int capacity, float loadFactor) {
-    m_instanceCount++;    
-   this.m_capacity=capacity;
-   this.m_loadFactor=loadFactor;
-  }
-
-  @Test
-  public void verify() {
-    // Should have three instances:  the default one created by TestNG
-    // and two created by the factory
-    assertEquals(m_instanceCount, 3);
-    assertTrue((m_capacity == 1 && m_loadFactor == 0.1f) ||
-        m_capacity == 10 && m_loadFactor == 0.5f);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[NestedFactoryTest] " + s);
-  }
-}
diff --git a/test/src/test/factory/NestedStaticFactoryTest.java b/test/src/test/factory/NestedStaticFactoryTest.java
deleted file mode 100644
index 99ce147..0000000
--- a/test/src/test/factory/NestedStaticFactoryTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package test.factory;
-
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-public class NestedStaticFactoryTest {
-  private int m_capacity = 2;
-  private float m_loadFactor = 0.4f;
-
-  static public class NestedStaticFactory {
-    @Factory 
-    public Object[] createInstances() {
-      return new NestedStaticFactoryTest[] {
-        new NestedStaticFactoryTest(1, 0.1f),
-        new NestedStaticFactoryTest(10, 0.5f),
-      };
-    }
-  };
-  
-  private static int m_instanceCount = 0;
-  public NestedStaticFactoryTest() {
-    m_instanceCount++;
-  }
-
-  public NestedStaticFactoryTest(int capacity, float loadFactor) {
-    m_instanceCount++;    
-   this.m_capacity=capacity;
-   this.m_loadFactor=loadFactor;
-  }
-
-  @Test
-  public void verify() {
-    // Should have three instances:  the default one created by TestNG
-    // and two created by the factory
-    assertEquals(m_instanceCount, 2);
-    assertTrue((m_capacity == 1 && m_loadFactor == 0.1f) ||
-        m_capacity == 10 && m_loadFactor == 0.5f);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[NestedStaticFactoryTest] " + s);
-  }
-}
diff --git a/test/src/test/factory/OddTest.java b/test/src/test/factory/OddTest.java
deleted file mode 100644
index 4f4eff6..0000000
--- a/test/src/test/factory/OddTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class OddTest {
-  private int m_n;
-  
-  public OddTest(int n) {
-    m_n = n;
-  }
-  
-  @Test
-  public void verify() {
-    Assert.assertTrue(m_n % 2 == 1);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[OddTest] " + s);
-  }
-}
diff --git a/test/src/test/factory/Sample2.java b/test/src/test/factory/Sample2.java
deleted file mode 100644
index 7b9938e..0000000
--- a/test/src/test/factory/Sample2.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package test.factory;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-/**
- * Test that setUp methods are correctly interleaved even
- * when we use similar instances of a same test class.
- * 
- * @author cbeust
- */
-public class Sample2 {
-  private static List<String> m_methodList = new ArrayList<String>();
-
-  @BeforeSuite
-  public void init() {
-    m_methodList = new ArrayList<String>();
-  }
-  
-  @BeforeMethod
-  public void setUp() {
-    ppp("SET UP");
-    m_methodList.add("setUp");
-  }
-  
-  @AfterMethod
-  public void tearDown() {
-    ppp("TEAR DOWN");
-    m_methodList.add("tearDown");
-  }
-
-  @AfterSuite
-  public void afterSuite() {
-    String[] expectedStrings = {
-        "setUp",
-        "testInputImages",
-        "tearDown",
-        "setUp",
-        "testInputImages",
-        "tearDown",
-        "setUp",
-        "testImages",
-        "tearDown",
-        "setUp",
-        "testImages",
-        "tearDown",
-    };
-    List<String> expected = new ArrayList<String>();
-    for (String s : expectedStrings) {
-      expected.add(s);
-    }
-    
-    ppp("ORDER OF METHODS:");
-    for (String s : m_methodList) {
-      ppp("   " + s);
-    }
-    
-    assertEquals(m_methodList, expected);
-  }
-  
-  @Test
-  public void testInputImages() {
-    m_methodList.add("testInputImages");
-    ppp("TESTINPUTIMAGES");
-  }
-  
-  @Test(dependsOnMethods={"testInputImages"})
-  public void testImages() {
-    m_methodList.add("testImages");
-  }
-  
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[Sample2] " + s);
-    }
-  }
-}
diff --git a/test/src/test/factory/TestClassAnnotationTest.java b/test/src/test/factory/TestClassAnnotationTest.java
deleted file mode 100644
index 096c87d..0000000
--- a/test/src/test/factory/TestClassAnnotationTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package test.factory;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-/**
- * Make sure that @Factory methods are not counted as @Test in the
- * presence of a class-scoped @Test annotation.
- * 
- * Created on Mar 30, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
- at Test
-public class TestClassAnnotationTest {
-  
-  private int m_count;
-  
-  @Factory
-  public Object[] createFixture() {
-    ppp("FACTORY");
-    m_count++;
-    return new Object[] { new Object[] { new Object() }};
-  }
-
-  public void testOne() {
-    ppp("TESTONE");
-    m_count++;
-  }
-  
-  @AfterClass
-  public void verify() {
-    ppp("VERIFY");
-    Assert.assertEquals(m_count, 2);    
-  }
-  
-  private static void ppp(String s) {
-    if (false) {
-      System.err.println("[FactoryTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/factory/VerifyFactoryTest.java b/test/src/test/factory/VerifyFactoryTest.java
deleted file mode 100644
index f1cfb6e..0000000
--- a/test/src/test/factory/VerifyFactoryTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.*;
-
-import java.util.Map;
-
-public class VerifyFactoryTest {
-  @Test(dependsOnGroups = { "first" } )
-  public void mainCheck() {
-    Map<Integer, Integer> numbers = FactoryTest2.getNumbers();
-    assert null != numbers.get(new Integer(42))
-      : "Didn't find 42";
-    assert null != numbers.get(new Integer(43))
-      : "Didn't find 43";
-    assert 2 == numbers.size()
-      : "Expected 2 numbers, found " + (numbers.size());
-  }
-
-
-}
diff --git a/test/src/test/factory/VerifyFactoryWithInstanceInfoTest.java b/test/src/test/factory/VerifyFactoryWithInstanceInfoTest.java
deleted file mode 100644
index 6d91054..0000000
--- a/test/src/test/factory/VerifyFactoryWithInstanceInfoTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.factory;
-
-import org.testng.annotations.*;
-
-import java.util.Map;
-
-public class VerifyFactoryWithInstanceInfoTest {
-  @Test(dependsOnGroups = { "first" } )
-  public void mainCheck() {
-    Map<Integer, Integer> numbers = FactoryWithInstanceInfoTest2.getNumbers();
-    assert null != numbers.get(new Integer(42))
-      : "Didn't find 42";
-    assert null != numbers.get(new Integer(43))
-      : "Didn't find 43";
-    assert 2 == numbers.size()
-      : "Expected 2 numbers, found " + (numbers.size());
-  }
-
-
-}
diff --git a/test/src/test/factory/classconf/XClassOrderWithFactory.java b/test/src/test/factory/classconf/XClassOrderWithFactory.java
deleted file mode 100644
index ebb46f7..0000000
--- a/test/src/test/factory/classconf/XClassOrderWithFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.factory.classconf;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class XClassOrderWithFactory {
-  public static final String EXPECTED_LOG= "BTABTABTA";
-  public static final StringBuffer LOG= new StringBuffer();
-  
-  @Factory
-  public Object[] createInstances() throws Exception {
-      return new Object[] {
-              new XClassOrderTest(), new XClassOrderTest(), new XClassOrderTest()
-          };
-  }
-  
-  public static class XClassOrderTest {
-    @BeforeClass
-    public void beforeClass() {
-      LOG.append("B");
-    }
-  
-    public @Test void test() {
-      LOG.append("T");
-    }
-  
-    public @AfterClass void afterClass() {
-      LOG.append("A");
-    }
-  }
-}
diff --git a/test/src/test/factory/classconf/XClassOrderWithFactoryTest.java b/test/src/test/factory/classconf/XClassOrderWithFactoryTest.java
deleted file mode 100644
index 1dbe3b0..0000000
--- a/test/src/test/factory/classconf/XClassOrderWithFactoryTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.factory.classconf;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class XClassOrderWithFactoryTest {
-  @Test
-  public void testBeforeAfterClassInvocationsWithFactory() {
-    TestNG testng= new TestNG();
-    testng.setTestClasses(new Class[] {XClassOrderWithFactory.class});
-    TestListenerAdapter tla = new TestListenerAdapter();
-    testng.addListener(tla);
-    testng.setVerbose(0);
-    testng.run();
-    Assert.assertEquals(XClassOrderWithFactory.LOG.toString(), XClassOrderWithFactory.EXPECTED_LOG);
-  }
-}
diff --git a/test/src/test/failedreporter/FailedReporter2SampleTest.java b/test/src/test/failedreporter/FailedReporter2SampleTest.java
deleted file mode 100644
index 25f1a47..0000000
--- a/test/src/test/failedreporter/FailedReporter2SampleTest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.failedreporter;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class FailedReporter2SampleTest {
-  @DataProvider
-  public Object[][] dp() {
-    return new Object[][] { 
-      new Object[] { 0 },  
-      new Object[] { 1 },
-      new Object[] { 2 },  
-    };
-  }
-
-  @Test(dataProvider = "dp")
-  public void f1(Integer ip) {
-    if (ip == 1) throw new RuntimeException();
-  }
-}
diff --git a/test/src/test/failedreporter/FailedReporterSampleTest.java b/test/src/test/failedreporter/FailedReporterSampleTest.java
deleted file mode 100644
index 7a80c9e..0000000
--- a/test/src/test/failedreporter/FailedReporterSampleTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.failedreporter;
-
-import org.testng.SkipException;
-import org.testng.TestNG;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class FailedReporterSampleTest {
-  @Test
-  public void f2() {
-    throw new RuntimeException();
-  }
-  
-  @Test
-  public void f1() {
-    throw new SkipException("Skipped");
-  }
-  
-  @Test
-  public void f3() {
-  }
-  
-}
diff --git a/test/src/test/failedreporter/FailedReporterTest.java b/test/src/test/failedreporter/FailedReporterTest.java
deleted file mode 100644
index eecb0d5..0000000
--- a/test/src/test/failedreporter/FailedReporterTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package test.failedreporter;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
-
-import test.BaseTest;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-public class FailedReporterTest extends BaseTest {
-  private File mTempDirectory;
-  
-  @BeforeMethod
-  public void setUp() {
-    File slashTmpDir = new File(System.getProperty("java.io.tmpdir"));
-    mTempDirectory = new File(slashTmpDir, "testng-tmp-" + System.currentTimeMillis() % 1000);
-    mTempDirectory.mkdirs();
-    mTempDirectory.deleteOnExit();
-  }
-
-  @AfterMethod
-  public void tearDown() {
-    deleteDir(mTempDirectory);
-  }
-
-  @Test
-  public void failedAndSkippedMethodsShouldBeIncluded() throws IOException {
-    testFailedReporter(FailedReporterSampleTest.class, new String[] { "f1", "f2" },
-        "<include name=\"%s\"" + "\"/>");   }
-
-  @Test
-  public void failedMethodWithDataProviderShouldHaveInvocationNumbers() throws IOException {
-    testFailedReporter(FailedReporter2SampleTest.class, new String[] { "f1" },
-        "<include invocationNumbers=\"1\" name=\"%s\"" + "\"/>"); 
-  }
-
-  private void testFailedReporter(Class<?> cls, String[] expectedMethods, String expectedLine) {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { cls });
-    tng.setOutputDirectory(mTempDirectory.getAbsolutePath());
-    tng.run();
-
-    File failed = new File(mTempDirectory, "testng-failed.xml");
-    for (String s : expectedMethods) {
-      List<String> resultLines = Lists.newArrayList();
-      grep(failed, expectedLine.format(s), resultLines);
-      Assert.assertEquals(1, resultLines.size());
-    }
-
-  }
-}
diff --git a/test/src/test/failures/Base0.java b/test/src/test/failures/Base0.java
deleted file mode 100644
index 7181b8f..0000000
--- a/test/src/test/failures/Base0.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.failures;
-
-import org.testng.annotations.Test;
-
-public class Base0 {
-  @Test
-  public void base1() {
-      assert true;
-  }
-
-
-}
diff --git a/test/src/test/failures/Base1.java b/test/src/test/failures/Base1.java
deleted file mode 100644
index 2eaf54d..0000000
--- a/test/src/test/failures/Base1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.failures;
-
-import org.testng.annotations.Test;
-
-public class Base1 extends Base0 {
-   @Test
-   public void base2() {
-     assert true;
-   }
-   
-   @Test
-   public void failFromBase() {
-     throw new RuntimeException("VOLUNTARILY FAILED");
-   }
-}
\ No newline at end of file
diff --git a/test/src/test/failures/BaseFailuresTest.java b/test/src/test/failures/BaseFailuresTest.java
deleted file mode 100644
index db69e66..0000000
--- a/test/src/test/failures/BaseFailuresTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package test.failures;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.regex.Pattern;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.reporters.FailedReporter;
-
-public class BaseFailuresTest {
-
-//  protected TestNG run(Class[] classes, String outputDir) {
-//    return run(new TestNG(), classes, outputDir);
-//  }
-  
-  protected String getSuiteName() {
-    return "TmpSuite";
-  }
-  
-  protected TestNG run(TestNG result, Class[] classes, String outputDir) {
-     result.setVerbose(0);
-     result.setOutputDirectory(outputDir);
-     result.setTestClasses(classes);
-     result.run();    
-     
-     return result;
-  }
-
-  /**
-   * @param f
-   * @param regexps
-   * @return true if the file contains at least one occurrence of each regexp
-   */
-  protected boolean containsRegularExpressions(File f, String[] strRegexps) {
-    Pattern[] matchers = new Pattern[strRegexps.length];
-    boolean[] results = new boolean[strRegexps.length];
-    for (int i = 0; i < strRegexps.length; i++) {
-      matchers[i] = Pattern.compile(".*" + strRegexps[i] + ".*");
-      results[i] = false;
-    }
-    
-    try {
-      FileReader fr = new FileReader(f);
-      BufferedReader br = new BufferedReader(fr);
-      String line = br.readLine();
-      while (line != null) {
-        for (int i = 0; i < strRegexps.length; i++) {
-          if (matchers[i].matcher(line).matches()) results[i] = true;
-        }
-        line = br.readLine();
-      }
-      fr.close();
-      br.close();
-    }
-    catch (FileNotFoundException e) {
-      e.printStackTrace();
-      return false;
-    }
-    catch (IOException e) {
-      e.printStackTrace();
-      return false;
-    }
-    
-    for (int i = 0; i < results.length; i++) {
-      boolean result = results[i];
-      if (! result) throw new AssertionError("Couldn't find " + strRegexps[i]);
-    }
-    
-    return true;
-  }
-
-  protected void verify(String outputDir, String[] expected) {
-    File f = new File(outputDir +
-        File.separatorChar + getSuiteName() +
-        File.separator + FailedReporter.TESTNG_FAILED_XML);
-     boolean passed = containsRegularExpressions(f, expected);
-     Assert.assertTrue(passed);
-     
-     File tmpDir = new File(outputDir);
-     tmpDir.delete();
-  }
-
-}
diff --git a/test/src/test/failures/Child.java b/test/src/test/failures/Child.java
deleted file mode 100644
index 67a5620..0000000
--- a/test/src/test/failures/Child.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.failures;
-
-import org.testng.annotations.Test;
-
-public class Child extends Base1 {
-
-  @Test
-  public void pass() {
-      assert true;
-  }
-
-  @Test
-  public void fail() {
-    throw new RuntimeException("VOLUNTARILY FAILED");
-  }
-}
diff --git a/test/src/test/failures/DependentTest.java b/test/src/test/failures/DependentTest.java
deleted file mode 100644
index 7f43be2..0000000
--- a/test/src/test/failures/DependentTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.failures;
-
-import org.testng.annotations.Test;
-
-public class DependentTest {
-
-  @Test
-  public void f1() {
-    
-  }
-  
-  @Test(dependsOnMethods = {"f1"}, dependsOnGroups = { "f" })
-  public void f2() {
-    throw new RuntimeException();
-  }
-}
diff --git a/test/src/test/failures/FailuresTest.java b/test/src/test/failures/FailuresTest.java
deleted file mode 100644
index 8fd2ef2..0000000
--- a/test/src/test/failures/FailuresTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package test.failures;
-
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlSuite;
-
-import test.TestHelper;
-
-public class FailuresTest extends BaseFailuresTest {
-
-  @Test
-  public void shouldIncludeFailedMethodsFromBaseClass() {
-    XmlSuite suite = TestHelper.createSuite("test.failures.Child", getSuiteName());
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-     
-     String[] expected = new String[] {
-       "<class name=\"test.failures.Child\">",
-       "<include name=\"fail\"/>",
-       "<include name=\"failFromBase\"/>",
-     };
-     
-     verify(getOutputDir(), expected);
-  }
-
-  @Test(enabled = false)
-  public void shouldIncludeDependentMethods() {
-    XmlSuite suite = TestHelper.createSuite("test.failures.DependentTest", getSuiteName());
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-    
-    String[] expected = new String[] {
-        "<include name=\"f1\"/>",
-        "<include name=\"f2\"/>"
-      };
-    
-    verify(getOutputDir(), expected);
-  }
-  
-  @Test(enabled = false)
-  public void shouldIncludeParameters() {
-    XmlSuite suite = TestHelper.createSuite("test.failures.Child", getSuiteName());
-    Map<String, String> params = new HashMap<String, String>();
-    params.put("first-name", "Cedric");
-    params.put("last-name", "Beust");
-    suite.setParameters(params);
-    
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-    
-    String[] expected = new String[] {
-        "<parameter name=\"first-name\" value=\"Cedric\"/>",
-      };
-    
-    verify(getOutputDir(), expected);
-  }
-  
-  private String getOutputDir() {
-    return System.getProperty("java.io.tmpdir");
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[FailuresTest] " + s);
-  }
-}
diff --git a/test/src/test/groupinvocation/DummyTest.java b/test/src/test/groupinvocation/DummyTest.java
deleted file mode 100644
index e08714e..0000000
--- a/test/src/test/groupinvocation/DummyTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package test.groupinvocation;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class DummyTest {
-  private static Map<String, Integer> s_externalClassGroups= new HashMap<String, Integer>();
-  
-  @Test(groups={"a"})
-  public void testA() {
-  }
-  
-  @Test(groups={"b"})
-  public void testB() {
-  }
-  
-  @Test(groups={"a", "b"})
-  public void testAB() {
-  }
-
-  @AfterClass(alwaysRun=true) 
-  public void checkInvocations() {
-    Integer hashCode1= s_externalClassGroups.get("beforeGroups");
-    Assert.assertNotNull(hashCode1, "External @BeforeGroups not invoked");
-    Integer hashCode2= s_externalClassGroups.get("afterGroups");
-    Assert.assertNotNull(hashCode2, "External @AfterGroups not invoked");
-    Assert.assertEquals(hashCode1, hashCode2, "External @BeforeGroups and @AfterGroups were not invoked on the" +
-        " same class instance");
-  }
-  
-  /**
-   * @param string
-   * @param i
-   */
-  public static void recordInvocation(String string, int i) {
-    s_externalClassGroups.put(string, i);
-  }
-}
diff --git a/test/src/test/groupinvocation/DummyTest2.java b/test/src/test/groupinvocation/DummyTest2.java
deleted file mode 100644
index d6255bf..0000000
--- a/test/src/test/groupinvocation/DummyTest2.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.groupinvocation;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class DummyTest2 {
-  private boolean m_invoked= false;
-  
-  @Test(groups={"A"})
-  public void dummyTest() {
-    m_invoked= true;
-  }
-  
-  @AfterClass(alwaysRun=true)
-  public void checkInvocations() {
-    Assert.assertFalse(m_invoked, "@Test method invoked even if @BeforeGroups failed");
-  }
-}
diff --git a/test/src/test/groupinvocation/FailingBeforeGroupMethod.java b/test/src/test/groupinvocation/FailingBeforeGroupMethod.java
deleted file mode 100644
index 7422753..0000000
--- a/test/src/test/groupinvocation/FailingBeforeGroupMethod.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.groupinvocation;
-
-import org.testng.annotations.BeforeGroups;
-
-
-/**
- * This class/interface 
- */
-public class FailingBeforeGroupMethod {
-  @BeforeGroups(groups={"A"})
-  public void beforeGroupA() {
-    throw new RuntimeException("Failing @BeforeGroups beforeGroupA method");
-  }
-}
diff --git a/test/src/test/groupinvocation/GroupConfiguration.java b/test/src/test/groupinvocation/GroupConfiguration.java
deleted file mode 100644
index 988741e..0000000
--- a/test/src/test/groupinvocation/GroupConfiguration.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.groupinvocation;
-
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-
-
-/**
- * This class/interface 
- */
-public class GroupConfiguration {
-  @BeforeGroups(groups={"a"})
-  public void beforeGroups() {
-    DummyTest.recordInvocation("beforeGroups", hashCode());
-  }
-  
-  @AfterGroups(groups={"a"})
-  public void afterGroups() {
-    DummyTest.recordInvocation("afterGroups", hashCode());
-  }
-}
diff --git a/test/src/test/groupinvocation/testng.xml b/test/src/test/groupinvocation/testng.xml
deleted file mode 100644
index 5d4c832..0000000
--- a/test/src/test/groupinvocation/testng.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="Groups run" verbose="2">
-  <test name="External group invocation">
-		<groups>
-			<run>
-				<include name="a" />
-			</run>
-		</groups>
-		<classes>
-			<class name="test.groupinvocation.GroupConfiguration" />
-			<class name="test.groupinvocation.DummyTest" />
-		</classes>
-  </test>
-	<test name="Failing External BeforeGroups - Group run">
-		<groups>
-			<run>
-				<include name="A" />
-			</run>
-		</groups>
-		<classes>
-			<class name="test.groupinvocation.FailingBeforeGroupMethod" />
-			<class name="test.groupinvocation.DummyTest2" />
-		</classes>
-  </test>
-	
-	<test name="Failing External BeforeGroups - No group run">
-		<classes>
-			<class name="test.groupinvocation.FailingBeforeGroupMethod" />
-			<class name="test.groupinvocation.DummyTest2" />
-		</classes>
-  </test>
-</suite>
-
diff --git a/test/src/test/hook/HookFailureTest.java b/test/src/test/hook/HookFailureTest.java
deleted file mode 100644
index cf20c34..0000000
--- a/test/src/test/hook/HookFailureTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.hook;
-
-import org.testng.Assert;
-import org.testng.IHookCallBack;
-import org.testng.IHookable;
-import org.testng.ITestResult;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class HookFailureTest implements IHookable {
-  private boolean m_hook = false;
-  private boolean m_testWasRun = false;
-
-  public void run(IHookCallBack callBack, ITestResult testResult) {
-    m_hook = true;
-    // Not invoking the callback:  the method should not be run
-  }
-
-  @Test
-  public void verify() {
-    m_testWasRun = true;
-  }
-  
-  @AfterMethod
-  public void tearDown() {
-    Assert.assertTrue(m_hook);
-    Assert.assertFalse(m_testWasRun);
-  }
-
-  private void ppp(String string) {
-    System.out.println("[HookFailureTest] " + string);
-  }
-  
-
-}
diff --git a/test/src/test/hook/HookSuccessTest.java b/test/src/test/hook/HookSuccessTest.java
deleted file mode 100644
index b80e708..0000000
--- a/test/src/test/hook/HookSuccessTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package test.hook;
-
-import org.testng.Assert;
-import org.testng.IHookCallBack;
-import org.testng.IHookable;
-import org.testng.ITestResult;
-import org.testng.Reporter;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-/**
- * Test harness for {@link IHookable}
- * 
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- * @since Aug 01, 2006
- * @version $Revision$, $Date$
- */
-public class HookSuccessTest implements IHookable {
-  private boolean m_hook = false;
-  private boolean m_testWasRun = false;
-
-  public void run(IHookCallBack callBack, ITestResult testResult) {
-    m_hook = true;
-    callBack.runTestMethod(testResult);
-  }
-
-  @Test
-  public void verify() {
-    m_testWasRun = true;
-    Reporter.log("output from hook test.verify");
-  }
-
-  @AfterMethod
-  public void tearDown() {
-    Assert.assertTrue(m_hook);
-    Assert.assertTrue(m_testWasRun);
-  }
-
-  private void ppp(String string) {
-    System.out.println("[HookTest] " + string);
-  }
-  
-}
diff --git a/test/src/test/inheritance/BaseClassScope.java b/test/src/test/inheritance/BaseClassScope.java
deleted file mode 100644
index a0343d0..0000000
--- a/test/src/test/inheritance/BaseClassScope.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package test.inheritance;
-
-import org.testng.annotations.Test;
-
- at Test
-public class BaseClassScope {
-}
diff --git a/test/src/test/inheritance/Child_1.java b/test/src/test/inheritance/Child_1.java
deleted file mode 100644
index 8ab996b..0000000
--- a/test/src/test/inheritance/Child_1.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.inheritance;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class Child_1 extends ZBase_0 {
-
-  @BeforeMethod
-  public void initDialog() {
-    m_methodList.add("initDialog");
-    ppp("  INIT 1");
-  }
-  
-  @AfterMethod
-  public void tearDownDialog() {
-    m_methodList.add("tearDownDialog");
-    ppp("  TEAR_DOWN 1");
-  }
-  
-  private static void ppp(String s) {
-    if (m_verbose) {
-      System.out.println("[C1] " + s);
-    }
-  }
-  
-}
diff --git a/test/src/test/inheritance/ClassScopeTest.java b/test/src/test/inheritance/ClassScopeTest.java
deleted file mode 100644
index b83415e..0000000
--- a/test/src/test/inheritance/ClassScopeTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.inheritance;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class ClassScopeTest extends BaseClassScope {
-
-  private boolean m_verify = false;
-
-  public void setVerify() {
-    m_verify = true;
-  }
-  
-  @Test(dependsOnMethods = "setVerify")
-  public void verify() {
-    Assert.assertTrue(m_verify);
-  }
-}
diff --git a/test/src/test/inheritance/DChild_2.java b/test/src/test/inheritance/DChild_2.java
deleted file mode 100644
index ed8c9c8..0000000
--- a/test/src/test/inheritance/DChild_2.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package test.inheritance;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * Make sure that configuration inherited methods are invoked in the right
- * order.  The funny naming is to make sure that the class names do not
- * play any role in the ordering of methods.
- * 
- * Created on Sep 8, 2005
- * @author cbeust
- */
-public class DChild_2 extends Child_1 {
-  
-  @BeforeMethod
-  public void initDialog2() {
-    m_methodList.add("initDialog2");
-    ppp("    INIT 2");
-  }
-  
-  @AfterMethod
-  public void tearDownDialog2() {
-    m_methodList.add("tearDownDialog2");
-    ppp("    TEAR_DOWN 2");
-  }
-  
-  @Test(groups = {"before" })
-  public void test() {
-    m_methodList.add("test");
-    ppp("      TEST");
-  }
-  
-  private static void ppp(String s) {
-    if (m_verbose) {
-      System.out.println("[D2] " + s);
-    }
-  }
-}
diff --git a/test/src/test/inheritance/VerifyTest.java b/test/src/test/inheritance/VerifyTest.java
deleted file mode 100644
index 2e2f6a9..0000000
--- a/test/src/test/inheritance/VerifyTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.inheritance;
-
-import java.util.List;
-
-import org.testng.AssertJUnit;
-import org.testng.annotations.Test;
-
-public class VerifyTest {
-
-  @Test(dependsOnGroups = {"before"})
-  public void verify() {
-    String[] expected = {
-      "initApplication",
-      "initDialog",
-      "initDialog2",
-      "test", 
-      "tearDownDialog2",
-      "tearDownDialog",
-      "tearDownApplication"
-    };
-    
-    int i = 0;
-    List<String> l = ZBase_0.getMethodList();
-    AssertJUnit.assertEquals(expected.length, l.size());
-    for (String s : l) {
-      AssertJUnit.assertEquals(expected[i++], s);
-    }
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[VerifyTest] " + s);
-  }
-}
diff --git a/test/src/test/inheritance/ZBase_0.java b/test/src/test/inheritance/ZBase_0.java
deleted file mode 100644
index e9dfb83..0000000
--- a/test/src/test/inheritance/ZBase_0.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package test.inheritance;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeTest;
-
-public class ZBase_0 {
-  protected static boolean m_verbose = false;
-  protected static List<String> m_methodList = new ArrayList<String>();
-
-  @BeforeTest
-  public void beforeTest() {
-    m_methodList = new ArrayList<String>();
-  }
-  
-  @BeforeMethod
-  public void initApplication() {
-    m_methodList.add("initApplication");
-    ppp("INIT 0");
-  }
-  
-  @AfterMethod
-  public void tearDownApplication() {
-    m_methodList.add("tearDownApplication");
-    ppp("TEAR DOWN 0");
-  }
-
-  private static void ppp(String s) {
-    if (m_verbose) {
-      System.out.println("[Z0] " + s);
-    }
-  }
-  
-  public static List<String> getMethodList() {
-    return m_methodList;
-  }
-}
diff --git a/test/src/test/inject/InjectAfterMethodWithTestResultSampleTest.java b/test/src/test/inject/InjectAfterMethodWithTestResultSampleTest.java
deleted file mode 100644
index 4c152da..0000000
--- a/test/src/test/inject/InjectAfterMethodWithTestResultSampleTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package test.inject;
-
-import org.testng.ITestResult;
-import org.testng.SkipException;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-public class InjectAfterMethodWithTestResultSampleTest {
-  static int m_success;
-
-  @Test
-  public void pass() {}
-  
-  @Test
-  public void fail() {
-    throw new RuntimeException();
-  }
-  
-  @Test
-  public void skip() {
-    throw new SkipException("Skipped");
-  }
-  
-  @BeforeClass
-  public void init() {
-    m_success = 3;
-  }
-
-  @BeforeMethod
-  public void before(Method m, ITestResult r) {
-    System.out.println("Before result: " + r);
-  }
-
-  @AfterMethod
-  public void after(Method m, ITestResult r) {
-    String name = m.getName();
-    if (("pass".equals(name) && r.getStatus() == ITestResult.SUCCESS)
-        || ("fail".equals(name) && r.getStatus() == ITestResult.FAILURE)
-        || ("skip".equals(name) && r.getStatus() == ITestResult.SKIP)) {
-          m_success--;
-        }
-  }
-}
diff --git a/test/src/test/inject/InjectAfterMethodWithTestResultTest.java b/test/src/test/inject/InjectAfterMethodWithTestResultTest.java
deleted file mode 100644
index a5eb3cd..0000000
--- a/test/src/test/inject/InjectAfterMethodWithTestResultTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.inject;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class InjectAfterMethodWithTestResultTest extends SimpleBaseTest {
-
-  @Test
-  public void verifyTestResultInjection() {
-    TestNG tng = create(InjectAfterMethodWithTestResultSampleTest.class);
-    tng.run();
-    
-    Assert.assertEquals(0, InjectAfterMethodWithTestResultSampleTest.m_success); 
-  }
-}
diff --git a/test/src/test/inject/InjectBeforeAndAfterMethodsWithTestResultSampleTest.java b/test/src/test/inject/InjectBeforeAndAfterMethodsWithTestResultSampleTest.java
deleted file mode 100644
index 84b39ff..0000000
--- a/test/src/test/inject/InjectBeforeAndAfterMethodsWithTestResultSampleTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package test.inject;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.SkipException;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-public class InjectBeforeAndAfterMethodsWithTestResultSampleTest {
-  static int m_success;
-  private ITestResult m_testResult;
-
-  @Test
-  public void pass() {
-    Assert.assertEquals(m_testResult.getAttribute("before"), 10);
-  }
-  
-  @Test
-  public void fail() {
-    throw new RuntimeException();
-  }
-  
-  @Test
-  public void skip() {
-    throw new SkipException("Skipped");
-  }
-  
-  @BeforeClass
-  public void init() {
-    m_success = 3;
-  }
-
-  @BeforeMethod
-  public void before(Method m, ITestResult r) {
-    m_testResult = r;
-    r.setAttribute("before", 10);
-  }
-
-  @AfterMethod
-  public void after(Method m, ITestResult r) {
-    String name = m.getName();
-    Assert.assertEquals(r, m_testResult);
-    if (("pass".equals(name) && r.getStatus() == ITestResult.SUCCESS)
-        || ("fail".equals(name) && r.getStatus() == ITestResult.FAILURE)
-        || ("skip".equals(name) && r.getStatus() == ITestResult.SKIP)) {
-          m_success--;
-        }
-  }
-}
diff --git a/test/src/test/inject/InjectBeforeMethodTest.java b/test/src/test/inject/InjectBeforeMethodTest.java
deleted file mode 100644
index 48a394c..0000000
--- a/test/src/test/inject/InjectBeforeMethodTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package test.inject;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class InjectBeforeMethodTest {
-  private int m_beforeIndex = 0;
-  private int m_afterIndex = 0;
-  private static final Object[][] DATA = { 
-      new Object[] { "a" },
-      new Object[] { "b" },
-  };
-  
-  @BeforeMethod
-  public void before(Object[] parameters) {
-    Assert.assertEquals(DATA[m_beforeIndex], parameters);
-    m_beforeIndex++;
-  }
-  
-  @DataProvider
-  public Object[][] dp() {
-    return DATA;
-  }
-
-  @AfterMethod
-  public void after(Object[] parameters) {
-    Assert.assertEquals(DATA[m_afterIndex], parameters);
-    m_afterIndex++;    
-  }
-
-  @Test(dataProvider = "dp")
-  public void f(String a) {
-  }
-
-}
diff --git a/test/src/test/inject/InjectDataProviderTest.java b/test/src/test/inject/InjectDataProviderTest.java
deleted file mode 100644
index df90ffa..0000000
--- a/test/src/test/inject/InjectDataProviderTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package test.inject;
-
-import org.testng.ITestContext;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import test.dataprovider.MyIterator;
-
-import java.util.Iterator;
-
-/**
- * Test that injection works for data providers.
- *
- * @author Cedric Beust, Mar 3, 2010
- *
- */
-public class InjectDataProviderTest {
-
-  @DataProvider
-  public Object[][] dp1() {
-    return new Object[][] {
-      new Object[] { 1, "a" },
-      new Object[] { 2, "b" },
-    };
-  }
-
-  @Test(dataProvider = "dp1", enabled = true)
-  public void dpObject1(Integer n, ITestContext ctx, String a) {
-  }
-
-  @Test(dataProvider = "dp1", enabled = true)
-  public void dpObject2(ITestContext ctx, Integer n, String a) {
-  }
-
-  @Test(dataProvider = "dp1", enabled = true)
-  public void dpObject3(Integer n, String a, ITestContext ctx) {
-  }
-
-  @DataProvider
-  public Iterator<Object[]> dp2() {
-    return new MyIterator(
-    new Object[][] {
-      new Object[] { 1, "a" },
-      new Object[] { 2, "b" },
-    });
-  }
-
-  @Test(dataProvider = "dp2", enabled = false)
-  public void dpIterator1(Integer n, ITestContext ctx, String a) {
-  }
-
-  @Test(dataProvider = "dp2", enabled = false)
-  public void dpIterator2(ITestContext ctx, Integer n, String a) {
-  }
-
-  @Test(dataProvider = "dp2", enabled = false)
-  public void dpIterator3(Integer n, String a, ITestContext ctx) {
-  }
-}
diff --git a/test/src/test/inject/InjectTestContextTest.java b/test/src/test/inject/InjectTestContextTest.java
deleted file mode 100644
index f75a97a..0000000
--- a/test/src/test/inject/InjectTestContextTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.inject;
-
-import org.testng.Assert;
-import org.testng.ITestContext;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlTest;
-
-import test.SimpleBaseTest;
-
-public class InjectTestContextTest extends SimpleBaseTest {
-
-  @Test
-  public void verifyTestContextInjection(ITestContext tc, XmlTest xmlTest) {
-    TestNG tng = create();
-    tng.setTestClasses(new Class[] { Sample.class });
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(xmlTest.getName(), "Injection");
-    Assert.assertEquals(tla.getPassedTests().size(), 1);
-    Assert.assertEquals(tla.getPassedTests().get(0).getMethod().getMethodName(), "f");
-  }
-
-}
diff --git a/test/src/test/inject/InjectTestResultTest.java b/test/src/test/inject/InjectTestResultTest.java
deleted file mode 100644
index 67b6466..0000000
--- a/test/src/test/inject/InjectTestResultTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.inject;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class InjectTestResultTest extends SimpleBaseTest {
-
-  @Test
-  public void verifyTestResultInjection() {
-    TestNG tng = create(InjectBeforeAndAfterMethodsWithTestResultSampleTest.class);
-    tng.run();
-    
-    Assert.assertEquals(0, InjectBeforeAndAfterMethodsWithTestResultSampleTest.m_success); 
-  }
-}
diff --git a/test/src/test/inject/Sample.java b/test/src/test/inject/Sample.java
deleted file mode 100644
index 8aca0fe..0000000
--- a/test/src/test/inject/Sample.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.inject;
-
-import org.testng.Assert;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.annotations.Test;
-
-public class Sample {
-
-  @Test
-  public void f(ITestContext tc) {
-    Assert.assertNotNull(tc);
-    ITestNGMethod[] allMethods = tc.getAllTestMethods();
-    Assert.assertEquals(allMethods.length, 1);
-    Assert.assertEquals(allMethods[0].getMethod().getName(),"f");
-
-  }
-}
diff --git a/test/src/test/interleavedorder/BaseTestClass.java b/test/src/test/interleavedorder/BaseTestClass.java
deleted file mode 100644
index aaa671c..0000000
--- a/test/src/test/interleavedorder/BaseTestClass.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.interleavedorder;
-
-import org.testng.annotations.Test;
-
-
-public class BaseTestClass {
-  @Test
-  public void testOne() {
-    ppp("test1");
-    InterleavedInvocationTest.LOG.add("test1");
-  }
-  
-  @Test
-  public void testTwo() {
-    ppp("test2");
-    InterleavedInvocationTest.LOG.add("test2");
-  }
-  
-  private void ppp(String s) {
-    if (false) {
-      System.out.println(getClass().toString() + " " + s);
-    }
-  }
-  
-}
diff --git a/test/src/test/interleavedorder/InterleavedInvocationTest.java b/test/src/test/interleavedorder/InterleavedInvocationTest.java
deleted file mode 100644
index efcb5d5..0000000
--- a/test/src/test/interleavedorder/InterleavedInvocationTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.interleavedorder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-import testhelper.OutputDirectoryPatch;
-
-
-public class InterleavedInvocationTest extends BaseTest {
-  public static List<String> LOG = new ArrayList<String>();
-
-  @BeforeTest
-  public void beforeTest() {
-    LOG = new ArrayList<String>();
-  }
-
-  private void verifyInvocation(int number, List<String> log, int index) {
-    Assert.assertEquals(log.get(index), "beforeTestChild" + number + "Class");
-    Assert.assertTrue(("test1".equals(log.get(index + 1)) && "test2".equals(LOG.get(index + 2)))
-        || ("test2".equals(LOG.get(index + 1)) && "test1".equals(LOG.get(index + 2))),
-        "test methods were not invoked correctly");
-    Assert.assertEquals(log.get(index + 3), "afterTestChild" + number + "Class");
-  }
-
-  @Test
-  public void invocationOrder() {
-    TestListenerAdapter tla = new TestListenerAdapter();
-    TestNG testng = new TestNG();
-    testng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    testng.setTestClasses(new Class[] { TestChild1.class, TestChild2.class });
-    testng.addListener(tla);
-    testng.setVerbose(0);
-    testng.run();
-    
-    Assert.assertEquals(LOG.size(), 8, LOG.toString());
-    int number1 = "beforeTestChild1Class".equals(LOG.get(0)) ? 1 : 2;
-    int number2 = number1 == 1 ? 2 : 1;
-    verifyInvocation(number1, LOG, 0);
-    verifyInvocation(number2, LOG, 4);
-  }
-
-  public static void ppp(String s) {
-    System.out.println("[InterleavedTest] " + s);
-  }
-}
diff --git a/test/src/test/interleavedorder/TestChild1.java b/test/src/test/interleavedorder/TestChild1.java
deleted file mode 100644
index 553142b..0000000
--- a/test/src/test/interleavedorder/TestChild1.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.interleavedorder;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
-
-public class TestChild1 extends BaseTestClass {
-  @BeforeClass
-  public void beforeTestChildOneClass() {
-    ppp("beforeTestChild1Class");
-    InterleavedInvocationTest.LOG.add("beforeTestChild1Class");
-  }
-  
-  @AfterClass
-  public void afterTestChildOneClass() {
-    ppp("afterTestChild1Class");
-    InterleavedInvocationTest.LOG.add("afterTestChild1Class");
-  }
-  
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[TestChild1] " + s);
-    }
-  }
-}
diff --git a/test/src/test/interleavedorder/TestChild2.java b/test/src/test/interleavedorder/TestChild2.java
deleted file mode 100644
index d0361d4..0000000
--- a/test/src/test/interleavedorder/TestChild2.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.interleavedorder;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
-
-public class TestChild2 extends BaseTestClass {
-  @BeforeClass
-  public void beforeTestChildTwoClass() {
-    ppp("beforeTestChild2Class");
-    InterleavedInvocationTest.LOG.add("beforeTestChild2Class");
-  }
-  
-  @AfterClass
-  public void afterTestChildTwoClass() {
-    ppp("afterTestChild2Class");
-    InterleavedInvocationTest.LOG.add("afterTestChild2Class");
-  }
-  
-  private void ppp(String s) {
-    if (false) {
-      System.out.println("[TestChild2] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/interleavedorder/testng-order.xml b/test/src/test/interleavedorder/testng-order.xml
deleted file mode 100644
index 0483b35..0000000
--- a/test/src/test/interleavedorder/testng-order.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-  
-<suite name="Order" verbose="2" parallel="false" annotations="javadoc">
-
-  <test name="Test order invocation">
-    <classes>
-       <class name="test.interleavedorder.InterleavedInvocationTest" />
-    </classes>
-  </test>
-</suite>
-
diff --git a/test/src/test/invocationcount/Base.java b/test/src/test/invocationcount/Base.java
deleted file mode 100644
index f3a2564..0000000
--- a/test/src/test/invocationcount/Base.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.BeforeClass;
-
-public class Base {
-  private static int m_beforeCount;
-  private static int m_afterCount;
-  
-  @BeforeClass
-  public void init() {
-//    System.out.println("RESETTING COUNTS");
-    m_beforeCount = 0;
-    m_afterCount = 0;
-  }
-
-  protected void incrementBefore() {
-    m_beforeCount++;
-//    System.out.println("INC BEFORE:" + m_beforeCount);
-  }
-  
-  protected void incrementAfter() {
-    m_afterCount++;
-//    System.out.println("INC AFTER:" + m_beforeCount);
-  }
-  
-  public static int getBeforeCount() {
-    return m_beforeCount;
-  }
-
-  public static int getAfterCount() {
-    return m_afterCount;
-  }
-}
diff --git a/test/src/test/invocationcount/DataProviderBase.java b/test/src/test/invocationcount/DataProviderBase.java
deleted file mode 100644
index c29a5ac..0000000
--- a/test/src/test/invocationcount/DataProviderBase.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class DataProviderBase extends Base {
-  @Test(dataProvider = "dp")
-  public void f(Integer n) {
-  }
-  
-  @DataProvider
-  public Object[][] dp() {
-    return new Integer[][] {
-        new Integer[] { 0 },
-        new Integer[] { 1 },
-        new Integer[] { 2 },
-    };
-  }
-
-}
diff --git a/test/src/test/invocationcount/DataProviderFalseFalseTest.java b/test/src/test/invocationcount/DataProviderFalseFalseTest.java
deleted file mode 100644
index ee49db5..0000000
--- a/test/src/test/invocationcount/DataProviderFalseFalseTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class DataProviderFalseFalseTest extends DataProviderBase {
-  @BeforeMethod(firstTimeOnly = false)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = false)
-  public void afterMethod() {
-    incrementAfter();
-  }
-}
diff --git a/test/src/test/invocationcount/DataProviderFalseTrueTest.java b/test/src/test/invocationcount/DataProviderFalseTrueTest.java
deleted file mode 100644
index 4f8bd51..0000000
--- a/test/src/test/invocationcount/DataProviderFalseTrueTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class DataProviderFalseTrueTest extends DataProviderBase {
-  @BeforeMethod(firstTimeOnly = false)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = true)
-  public void afterMethod() {
-    incrementAfter();
-  }
-
-}
diff --git a/test/src/test/invocationcount/DataProviderTrueFalseTest.java b/test/src/test/invocationcount/DataProviderTrueFalseTest.java
deleted file mode 100644
index e70162f..0000000
--- a/test/src/test/invocationcount/DataProviderTrueFalseTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class DataProviderTrueFalseTest extends DataProviderBase {
-  @BeforeMethod(firstTimeOnly = true)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = false)
-  public void afterMethod() {
-    incrementAfter();
-  }
-}
diff --git a/test/src/test/invocationcount/DataProviderTrueTrueTest.java b/test/src/test/invocationcount/DataProviderTrueTrueTest.java
deleted file mode 100644
index 12a0cca..0000000
--- a/test/src/test/invocationcount/DataProviderTrueTrueTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class DataProviderTrueTrueTest extends DataProviderBase {
-  @BeforeMethod(firstTimeOnly = true)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = true)
-  public void afterMethod() {
-    incrementAfter();
-  }
-
-}
diff --git a/test/src/test/invocationcount/FailedInvocationCount.java b/test/src/test/invocationcount/FailedInvocationCount.java
deleted file mode 100644
index 453fb01..0000000
--- a/test/src/test/invocationcount/FailedInvocationCount.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class FailedInvocationCount {
-  int m_count;
-  
-  @BeforeClass
-  public void setUp() {
-    m_count = 0;
-  }
-
-  @Test(invocationCount = 10)
-  public void f() {
-    if (m_count++ > 3) {
-      throw new RuntimeException();
-    }
-  }
-  
-}
diff --git a/test/src/test/invocationcount/FailedInvocationCount2.java b/test/src/test/invocationcount/FailedInvocationCount2.java
deleted file mode 100644
index cb42af1..0000000
--- a/test/src/test/invocationcount/FailedInvocationCount2.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class FailedInvocationCount2 {
-  int m_count;
-  int m_count2;
-  
-  @BeforeClass
-  public void setUp() {
-    m_count = 0;
-    m_count2 = 0;
-  }
-  
-  @Test(invocationCount = 10, skipFailedInvocations = true)
-  public void shouldSkipFromAnnotation() {
-    if (m_count++ > 3) {
-      throw new RuntimeException();
-    }
-  }
-  
-  @Test(invocationCount = 10, skipFailedInvocations = false)
-  public void shouldNotSkipFromAnnotation() {
-    if (m_count2++ > 3) {
-      throw new RuntimeException();
-    }
-  }
-
-}
diff --git a/test/src/test/invocationcount/FailedInvocationCountTest.java b/test/src/test/invocationcount/FailedInvocationCountTest.java
deleted file mode 100644
index 6a54686..0000000
--- a/test/src/test/invocationcount/FailedInvocationCountTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test.invocationcount;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-public class FailedInvocationCountTest {
-  
-  private void runTest(boolean skip,
-    int passed, int failed, int skipped)
-  {
-    TestNG testng = new TestNG();
-    testng.setVerbose(0);
-    testng.setSkipFailedInvocationCounts(skip);
-    testng.setTestClasses(new Class[] { FailedInvocationCount.class });
-    TestListenerAdapter tla = new TestListenerAdapter();
-    testng.addListener(tla);
-    testng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), passed);
-    Assert.assertEquals(tla.getFailedTests().size(), failed);
-    Assert.assertEquals(tla.getSkippedTests().size(), skipped);
-  }
-  
-  @Test
-  public void verifyGloballyShouldStop() {
-    runTest(true, 4, 1, 5);
-  }
-  
-  @Test
-  public void verifyGloballyShouldNotStop() {
-    runTest(false, 4, 6, 0);
-  }
-  
-  @Test
-  public void verifyAttributeShouldStop() {
-    TestNG testng = new TestNG();
-    testng.setVerbose(0);
-    testng.setTestClasses(new Class[] { FailedInvocationCount2.class });
-    TestListenerAdapter tla = new TestListenerAdapter();
-    testng.addListener(tla);
-    testng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), 8);
-    Assert.assertEquals(tla.getFailedTests().size(), 7);
-    Assert.assertEquals(tla.getSkippedTests().size(), 5);
-    
-  }
-}
diff --git a/test/src/test/invocationcount/FirstAndLastTimeTest.java b/test/src/test/invocationcount/FirstAndLastTimeTest.java
deleted file mode 100644
index 1a4b52d..0000000
--- a/test/src/test/invocationcount/FirstAndLastTimeTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package test.invocationcount;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * Test various combination of @BeforeMethod(firstTimeOnly = true/false) and
- * @AfterMethod(lastTimeOnly = true/false) with invocation counts and data
- * providers.
- * @author cbeust at google.com
- *
- */
-public class FirstAndLastTimeTest {
-  @Test
-  public void verifyDataProviderFalseFalse() {
-    run(DataProviderFalseFalseTest.class, 3, 3);
-  }
-
-  @Test
-  public void verifyDataProviderTrueFalse() {
-    run(DataProviderTrueFalseTest.class, 1, 3);
-  }
-
-  @Test
-  public void verifyDataProviderFalseTrue() {
-    run(DataProviderFalseTrueTest.class, 3, 1);
-  }
-
-  @Test
-  public void verifyDataProviderTrueTrue() {
-    run(DataProviderTrueTrueTest.class, 1, 1);
-  }
-  
-  @Test
-  public void verifyInvocationCountFalseFalse() {
-    run(InvocationCountFalseFalseTest.class, 3, 3);
-  }
-
-  @Test
-  public void verifyInvocationCountTrueFalse() {
-    run(InvocationCountTrueFalseTest.class, 1, 3);
-  }
-
-  @Test
-  public void verifyInvocationCountFalseTrue() {
-    run(InvocationCountFalseTrueTest.class, 3, 1);
-  }
-
-  @Test
-  public void verifyInvocationCountTrueTrue() {
-    run(InvocationCountTrueTrueTest.class, 1, 1);
-  }
-  
-  private void run(Class cls, int expectedBefore, int expectedAfter) {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { cls });
-    tng.run();
-    
-    try {
-      Method before = cls.getMethod("getBeforeCount", new Class[0]);
-      Integer beforeCount = (Integer) before.invoke(null, (Object[]) null);
-      Assert.assertEquals(beforeCount.intValue(), expectedBefore);
-
-      Method after = cls.getMethod("getAfterCount", new Class[0]);
-      Integer afterCount = (Integer) after.invoke(null, (Object[]) null);
-      Assert.assertEquals(afterCount.intValue(), expectedAfter);
-    } catch (SecurityException e) {
-      e.printStackTrace();
-    } catch (NoSuchMethodException e) {
-      e.printStackTrace();
-    } catch (IllegalArgumentException e) {
-      e.printStackTrace();
-    } catch (IllegalAccessException e) {
-      e.printStackTrace();
-    } catch (InvocationTargetException e) {
-      e.printStackTrace();
-    }
-  }
-  
-}
diff --git a/test/src/test/invocationcount/InvocationBase.java b/test/src/test/invocationcount/InvocationBase.java
deleted file mode 100644
index bea3807..0000000
--- a/test/src/test/invocationcount/InvocationBase.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.Test;
-
-public class InvocationBase extends Base {
-  @Test(invocationCount = 3)
-  public void f() {
-  }
-}
diff --git a/test/src/test/invocationcount/InvocationCountFalseFalseTest.java b/test/src/test/invocationcount/InvocationCountFalseFalseTest.java
deleted file mode 100644
index 0f1912d..0000000
--- a/test/src/test/invocationcount/InvocationCountFalseFalseTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class InvocationCountFalseFalseTest extends InvocationBase {
-  @BeforeMethod(firstTimeOnly = false)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = false)
-  public void afterMethod() {
-    incrementAfter();
-  }
-}
diff --git a/test/src/test/invocationcount/InvocationCountFalseTrueTest.java b/test/src/test/invocationcount/InvocationCountFalseTrueTest.java
deleted file mode 100644
index ed14893..0000000
--- a/test/src/test/invocationcount/InvocationCountFalseTrueTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class InvocationCountFalseTrueTest extends InvocationBase {
-  @BeforeMethod(firstTimeOnly = false)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = true)
-  public void afterMethod() {
-    incrementAfter();
-  }
-}
diff --git a/test/src/test/invocationcount/InvocationCountTrueFalseTest.java b/test/src/test/invocationcount/InvocationCountTrueFalseTest.java
deleted file mode 100644
index c63c58f..0000000
--- a/test/src/test/invocationcount/InvocationCountTrueFalseTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class InvocationCountTrueFalseTest extends InvocationBase {
-  @BeforeMethod(firstTimeOnly = true)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = false)
-  public void afterMethod() {
-    incrementAfter();
-  }
-}
diff --git a/test/src/test/invocationcount/InvocationCountTrueTrueTest.java b/test/src/test/invocationcount/InvocationCountTrueTrueTest.java
deleted file mode 100644
index d96f305..0000000
--- a/test/src/test/invocationcount/InvocationCountTrueTrueTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.invocationcount;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-
-public class InvocationCountTrueTrueTest extends InvocationBase {
-  @BeforeMethod(firstTimeOnly = true)
-  public void beforeMethod() {
-    incrementBefore();
-  }
-  
-  @AfterMethod(lastTimeOnly = true)
-  public void afterMethod() {
-    incrementAfter();
-  }
-}
diff --git a/test/src/test/invokedmethodlistener/Base.java b/test/src/test/invokedmethodlistener/Base.java
deleted file mode 100644
index c4a168f..0000000
--- a/test/src/test/invokedmethodlistener/Base.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test.invokedmethodlistener;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-public class Base {
-  private boolean m_fail;
-
-  public Base(boolean fail) {
-    m_fail = fail;
-  }
-
-  @BeforeMethod
-  public void beforeMethod() {
-  }
-  
-  @AfterMethod
-  public void afterMethod() {}
-
-  @BeforeTest
-  public void beforeTest() {}
-  
-  @AfterTest
-  public void afterTest() {}
-  
-  @BeforeClass
-  public void beforeClass() {}
-
-  @AfterClass
-  public void afterClass() {}
-
-  @BeforeSuite
-  public void beforeSuite() {}
-
-  @AfterSuite
-  public void afterSuite() {
-    if (m_fail) throw new RuntimeException("FAILING");
-  }
-
-  @Test
-  public void a() {}
-  
-}
diff --git a/test/src/test/invokedmethodlistener/Failure.java b/test/src/test/invokedmethodlistener/Failure.java
deleted file mode 100644
index c28f842..0000000
--- a/test/src/test/invokedmethodlistener/Failure.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package test.invokedmethodlistener;
-
-public class Failure extends Base {
-  public Failure() {
-    super(true);
-  }
-
-}
diff --git a/test/src/test/invokedmethodlistener/InvokedMethodListenerTest.java b/test/src/test/invokedmethodlistener/InvokedMethodListenerTest.java
deleted file mode 100644
index d5a6865..0000000
--- a/test/src/test/invokedmethodlistener/InvokedMethodListenerTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.invokedmethodlistener;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class InvokedMethodListenerTest extends SimpleBaseTest {
-  
-  private void run(Class[] classes) {
-    TestNG tng = create();
-    tng.setTestClasses(classes);
-    MyListener l = new MyListener();
-    tng.addInvokedMethodListener(l);
-    tng.run();
-    
-    Assert.assertEquals(l.getBeforeCount(), 9);
-    Assert.assertEquals(l.getAfterCount(), 9);
-  }
-  
-  @Test
-  public void withSuccess() {
-    run(new Class[] { Success.class });
-  }
-  
-  @Test
-  public void withFailure() {
-    run(new Class[] { Failure.class });
-  }
-}
diff --git a/test/src/test/invokedmethodlistener/MyListener.java b/test/src/test/invokedmethodlistener/MyListener.java
deleted file mode 100644
index 2006772..0000000
--- a/test/src/test/invokedmethodlistener/MyListener.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.invokedmethodlistener;
-
-import org.testng.IInvokedMethod;
-import org.testng.IInvokedMethodListener;
-import org.testng.ITestResult;
-
-public class MyListener implements IInvokedMethodListener {
-  private int m_beforeCount = 0;
-  private int m_afterCount = 0;
-
-  public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
-    m_afterCount++;
-  }
-
-  public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
-    m_beforeCount++;
-  }
-  
-  public int getBeforeCount() {
-    return m_beforeCount;
-  }
-  
-  public int getAfterCount() {
-    return m_afterCount;
-  }
-
-  
-}
diff --git a/test/src/test/invokedmethodlistener/Success.java b/test/src/test/invokedmethodlistener/Success.java
deleted file mode 100644
index 84a8903..0000000
--- a/test/src/test/invokedmethodlistener/Success.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package test.invokedmethodlistener;
-
-public class Success extends Base {
-  public Success() {
-    super(false);
-  }
-
-}
diff --git a/test/src/test/jar/A.java b/test/src/test/jar/A.java
deleted file mode 100644
index d74b261..0000000
--- a/test/src/test/jar/A.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.jar;
-
-import org.testng.annotations.Test;
-
-public class A {
-
-  @Test
-  public void f() {}
-}
diff --git a/test/src/test/jar/B.java b/test/src/test/jar/B.java
deleted file mode 100644
index c54d966..0000000
--- a/test/src/test/jar/B.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.jar;
-
-import org.testng.annotations.Test;
-
-public class B {
-
-  @Test
-  public void g() {}
-}
diff --git a/test/src/test/jar/JarTest.java b/test/src/test/jar/JarTest.java
deleted file mode 100644
index c07a928..0000000
--- a/test/src/test/jar/JarTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package test.jar;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-import java.io.File;
-import java.util.Arrays;
-
-public class JarTest extends SimpleBaseTest {
-  private String getFinalPath(String jarFile) {
-    File currentDir = new File(".");
-    String path = currentDir.getAbsolutePath();
-    char s = File.separatorChar;
-    path = path + s + "test" + s + "src" + s + "test" + s + "jar" + s;
-
-    return path + jarFile;
-  }
-  
-  private TestListenerAdapter init(String jarFile) {
-    TestNG tng = create();
-    String finalPath = getFinalPath(jarFile);
-    tng.setTestJar(finalPath);
-    TestListenerAdapter result = new TestListenerAdapter();
-    tng.addListener(result);
-    tng.run();
-
-    return result;
-  }
-
-  @Test
-  public void jarWithTestngXml() {
-    TestListenerAdapter tla = init("withtestngxml.jar");
-    Assert.assertEquals(tla.getPassedTests().size(), 1);
-    Assert.assertEquals(tla.getPassedTests().get(0).getMethod().getMethodName(), "f");
-  }
-
-  @Test
-  public void jarWithoutTestngXml() {
-    TestListenerAdapter tla = init("withouttestngxml.jar");
-    Assert.assertEquals(tla.getPassedTests().size(), 2);
-    String first = tla.getPassedTests().get(0).getMethod().getMethodName();
-    String second = tla.getPassedTests().get(1).getMethod().getMethodName();
-    Assert.assertTrue("f".equals(first) || "g".equals(first));
-    Assert.assertTrue("f".equals(second) || "g".equals(second));
-  }
-
-  @Test
-  public void jarWithTestngXmlOverriddenOnCommandLine() {
-    TestNG tng = create();
-    String finalPath = getFinalPath("withtestngxml.jar");
-    tng.setTestJar(finalPath);
-    tng.setTestSuites(Arrays.asList(getFinalPath("testng-override.xml")));
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-
-    Assert.assertEquals(tla.getPassedTests().size(), 2);
-    String first = tla.getPassedTests().get(0).getMethod().getMethodName();
-    String second = tla.getPassedTests().get(1).getMethod().getMethodName();
-    Assert.assertTrue("f".equals(first) || "g".equals(first));
-    Assert.assertTrue("f".equals(second) || "g".equals(second));
-
-  }
-}
diff --git a/test/src/test/jar/build b/test/src/test/jar/build
deleted file mode 100755
index 0596413..0000000
--- a/test/src/test/jar/build
+++ /dev/null
@@ -1,9 +0,0 @@
-v=5.9beta
-
-javac -cp ~/java/TestNG/testng-${v}-jdk15.jar:$CLASSPATH A.java B.java -d .
-jar cvf withtestngxml.jar testng.xml test
-jar cvf withouttestngxml.jar test
-
-java -cp ~/java/TestNG/testng-${v}-jdk15.jar:$CLASSPATH org.testng.TestNG -testjar withtestngxml.jar
-java -cp ~/java/TestNG/testng-${v}-jdk15.jar:$CLASSPATH org.testng.TestNG -testjar withouttestngxml.jar
-
diff --git a/test/src/test/jar/test/jar/A.class b/test/src/test/jar/test/jar/A.class
deleted file mode 100644
index aa7d599..0000000
Binary files a/test/src/test/jar/test/jar/A.class and /dev/null differ
diff --git a/test/src/test/jar/test/jar/B.class b/test/src/test/jar/test/jar/B.class
deleted file mode 100644
index 7c93dc7..0000000
Binary files a/test/src/test/jar/test/jar/B.class and /dev/null differ
diff --git a/test/src/test/jar/testng-override.xml b/test/src/test/jar/testng-override.xml
deleted file mode 100644
index 828d2cb..0000000
--- a/test/src/test/jar/testng-override.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="JarTestSuite" verbose="0">
-
-
-  <test name="JarTest">
-    <classes>
-      <class name="test.jar.A" />
-      <class name="test.jar.B" />
-    </classes>
-  </test>
-</suite>
-
diff --git a/test/src/test/jar/testng.xml b/test/src/test/jar/testng.xml
deleted file mode 100644
index 605db3b..0000000
--- a/test/src/test/jar/testng.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="JarTestSuite" verbose="0">
-
-
-  <test name="JarTest">
-    <classes>
-      <class name="test.jar.A" />
-    </classes>
-  </test>
-</suite>
-
diff --git a/test/src/test/jar/withouttestngxml.jar b/test/src/test/jar/withouttestngxml.jar
deleted file mode 100644
index fd203eb..0000000
Binary files a/test/src/test/jar/withouttestngxml.jar and /dev/null differ
diff --git a/test/src/test/jar/withtestngxml.jar b/test/src/test/jar/withtestngxml.jar
deleted file mode 100644
index 3bc2d2b..0000000
Binary files a/test/src/test/jar/withtestngxml.jar and /dev/null differ
diff --git a/test/src/test/jarpackages/JarPackagesTest.java b/test/src/test/jarpackages/JarPackagesTest.java
deleted file mode 100644
index d9a6591..0000000
--- a/test/src/test/jarpackages/JarPackagesTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package test.jarpackages;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-import java.io.File;
-
-public class JarPackagesTest extends SimpleBaseTest {
-  private TestListenerAdapter init(String jarFile) {
-    TestNG tng = create();
-    File currentDir = new File(".");
-    String path = currentDir.getAbsolutePath();
-    char s = File.separatorChar;
-    path = path + s + "test" + s + "src" + s + "test" + s + "jarpackages" + s;
-    String finalPath = path + jarFile;
-    tng.setTestJar(finalPath);
-    TestListenerAdapter result = new TestListenerAdapter();
-    tng.addListener(result);
-    tng.run();
-
-    return result;
-  }
-
-  @Test
-  public void jarWithTestngXml() {
-    TestListenerAdapter tla = init("withtestngxml.jar");
-    Assert.assertEquals(tla.getPassedTests().size(), 2);
-    String first = tla.getPassedTests().get(0).getName();
-    String second = tla.getPassedTests().get(1).getName();
-    boolean fThenG = "f".equals(first) && "g".equals(second);
-    boolean gThenF = "g".equals(first) && "f".equals(second);
-    Assert.assertTrue(fThenG || gThenF);
-  }
-
-  @Test
-  public void jarWithoutTestngXml() {
-    TestListenerAdapter tla = init("withouttestngxml.jar");
-    Assert.assertEquals(tla.getPassedTests().size(), 2);
-    String first = tla.getPassedTests().get(0).getName();
-    String second = tla.getPassedTests().get(1).getName();
-    boolean fThenG = "f".equals(first) && "g".equals(second);
-    boolean gThenF = "g".equals(first) && "f".equals(second);
-    Assert.assertTrue(fThenG || gThenF);
-  }
-}
diff --git a/test/src/test/jarpackages/testng.xml b/test/src/test/jarpackages/testng.xml
deleted file mode 100644
index 6def727..0000000
--- a/test/src/test/jarpackages/testng.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="JarPackagesTestSuite" verbose="0">
-  <test name="JarPackagesTest">
-    <packages>
-      <package name="test.jarpackages.tests" />
-    </packages>
-  </test>
-</suite>
-
diff --git a/test/src/test/jarpackages/tests/A.java b/test/src/test/jarpackages/tests/A.java
deleted file mode 100644
index 19d25c2..0000000
--- a/test/src/test/jarpackages/tests/A.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.jarpackages.tests;
-
-import org.testng.annotations.Test;
-
-public class A {
-
-  @Test
-  public void f() {}
-}
diff --git a/test/src/test/jarpackages/tests/B.java b/test/src/test/jarpackages/tests/B.java
deleted file mode 100644
index 7097ddf..0000000
--- a/test/src/test/jarpackages/tests/B.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.jarpackages.tests;
-
-import org.testng.annotations.Test;
-
-public class B {
-
-  @Test
-  public void g() {}
-}
diff --git a/test/src/test/junit/BaseTest.java b/test/src/test/junit/BaseTest.java
deleted file mode 100644
index e33ed0d..0000000
--- a/test/src/test/junit/BaseTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-/**
- * Base JUnit test case to verify TestNG handles
- * TestCase hierarchies properly.
- * 
- * @author mperham
- */
-public abstract class BaseTest extends TestCase {
-
-  private static int setUpInvokeCount = 0;
-  private static int tearDownInvokeCount = 0;
-  
-  public BaseTest(String name) {
-    super(name);
-  }
-
-  @Override
-  protected void setUp() throws Exception {
-    setUpInvokeCount++;
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    tearDownInvokeCount++;
-  }
-  
-  public abstract void testA();
-  public abstract void testB();
-
-  public static int getSetUpInvokeCount() {
-    return setUpInvokeCount;
-  }
-
-  public static int getTearDownInvokeCount() {
-    return tearDownInvokeCount;
-  }
-
-}
diff --git a/test/src/test/junit/JUnitConstructorTest.java b/test/src/test/junit/JUnitConstructorTest.java
deleted file mode 100644
index 73d14a3..0000000
--- a/test/src/test/junit/JUnitConstructorTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-
-/**
- * Test that the correct number of constructors is called
- * 
- * Created on Aug 9, 2005
- * @author cbeust
- */
-public class JUnitConstructorTest extends TestCase {
-  private static int m_constructorCount = 0;
-  private static int m_createCount = 0;
-  private static int m_queryCount = 0;
-
-  public JUnitConstructorTest(/*String string */) {
-//    super(string);
-//    setName(string);
-    ppp("CONSTRUCTING");
-    m_constructorCount++;
-  }
-  
-//  public void test1() {
-//    ppp("TEST1");
-//  }
-//
-//  public void test2() {
-//    ppp("TEST2");
-//  }
-
-  public void testCreate() {
-    ppp("TEST_CREATE");
-    m_createCount++;
-  }
-
-  public void testQuery() {
-    ppp("TEST_QUERY");
-    m_queryCount++;
-  }
-  
-  @Override
-  public void tearDown() {
-    assertEquals(3, m_constructorCount);
-    assertTrue((1 == m_createCount && 0 == m_queryCount) ||
-        (0 == m_createCount && 1 == m_queryCount));
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[JUnitHierarchyTest] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/junit/JUnitEmptyTest.java b/test/src/test/junit/JUnitEmptyTest.java
deleted file mode 100644
index 64c7843..0000000
--- a/test/src/test/junit/JUnitEmptyTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.junit;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-public class JUnitEmptyTest extends TestCase {
-
-  public JUnitEmptyTest(String name) {
-    super(name);
-  }
-  
-  public static Test suite() {
-    TestSuite s = new TestSuite(JUnitEmptyTest.class);
-    return s;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/junit/MainSuite.java b/test/src/test/junit/MainSuite.java
deleted file mode 100644
index 7f0d5b0..0000000
--- a/test/src/test/junit/MainSuite.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class MainSuite {
-  public static Test suite() {
-    TestSuite suite = new TestSuite("MainSuite");
-
-    suite.addTest(Suite1.suite());
-    suite.addTest(Suite2.suite());
-    suite.addTest(Suite3.suite());
-
-    return suite;
-  }
-  
-}
diff --git a/test/src/test/junit/SetNameTest.java b/test/src/test/junit/SetNameTest.java
deleted file mode 100644
index a9dd20c..0000000
--- a/test/src/test/junit/SetNameTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-import org.testng.Assert;
-
-public class SetNameTest extends TestCase {
-  public static int m_ctorCount = 0;
-
-  public SetNameTest() {
-    ppp("CTOR");
-    m_ctorCount++;
-  }
-  
-  @Override
-  public void setName(String name) {
-    ppp("SETNAME " + name);
-    super.setName(name);
-  }
-  
-  public void testFoo() {
-    Assert.assertEquals("testFoo", getName());
-    ppp("FOO");
-  }
-
-  public void testBar() {
-    Assert.assertEquals("testBar", getName());
-    ppp("BAR");
-  }
-  
-  private void ppp(String string) {
-    if (false) {
-      System.out.println("[FooBarTest#" + hashCode() + "] " + string);
-    }
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/junit/SetUpExceptionSampleTest.java b/test/src/test/junit/SetUpExceptionSampleTest.java
deleted file mode 100644
index 5e4ebde..0000000
--- a/test/src/test/junit/SetUpExceptionSampleTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class SetUpExceptionSampleTest extends TestCase {
-
-  @Override
-  protected void setUp() throws Exception {
-    throw new RuntimeException();
-  }
-
-  public void testM1() {
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/junit/SetUpExceptionTest.java b/test/src/test/junit/SetUpExceptionTest.java
deleted file mode 100644
index e554f64..0000000
--- a/test/src/test/junit/SetUpExceptionTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.junit;
-
-import org.testng.annotations.Test;
-
-public class SetUpExceptionTest extends test.BaseTest {
-
-  @Test
-  public void setUpFailingShouldCauseMethodsToBeSkipped() {
-    addClass("test.junit.SetUpExceptionSampleTest");
-    setJUnit(true);
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-      "setUp"
-    };
-    String[] skipped = {
-      "testM1", "tearDown"
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Skipped", skipped, getSkippedTests());    
-    verifyTests("Failed", failed, getFailedTests());    
-  }
-}
diff --git a/test/src/test/junit/Suite1.java b/test/src/test/junit/Suite1.java
deleted file mode 100644
index cc62df5..0000000
--- a/test/src/test/junit/Suite1.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class Suite1 {
-  public Suite1(String s) {
-    // dummy
-  }
-  
-  public static Test suite() {
-    TestSuite suite = new TestSuite("JUnitSuite1");
-    suite.addTestSuite(TestAa.class);
-    suite.addTestSuite(TestAb.class);
-    return suite;
-  }
-}
diff --git a/test/src/test/junit/Suite2.java b/test/src/test/junit/Suite2.java
deleted file mode 100644
index b0a5ffc..0000000
--- a/test/src/test/junit/Suite2.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class Suite2 {
-  public static Test suite() {
-    TestSuite suite = new TestSuite("Suite2");
-    suite.addTestSuite(TestAc.class);
-    suite.addTestSuite(TestAd.class);
-    suite.addTestSuite(Suite3.class);
-    return suite;
-  }
-}
diff --git a/test/src/test/junit/Suite3.java b/test/src/test/junit/Suite3.java
deleted file mode 100644
index 56c41b9..0000000
--- a/test/src/test/junit/Suite3.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class Suite3 {
-  public static Test suite() {
-    TestSuite suite = new TestSuite("Suite3");
-    suite.addTest(Suite4.suite());
-    return suite;
-  }
-}
diff --git a/test/src/test/junit/Suite4.java b/test/src/test/junit/Suite4.java
deleted file mode 100644
index 40c18b0..0000000
--- a/test/src/test/junit/Suite4.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.junit;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class Suite4 {
-  public static Test suite() {
-    TestSuite suite = new TestSuite("Suite4");
-    suite.addTestSuite(TestAe.class);
-    suite.addTestSuite(TestAf.class);
-    return suite;
-  }
-}
diff --git a/test/src/test/junit/TestAa.java b/test/src/test/junit/TestAa.java
deleted file mode 100644
index 6a30bfb..0000000
--- a/test/src/test/junit/TestAa.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class TestAa extends TestCase {
-
-  public void testAa1() {
-    
-  }
-}
diff --git a/test/src/test/junit/TestAb.java b/test/src/test/junit/TestAb.java
deleted file mode 100644
index 8cb7a4e..0000000
--- a/test/src/test/junit/TestAb.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class TestAb extends TestCase {
-
-  public void testAb1() {
-    
-  }
-}
diff --git a/test/src/test/junit/TestAc.java b/test/src/test/junit/TestAc.java
deleted file mode 100644
index 34e43db..0000000
--- a/test/src/test/junit/TestAc.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class TestAc extends TestCase {
-
-  public void testAc1() {
-    
-  }
-}
diff --git a/test/src/test/junit/TestAd.java b/test/src/test/junit/TestAd.java
deleted file mode 100644
index b639f09..0000000
--- a/test/src/test/junit/TestAd.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class TestAd extends TestCase {
-
-  public void testAd1() {
-    
-  }
-}
diff --git a/test/src/test/junit/TestAe.java b/test/src/test/junit/TestAe.java
deleted file mode 100644
index 0b53cd9..0000000
--- a/test/src/test/junit/TestAe.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class TestAe extends TestCase {
-
-  public void testAe1() {
-    
-  }
-}
diff --git a/test/src/test/junit/TestAf.java b/test/src/test/junit/TestAf.java
deleted file mode 100644
index df71e36..0000000
--- a/test/src/test/junit/TestAf.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.junit;
-
-import junit.framework.TestCase;
-
-public class TestAf extends TestCase {
-
-  public void testAf1() {
-    
-  }
-}
diff --git a/test/src/test/junit/testsetup/ATest.java b/test/src/test/junit/testsetup/ATest.java
deleted file mode 100644
index 9c2fa9f..0000000
--- a/test/src/test/junit/testsetup/ATest.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.junit.testsetup;
-
-import junit.framework.TestCase;
-
-public class ATest extends TestCase
-{
-	public void testIt()
-	{
-    System.out.println("A.testIt()");
-		Data d = TestSuiteContainerWrapper.getData();
-		assertEquals(3,d.i);
-	}
-}
diff --git a/test/src/test/junit/testsetup/Data.java b/test/src/test/junit/testsetup/Data.java
deleted file mode 100644
index fd2f86e..0000000
--- a/test/src/test/junit/testsetup/Data.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package test.junit.testsetup;
-
-public class Data
-{
-	public int i = 3;
-}
diff --git a/test/src/test/junit/testsetup/LayerATestSuite.java b/test/src/test/junit/testsetup/LayerATestSuite.java
deleted file mode 100644
index a849eda..0000000
--- a/test/src/test/junit/testsetup/LayerATestSuite.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.junit.testsetup;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class LayerATestSuite 
-{
-	public static Test suite()
-	{
-		TestSuite suite = new TestSuite( "Layer A Test Suite" );
-		
-		suite.addTestSuite( ATest.class );
-		
-		TestSuiteContainerWrapper wrapper = new TestSuiteContainerWrapper(suite, Data.class);
-		return wrapper;
-	}
-}
diff --git a/test/src/test/junit/testsetup/LoggingTestSuite.java b/test/src/test/junit/testsetup/LoggingTestSuite.java
deleted file mode 100644
index 87e61cc..0000000
--- a/test/src/test/junit/testsetup/LoggingTestSuite.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.junit.testsetup;
-
-
-import junit.framework.Test;
-import junit.framework.TestResult;
-import junit.framework.TestSuite;
-
-public class LoggingTestSuite extends TestSuite
-{
-	public LoggingTestSuite( String string )
-	{
-		super( string );
-	}
-
-	@Override
-  public void run( TestResult result )
-	{
-		super.run( result );
-	}
-
-	@Override
-  public void runTest( Test test, TestResult result )
-	{
-		super.runTest( test, result );
-	}
-}
diff --git a/test/src/test/junit/testsetup/SmokeSuite.java b/test/src/test/junit/testsetup/SmokeSuite.java
deleted file mode 100644
index cc3d9d3..0000000
--- a/test/src/test/junit/testsetup/SmokeSuite.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.junit.testsetup;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class SmokeSuite extends LoggingTestSuite
-{
-	public static void main( String[] args )
-	{
-		junit.textui.TestRunner.run( suite() );
-	}
-
-	public static Test suite()
-	{
-		TestSuite suite = new TestSuite( "Smoke Test Suite" );
-
-		suite.addTest(LayerATestSuite.suite());
-		
-		return suite;
-	}
-
-//	public SmokeSuite()
-//	{
-//		this("SmokeSuite");
-//	}
-	
-	public SmokeSuite( String name )
-	{
-		super( name );
-	}
-}
diff --git a/test/src/test/junit/testsetup/TestSuiteContainerWrapper.java b/test/src/test/junit/testsetup/TestSuiteContainerWrapper.java
deleted file mode 100644
index 7c2903f..0000000
--- a/test/src/test/junit/testsetup/TestSuiteContainerWrapper.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package test.junit.testsetup;
-
-import junit.extensions.TestSetup;
-import junit.framework.TestSuite;
-
-public class TestSuiteContainerWrapper extends TestSetup {
-  private static Data INSTANCE = null;
-  private static TestSuite _test = null;
-  private static Class dataImpl = null;
-
-  public TestSuiteContainerWrapper(TestSuite testSuite, Class dataImpl) {
-    super(testSuite);
-    _test = testSuite;
-    TestSuiteContainerWrapper.dataImpl = dataImpl;
-  }
-
-  public static Data getData() {
-    return INSTANCE;
-  }
-
-  @Override
-  protected void setUp() throws Exception {
-    System.out.println("setup");
-    INSTANCE = (Data) dataImpl.newInstance();
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    System.out.println("teardown");
-
-    INSTANCE = null;
-
-    System.out.println(_test.countTestCases() + " test cases defined by \""
-        + _test.getName() + "\" were executed.");
-  }
-}
diff --git a/test/src/test/justin/BaseTestCase.java b/test/src/test/justin/BaseTestCase.java
deleted file mode 100644
index e62a7cb..0000000
--- a/test/src/test/justin/BaseTestCase.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package test.justin;
-
-import org.testng.annotations.Test;
-
-/**
- * @author <a href="mailto:jlee at antwerkz.com">Justin Lee</a> Date: Aug 15, 2004
- */
- at Test
-public abstract class BaseTestCase {
-    protected static final String TEST_PASSWORD = "testPassword";
-
-    public BaseTestCase() {
-        init();
-    }
-
-    public BaseTestCase(String name) {
-        this();
-    }
-
-    private void init() {
-        setSessionUser(null);
-    }
-
-    protected void commit() {
-    }
-
-    protected void tearDown() throws Exception {
-        commit();
-    }
-
-    protected Object createCustomer() throws Exception {
-      return null;
-    }
-
-    protected Object createProject() throws Exception {
-      return null;
-    }
-
-    protected Object createTimeEntry() throws Exception {
-        return null;
-    }
-
-    protected Object createUser(String name) throws Exception {
-      return null;
-    }
-
-    protected Object createUserGroup() throws Exception {
-      return null;
-    }
-
-    protected void setSessionUser(Object user) {
-    }
-}
diff --git a/test/src/test/justin/MonthTest.java b/test/src/test/justin/MonthTest.java
deleted file mode 100644
index 07dea96..0000000
--- a/test/src/test/justin/MonthTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.justin;
-
-import java.text.ParseException;
-
-import org.testng.annotations.Test;
-
-/**
- * Created Jul 10, 2005
- *
- * @author <a href="mailto:jlee at antwerkz.com">Justin Lee</a>
- */
-public class MonthTest extends BaseTestCase {
-    public MonthTest() {
-    }
-
-    public MonthTest(String name) {
-        super(name);
-    }
-
-    @Test(groups = {"bean-tests"})
-    public void july2005() throws ParseException {
-    }
-
-    @Test
-    public void weekendDay() throws ParseException {
-    }
-}
\ No newline at end of file
diff --git a/test/src/test/mannotation/MAnnotation2SampleTest.java b/test/src/test/mannotation/MAnnotation2SampleTest.java
deleted file mode 100644
index e7bd519..0000000
--- a/test/src/test/mannotation/MAnnotation2SampleTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package test.mannotation;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-import org.testng.Assert;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.annotations.Test;
-import org.testng.internal.DefaultGuiceModule;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.JDK15AnnotationFinder;
-
-import java.lang.reflect.Method;
-
-public class MAnnotation2SampleTest {
-  private IAnnotationFinder m_finder;
-  
-  @Configuration(beforeTestClass = true, enabled = true, groups="current")
-  public void init() {
-    Module module = new DefaultGuiceModule(null);
-    Injector injector = Guice.createInjector(module);
-    m_finder = injector.getInstance(IAnnotationFinder.class);
-  }
-
-  @Test
-  public void verifyTestGroupsInheritance() 
-    throws SecurityException, NoSuchMethodException 
-  {
-    {
-      Method method = MTest3.class.getMethod("groups1", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertEqualsNoOrder(new String[] { "method-test3", "child-class-test3", "base-class" }, 
-          test1.getGroups());
-    }
-
-    {
-      Method method = MTest3.class.getMethod("groups2", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertEqualsNoOrder(new String[] { "child-class-test3", "base-class" }, 
-          test1.getGroups());
-    }
-  }
-  
-  @Test
-  public void verifyTestDependsOnGroupsInheritance() 
-    throws SecurityException, NoSuchMethodException 
-  {
-    {
-      Method method = MTest3.class.getMethod("dependsOnGroups1", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertEqualsNoOrder(new String[] { "dog2", "dog1", "dog3" }, 
-          test1.getDependsOnGroups());
-    }
-
-    {
-      Method method = MTest3.class.getMethod("dependsOnGroups2", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertEqualsNoOrder(new String[] { "dog1", "dog3" }, 
-          test1.getDependsOnGroups());
-    }
-
-  }
-
-  @Test
-  public void verifyTestDependsOnMethodsInheritance() 
-    throws SecurityException, NoSuchMethodException 
-  {
-    {
-      Method method = MTest3.class.getMethod("dependsOnMethods1", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertEqualsNoOrder(new String[] { "dom2", "dom3", "dom1" }, 
-          test1.getDependsOnMethods());
-    }
-
-    {
-      Method method = MTest3.class.getMethod("dependsOnMethods2", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertEqualsNoOrder(new String[] { "dom1", "dom3" }, 
-          test1.getDependsOnMethods());
-    }
-
-  }
-
-
-  @Test
-  public void verifyConfigurationGroupsInheritance() 
-    throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest3.class.getMethod("beforeSuite", new Class[0]);
-    IConfigurationAnnotation test1 = (IConfigurationAnnotation) m_finder.findAnnotation(method, IConfigurationAnnotation.class);
-    Assert.assertEqualsNoOrder(new String[] { "method-test3", "child-class-test3", "base-class" }, 
-        test1.getGroups());
-  }
-
-  @Test(groups="current")
-  public void verifyTestEnabledInheritance() 
-    throws SecurityException, NoSuchMethodException 
-  {
-    {
-      Method method = MTest3.class.getMethod("enabled1", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertFalse(test1.getEnabled());
-    }
-    
-    {
-      Method method = MTest3.class.getMethod("enabled2", new Class[0]);
-      ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-      Assert.assertTrue(test1.getEnabled());
-    }
-
-  }
-
-//  @Test(groups = "current")
-//  public void verifyCapture() 
-//    throws SecurityException, NoSuchMethodException 
-//  {
-//    {
-//      Method method = MChildCaptureTest.class.getMethod("shouldBelongToGroupChild", new Class[0]);
-//      ITest test1 = (ITest) m_finder.findAnnotation(method, ITest.class);
-//      Assert.assertEqualsNoOrder(new String[] { "child" }, 
-//          test1.getGroups());
-//    }
-//  }
-
-
-}
diff --git a/test/src/test/mannotation/MAnnotationSampleTest.java b/test/src/test/mannotation/MAnnotationSampleTest.java
deleted file mode 100644
index a190e67..0000000
--- a/test/src/test/mannotation/MAnnotationSampleTest.java
+++ /dev/null
@@ -1,262 +0,0 @@
-package test.mannotation;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-
-import org.testng.Assert;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.IConfigurationAnnotation;
-import org.testng.annotations.IDataProviderAnnotation;
-import org.testng.annotations.IExpectedExceptionsAnnotation;
-import org.testng.annotations.IFactoryAnnotation;
-import org.testng.annotations.IParametersAnnotation;
-import org.testng.annotations.ITestAnnotation;
-import org.testng.annotations.Test;
-import org.testng.internal.DefaultGuiceModule;
-import org.testng.internal.annotations.IAfterSuite;
-import org.testng.internal.annotations.IAnnotationFinder;
-import org.testng.internal.annotations.IBeforeSuite;
-import org.testng.internal.annotations.JDK15AnnotationFinder;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
- at Test(enabled = true)
-public class MAnnotationSampleTest {
-  private IAnnotationFinder m_finder;
-
-  @Configuration(beforeTestClass = true, enabled = true)
-  public void init() {
-    Module module = new DefaultGuiceModule(null);
-    Injector injector = Guice.createInjector(module);
-    m_finder = injector.getInstance(IAnnotationFinder.class);
-  }
-
-  public void verifyTestClassLevel() {
-    //
-    // Tests on MTest1SampleTest
-    //
-    ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(MTest1.class, ITestAnnotation.class);
-    Assert.assertTrue(test1.getEnabled());
-    Assert.assertEquals(test1.getGroups(), new String[] { "group1", "group2" });
-    Assert.assertTrue(test1.getAlwaysRun());
-    Assert.assertEquals(test1.getParameters(), new String[] { "param1", "param2" });
-    Assert.assertEqualsNoOrder(test1.getDependsOnGroups(), new String[] { "dg1", "dg2" },  "depends on groups");
-    Assert.assertEqualsNoOrder( test1.getDependsOnMethods(), new String[] { "dm1", "dm2" });
-    Assert.assertEquals(test1.getTimeOut(), 42);
-    Assert.assertEquals(test1.getInvocationCount(), 43);
-    Assert.assertEquals(test1.getSuccessPercentage(), 44);
-    Assert.assertEquals(test1.getThreadPoolSize(), 3);
-    Assert.assertEquals(test1.getDataProvider(), "dp");
-    Assert.assertEquals(test1.getDescription(), "Class level description");
-    
-    //
-    // Tests on MTest1SampleTest (test defaults)
-    //
-    ITestAnnotation test2 = (ITestAnnotation) m_finder.findAnnotation(MTest2.class, ITestAnnotation.class);
-    // test default for enabled
-    Assert.assertTrue(test2.getEnabled());
-    Assert.assertFalse(test2.getAlwaysRun());
-    Assert.assertEquals(test2.getTimeOut(), 0);
-    Assert.assertEquals(test2.getInvocationCount(), 1);
-    Assert.assertEquals(test2.getSuccessPercentage(), 100);
-    Assert.assertEquals(test2.getDataProvider(), "");
-  }
-  
-  public void verifyTestMethodLevel() throws SecurityException, NoSuchMethodException 
-  {
-    //
-    // Tests on MTest1SampleTest
-    //
-    Method method = MTest1.class.getMethod("f", new Class[0]);
-    ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(method, ITestAnnotation.class);
-    Assert.assertTrue(test1.getEnabled());
-    Assert.assertEqualsNoOrder(test1.getGroups(), new String[] { "group1", "group3", "group4", "group2" });
-    Assert.assertTrue(test1.getAlwaysRun());
-    Assert.assertEquals(test1.getParameters(), new String[] { "param3", "param4" });
-    Assert.assertEqualsNoOrder(test1.getDependsOnGroups(), new String[] { "dg1", "dg2", "dg3", "dg4" });
-    Assert.assertEqualsNoOrder(test1.getDependsOnMethods(), new String[] { "dm1", "dm2", "dm3", "dm4" });
-    Assert.assertEquals(test1.getTimeOut(), 142);
-    Assert.assertEquals(test1.getInvocationCount(), 143);
-    Assert.assertEquals(test1.getSuccessPercentage(), 61);
-    Assert.assertEquals(test1.getDataProvider(), "dp2");
-    Assert.assertEquals(test1.getDescription(), "Method description");
-    Class[] exceptions = test1.getExpectedExceptions();
-    Assert.assertEquals(exceptions.length, 1);
-    Assert.assertEquals(exceptions[0], NullPointerException.class);
-  }  
-  
-  public void verifyTestConstructorLevel() throws SecurityException, NoSuchMethodException 
-  {
-    //
-    // Tests on MTest1SampleTest
-    //
-    Constructor constructor = MTest1.class.getConstructor(new Class[0]);
-    ITestAnnotation test1 = (ITestAnnotation) m_finder.findAnnotation(constructor, ITestAnnotation.class);
-    Assert.assertNotNull(test1);
-    Assert.assertTrue(test1.getEnabled());
-    Assert.assertEqualsNoOrder(test1.getGroups(), new String[] { "group5", "group1", "group6", "group2" });
-    Assert.assertTrue(test1.getAlwaysRun());
-    Assert.assertEquals(test1.getParameters(), new String[] { "param5", "param6" });
-    Assert.assertEqualsNoOrder(test1.getDependsOnGroups(), new String[] { "dg1", "dg2", "dg5", "dg6" });
-    Assert.assertEqualsNoOrder(test1.getDependsOnMethods(), new String[] { "dm1", "dm2", "dm5", "dm6" });
-    Assert.assertEquals(test1.getTimeOut(), 242);
-    Assert.assertEquals(test1.getInvocationCount(), 243);
-    Assert.assertEquals(test1.getSuccessPercentage(), 62);
-    Assert.assertEquals(test1.getDataProvider(), "dp3");
-    Assert.assertEquals(test1.getDescription(), "Constructor description");
-    Class[] exceptions = test1.getExpectedExceptions();
-    Assert.assertEquals(exceptions.length, 1);
-    Assert.assertEquals(exceptions[0], NumberFormatException.class);
-  }  
-  
-  public void verifyConfigurationBefore() throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest1.class.getMethod("before", new Class[0]);
-    IConfigurationAnnotation configuration = 
-      (IConfigurationAnnotation) m_finder.findAnnotation(method, IConfigurationAnnotation.class);
-    Assert.assertNotNull(configuration);
-    Assert.assertTrue(configuration.getBeforeSuite());
-    Assert.assertTrue(configuration.getBeforeTestMethod());
-    Assert.assertTrue(configuration.getBeforeTest());
-    Assert.assertTrue(configuration.getBeforeTestClass());
-    Assert.assertFalse(configuration.getAfterSuite());
-    Assert.assertFalse(configuration.getAfterTestMethod());
-    Assert.assertFalse(configuration.getAfterTest());
-    Assert.assertFalse(configuration.getAfterTestClass());
-    Assert.assertEquals(0, configuration.getAfterGroups().length);
-    String[] bg = configuration.getBeforeGroups();
-    Assert.assertEquals(bg.length, 2);
-    Assert.assertEqualsNoOrder(bg, new String[] {"b1", "b2"});
-    
-    // Default values
-    Assert.assertTrue(configuration.getEnabled());
-    Assert.assertTrue(configuration.getInheritGroups());
-    Assert.assertFalse(configuration.getAlwaysRun());
-  }
-  
-  public void verifyConfigurationAfter() throws SecurityException, NoSuchMethodException
-  {
-    Method method = MTest1.class.getMethod("after", new Class[0]);
-    IConfigurationAnnotation configuration = 
-      (IConfigurationAnnotation) m_finder.findAnnotation(method, IConfigurationAnnotation.class);
-    Assert.assertNotNull(configuration);
-    Assert.assertFalse(configuration.getBeforeSuite());
-    Assert.assertFalse(configuration.getBeforeTestMethod());
-    Assert.assertFalse(configuration.getBeforeTest());
-    Assert.assertFalse(configuration.getBeforeTestClass());
-    Assert.assertTrue(configuration.getAfterSuite());
-    Assert.assertTrue(configuration.getAfterTestMethod());
-    Assert.assertTrue(configuration.getAfterTest());
-    Assert.assertTrue(configuration.getAfterTestClass());
-    Assert.assertEquals(0, configuration.getBeforeGroups().length);
-    String[] ag = configuration.getAfterGroups();
-    Assert.assertEquals(ag.length, 2);
-    Assert.assertEqualsNoOrder(ag, new String[] {"a1", "a2"});
-    
-    // Default values
-    Assert.assertTrue(configuration.getEnabled());
-    Assert.assertTrue(configuration.getInheritGroups());
-    Assert.assertFalse(configuration.getAlwaysRun());
-  }  
-  
-  public void verifyConfigurationOthers() throws SecurityException, NoSuchMethodException
-  {
-    Method method = MTest1.class.getMethod("otherConfigurations", new Class[0]);
-    IConfigurationAnnotation configuration = 
-      (IConfigurationAnnotation) m_finder.findAnnotation(method, IConfigurationAnnotation.class);
-    Assert.assertNotNull(configuration);
-    Assert.assertFalse(configuration.getBeforeSuite());
-    Assert.assertFalse(configuration.getBeforeTestMethod());
-    Assert.assertFalse(configuration.getBeforeTest());
-    Assert.assertFalse(configuration.getBeforeTestClass());
-    Assert.assertFalse(configuration.getAfterSuite());
-    Assert.assertFalse(configuration.getAfterTestMethod());
-    Assert.assertFalse(configuration.getAfterTest());
-    Assert.assertFalse(configuration.getAfterTestClass());
-    
-    Assert.assertFalse(configuration.getEnabled());
-    Assert.assertEquals(configuration.getParameters(), new String[] { "oparam1", "oparam2" });
-    Assert.assertEqualsNoOrder(configuration.getGroups(), new String[] { "group1", "ogroup1", "ogroup2", "group2" }, "groups");
-    Assert.assertEqualsNoOrder(configuration.getDependsOnGroups(), new String[] { "odg1", "odg2" }, "depends on groups");
-    Assert.assertEqualsNoOrder(configuration.getDependsOnMethods(), new String[] { "odm1", "odm2" }, "depends on methods");
-    Assert.assertFalse(configuration.getInheritGroups());
-    Assert.assertTrue(configuration.getAlwaysRun());
-    Assert.assertEquals(configuration.getDescription(), "beforeSuite description");
-  }  
-  
-  public void verifyDataProvider() throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest1.class.getMethod("otherConfigurations", new Class[0]);
-    IDataProviderAnnotation dataProvider = 
-      (IDataProviderAnnotation) m_finder.findAnnotation(method, IDataProviderAnnotation.class);
-    Assert.assertNotNull(dataProvider);
-    Assert.assertEquals(dataProvider.getName(), "dp4");
-  }  
-  
-  public void verifyExpectedExceptions() throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest1.class.getMethod("otherConfigurations", new Class[0]);
-    IExpectedExceptionsAnnotation exceptions= 
-      (IExpectedExceptionsAnnotation) m_finder.findAnnotation(method, IExpectedExceptionsAnnotation.class);
-    
-    Assert.assertNotNull(exceptions);
-    Assert.assertEquals(exceptions.getValue(), new Class[] { MTest1.class, MTest2.class });
-  }
-
-  public void verifyFactory() throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest1.class.getMethod("factory", new Class[0]);
-    IFactoryAnnotation factory= 
-      (IFactoryAnnotation) m_finder.findAnnotation(method, IFactoryAnnotation.class);
-    
-    Assert.assertNotNull(factory);
-    Assert.assertEquals(factory.getParameters(), new String[] { "pf1", "pf2" });
-  }
-
-  public void verifyParameters() throws SecurityException, NoSuchMethodException 
-  {
-    Module module = new DefaultGuiceModule(null);
-    Injector injector = Guice.createInjector(module);
-    m_finder = injector.getInstance(IAnnotationFinder.class);
-    Method method = MTest1.class.getMethod("parameters", new Class[0]);
-    IParametersAnnotation parameters = 
-      (IParametersAnnotation) m_finder.findAnnotation(method, IParametersAnnotation.class);
-    
-    Assert.assertNotNull(parameters);
-    Assert.assertEquals(parameters.getValue(), new String[] { "pp1", "pp2", "pp3" });
-  }
-
-  public void verifyNewConfigurationBefore() throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest1.class.getMethod("newBefore", new Class[0]);
-    IConfigurationAnnotation configuration = 
-      (IConfigurationAnnotation) m_finder.findAnnotation(method, IBeforeSuite.class);
-    Assert.assertNotNull(configuration);
-    Assert.assertTrue(configuration.getBeforeSuite());
-    
-    // Default values
-    Assert.assertTrue(configuration.getEnabled());
-    Assert.assertTrue(configuration.getInheritGroups());
-    Assert.assertFalse(configuration.getAlwaysRun());
-  }
-
-  public void verifyNewConfigurationAfter() throws SecurityException, NoSuchMethodException 
-  {
-    Method method = MTest1.class.getMethod("newAfter", new Class[0]);
-    IConfigurationAnnotation configuration = 
-      (IConfigurationAnnotation) m_finder.findAnnotation(method, IAfterSuite.class);
-    Assert.assertNotNull(configuration);
-    Assert.assertTrue(configuration.getAfterSuite());
-    
-    // Default values
-    Assert.assertTrue(configuration.getEnabled());
-    Assert.assertTrue(configuration.getInheritGroups());
-    Assert.assertFalse(configuration.getAlwaysRun());
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[MAnnotationSampleTest] " + s);
-  }
-}
diff --git a/test/src/test/mannotation/MBase.java b/test/src/test/mannotation/MBase.java
deleted file mode 100644
index 9570d42..0000000
--- a/test/src/test/mannotation/MBase.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.mannotation;
-
-import org.testng.annotations.Test;
-
- at Test(groups = "base-class", dependsOnGroups="dog3", dependsOnMethods="dom3",
-    enabled=true)
-public class MBase {
-  
-  public void baseTest() {}
-
-}
diff --git a/test/src/test/mannotation/MBaseCapture.java b/test/src/test/mannotation/MBaseCapture.java
deleted file mode 100644
index f730c7d..0000000
--- a/test/src/test/mannotation/MBaseCapture.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.mannotation;
-
-import org.testng.annotations.Test;
-
-/**
- * Make sure that if a method is declared in the base class and a child class
- * adds a class-scoped group to it, that method receives it as well.
- * 
- * @author cbeust
- * @date Mar 22, 2006
- */
-public class MBaseCapture {
-
-  @Test
-  public void shouldBelongToGroupChild() {
-    
-  }
-}
diff --git a/test/src/test/mannotation/MChildCaptureTest.java b/test/src/test/mannotation/MChildCaptureTest.java
deleted file mode 100644
index 3caf211..0000000
--- a/test/src/test/mannotation/MChildCaptureTest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.mannotation;
-
-import org.testng.annotations.Test;
-
- at Test(groups = "child")
-public class MChildCaptureTest extends MBaseCapture {
-
-  public void f() {
-    
-  }
-}
diff --git a/test/src/test/mannotation/MTest1.java b/test/src/test/mannotation/MTest1.java
deleted file mode 100644
index 68673d5..0000000
--- a/test/src/test/mannotation/MTest1.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package test.mannotation;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Factory;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
- at Test(enabled = true, groups = {"group1", "group2"},
-    alwaysRun = true, parameters = {"param1", "param2"},
-    dependsOnGroups = {"dg1", "dg2"}, dependsOnMethods = {"dm1", "dm2"},
-    timeOut = 42, invocationCount = 43, successPercentage = 44,
-    threadPoolSize = 3,
-    dataProvider = "dp", description = "Class level description")
-public class MTest1 {
-  
-  @Test(enabled = true, groups = {"group5", "group6"},
-      alwaysRun = true, parameters = {"param5", "param6"},
-      dependsOnGroups = {"dg5", "dg6"}, dependsOnMethods = {"dm5", "dm6"},
-      timeOut = 242, invocationCount = 243, successPercentage = 62,
-      dataProvider = "dp3", description = "Constructor description",
-      expectedExceptions = NumberFormatException.class)
-  public MTest1() {}
-
-  @Test(enabled = true, groups = {"group3", "group4"},
-      alwaysRun = true, parameters = {"param3", "param4"},
-      dependsOnGroups = {"dg3", "dg4"}, dependsOnMethods = {"dm3", "dm4"},
-      timeOut = 142, invocationCount = 143, successPercentage = 61,
-      dataProvider = "dp2", description = "Method description",
-      expectedExceptions = NullPointerException.class)
-  public void f() {}
-
-  @Configuration(beforeSuite = true, beforeTestMethod = true,
-      beforeTest = true, beforeTestClass = true, 
-      beforeGroups = { "b1", "b2"})
-  public void before() {}
-  
-  @Configuration(afterSuite = true, afterTestMethod = true,
-      afterTest = true, afterTestClass = true,
-      afterGroups = {"a1", "a2"})
-  public void after() {}
-
-  @Configuration(parameters = {"oparam1", "oparam2"},
-      enabled = false, groups = {"ogroup1", "ogroup2"},
-      dependsOnGroups = {"odg1","odg2"},
-      dependsOnMethods = {"odm1", "odm2"}, alwaysRun = true,
-      inheritGroups = false, 
-      description = "beforeSuite description")
-   @DataProvider(name = "dp4")
-   @ExpectedExceptions({MTest1.class, MTest2.class })
-  public void otherConfigurations() {}
-  
-  @Factory(parameters = {"pf1", "pf2"})
-  public void factory() {}
-
-  @Parameters({"pp1", "pp2", "pp3"})
-  public void parameters() {}
-  
-  @BeforeSuite
-  @BeforeTest
-  @BeforeGroups
-  @BeforeClass
-  @BeforeMethod
-  public void newBefore() {}
-  
-  @AfterSuite
-  @AfterTest
-  @AfterGroups
-  @AfterClass
-  @AfterMethod
-  public void newAfter() {}
-
-}
diff --git a/test/src/test/mannotation/MTest2.java b/test/src/test/mannotation/MTest2.java
deleted file mode 100644
index 2a7b9ff..0000000
--- a/test/src/test/mannotation/MTest2.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package test.mannotation;
-
-import org.testng.annotations.Test;
-
- at Test(alwaysRun = false)
-public class MTest2 {
-
-}
diff --git a/test/src/test/mannotation/MTest3.java b/test/src/test/mannotation/MTest3.java
deleted file mode 100644
index c31c8cc..0000000
--- a/test/src/test/mannotation/MTest3.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.mannotation;
-
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
- at Test(groups = "child-class-test3", dependsOnGroups = "dog1", dependsOnMethods = "dom1")
-public class MTest3 extends MBase {
-
-  @Test(groups = "method-test3")
-  public void groups1() {}
-
-  @Test
-  public void groups2() {}
-  
-  @Test(dependsOnGroups = "dog2")
-  public void dependsOnGroups1() {}
-
-  @Test
-  public void dependsOnGroups2() {}
-
-  @Test(dependsOnMethods = "dom2")
-  public void dependsOnMethods1() {}
-
-  @Test
-  public void dependsOnMethods2() {}
-  
-  @Test(enabled = false)
-  public void enabled1() {}
-  
-  @Test
-  public void enabled2() {}
-  
-  @Configuration(beforeSuite = true, groups = "method-test3")
-  public void beforeSuite() {
-  }
-
-}
diff --git a/test/src/test/methodinterceptors/FastTestsFirstInterceptor.java b/test/src/test/methodinterceptors/FastTestsFirstInterceptor.java
deleted file mode 100644
index c3591d0..0000000
--- a/test/src/test/methodinterceptors/FastTestsFirstInterceptor.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package test.methodinterceptors;
-
-import org.testng.IMethodInstance;
-import org.testng.IMethodInterceptor;
-import org.testng.ITestContext;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class FastTestsFirstInterceptor implements IMethodInterceptor {
-  public List<IMethodInstance> intercept(List<IMethodInstance> methods,
-      ITestContext context)
-  {
-    List<IMethodInstance> result = new ArrayList<IMethodInstance>();
-    for (IMethodInstance m : methods) {
-      Test test = m.getMethod().getMethod().getAnnotation(Test.class);
-      Set<String> groups = new HashSet<String>();
-      for (String group : test.groups()) {
-        groups.add(group);
-      }
-      if (groups.contains("fast")) {
-        result.add(0, m);
-      }
-      else {
-        result.add(m);
-      }
-    }
-    return result;
-  }
-
-}
diff --git a/test/src/test/methodinterceptors/FooTest.java b/test/src/test/methodinterceptors/FooTest.java
deleted file mode 100644
index 5309ae0..0000000
--- a/test/src/test/methodinterceptors/FooTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.methodinterceptors;
-
-import org.testng.annotations.Test;
-
-public class FooTest {
-  
-  @Test(groups = "fast")
-  public void zzzfast() {}
-  
-  @Test
-  public void slow() {}
-
-  @Test
-  public void a() {}
-}
diff --git a/test/src/test/methodinterceptors/MethodInterceptorTest.java b/test/src/test/methodinterceptors/MethodInterceptorTest.java
deleted file mode 100644
index 2c72ccf..0000000
--- a/test/src/test/methodinterceptors/MethodInterceptorTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package test.methodinterceptors;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.Parser;
-import org.testng.xml.XmlSuite;
-import org.xml.sax.SAXException;
-
-import test.SimpleBaseTest;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-public class MethodInterceptorTest extends SimpleBaseTest {
-  
-  private String XML =
-    XML = "<!DOCTYPE suite SYSTEM \"http://beust.com/testng/testng-1.0.dtd\" >" +
-    "" +
-    "<suite name=\"Single\" verbose=\"0\">" +
-    "" +
-    "<listeners>" +
-    "  <listener class-name=\"test.methodinterceptors.NullMethodInterceptor\" />" +
-    "</listeners>" +
-    "" +
-    "  <test name=\"Single\" >" +
-    "    <classes>" +
-    "      <class name=\"test.methodinterceptors.FooTest\" />" +
-    "     </classes>" +
-    "  </test>" +
-    "" +
-    "</suite>";
-
-  @Test
-  public void noMethodsShouldRun() {
-    TestNG tng = create();
-    tng.setTestClasses(new Class[] { FooTest.class });
-    testNullInterceptor(tng);
-  }
-  
-  private void testNullInterceptor(TestNG tng) {
-    tng.setMethodInterceptor(new NullMethodInterceptor());
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), 0);
-    Assert.assertEquals(tla.getFailedTests().size(), 0);
-    Assert.assertEquals(tla.getSkippedTests().size(), 0);
-  }
-
-  private void testFast(boolean useInterceptor) {
-    TestNG tng = create();
-    tng.setTestClasses(new Class[] { FooTest.class });
-    if (useInterceptor) {
-      tng.setMethodInterceptor(new FastTestsFirstInterceptor());
-    }
-    TestListenerAdapter tla = new TestListenerAdapter();
-//    tng.setParallel("methods");
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), 3);
-    ITestResult first = tla.getPassedTests().get(0);
-
-    String method = "zzzfast";
-    if (useInterceptor) {
-      Assert.assertEquals(first.getMethod().getMethodName(), method);
-    } else {
-      Assert.assertNotSame(first.getMethod().getMethodName(), method);
-    }
-  }
-
-  @Test
-  public void fastShouldRunFirst() {
-    testFast(true /* use interceptor */);
-  }
-  
-  @Test
-  public void fastShouldNotRunFirst() {
-    testFast(false /* don't use interceptor */);
-  }
-
-  @Test
-  public void nullMethodInterceptorWorksInTestngXml()
-      throws IOException, ParserConfigurationException, SAXException {
-
-    File f = File.createTempFile("testng-tests-", "");
-    f.deleteOnExit();
-    BufferedWriter bw = new BufferedWriter(new FileWriter(f));
-    bw.write(XML);
-    bw.close();
-    
-    FileInputStream fis = null;
-    try {
-      List<XmlSuite> xmlSuites = new Parser(f.getAbsolutePath()).parseToList();
-      
-      TestNG tng = create();
-      tng.setXmlSuites(xmlSuites);
-      testNullInterceptor(tng);
-    }
-    catch(Exception ex) {
-      ex.printStackTrace();
-    }
-    finally {
-      if (fis != null) fis.close();
-    }
-  }
-
-}
diff --git a/test/src/test/methodinterceptors/NullMethodInterceptor.java b/test/src/test/methodinterceptors/NullMethodInterceptor.java
deleted file mode 100644
index 33b5b80..0000000
--- a/test/src/test/methodinterceptors/NullMethodInterceptor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.methodinterceptors;
-
-import org.testng.IMethodInstance;
-import org.testng.IMethodInterceptor;
-import org.testng.ITestContext;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class NullMethodInterceptor implements IMethodInterceptor {
-  public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
-    return new ArrayList<IMethodInstance>();
-  }
-}
diff --git a/test/src/test/methods/SampleMethod1.java b/test/src/test/methods/SampleMethod1.java
deleted file mode 100644
index d0518ba..0000000
--- a/test/src/test/methods/SampleMethod1.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.methods;
-
-import org.testng.annotations.*;
-
-/**
- * This class is used to test invocation of methods
- * 
- * @author cbeust
- */
-public class SampleMethod1 {
-  private static boolean m_ok1 = false;
-  private static boolean m_ok2 = false;
-  private static boolean m_ok3 = true;
-  private static boolean m_ok4 = true;
-  
-  public static void reset() {
-    m_ok1 = false;
-    m_ok2 = false;
-    m_ok3 = true;
-    m_ok4 = true;  
-  }
-  
-  @Test(groups = { "sample1" })
-  public void shouldRun1() {
-    m_ok1 = true;
-  }
-  
-  @Test(groups = { "sample1" })
-  public void shouldRun2() {
-    m_ok2 = true;
-  }
-  
-  @Test
-  public void shouldNotRun1() {
-    m_ok3 = false;
-  }
-
-  @Test
-  public void shouldNotRun2() {
-    m_ok4 = false;
-  }
-  
-  public static void verify() {
-    assert m_ok1 && m_ok2 && m_ok3 && m_ok4 :
-      "All booleans should be true: " + m_ok1 + " " + m_ok2
-      + " " + m_ok3 + " " + m_ok4;
-  }
-  static private void ppp(String s) {
-    System.out.println("[SampleMethod1] " + s);
-  }
-
-}
diff --git a/test/src/test/methods/VerifyMethod1.java b/test/src/test/methods/VerifyMethod1.java
deleted file mode 100644
index fdc2ae4..0000000
--- a/test/src/test/methods/VerifyMethod1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.methods;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-/**
- * This class verifies that the correct methods were run
- * 
- * @author cbeust
- */
- at Test(dependsOnGroups = { "sample1" })
-public class VerifyMethod1 {
-  
-  @BeforeSuite
-  public void init() {
-    SampleMethod1.reset();
-  }
-  
-  @Test
-  public void verify() {
-    SampleMethod1.verify();
-  }
-
-}
diff --git a/test/src/test/methodselectors/AllTestsMethodSelector.java b/test/src/test/methodselectors/AllTestsMethodSelector.java
deleted file mode 100644
index 33b826e..0000000
--- a/test/src/test/methodselectors/AllTestsMethodSelector.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.methodselectors;
-
-import java.util.List;
-
-import org.testng.IMethodSelector;
-import org.testng.IMethodSelectorContext;
-import org.testng.ITestNGMethod;
-
-public class AllTestsMethodSelector implements IMethodSelector {
-
-  public boolean includeMethod(IMethodSelectorContext context,
-      ITestNGMethod method, boolean isTestMethod) 
-  {
-    context.setStopped(true);
-    return true;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[MyMethodSelector] " + s);
-  }
-
-  public void setTestMethods(List<ITestNGMethod> testMethods) {
-    // TODO Auto-generated method stub
-    
-  }
-
-}
diff --git a/test/src/test/methodselectors/BeanShellTest.java b/test/src/test/methodselectors/BeanShellTest.java
deleted file mode 100644
index d48584a..0000000
--- a/test/src/test/methodselectors/BeanShellTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.methodselectors;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class BeanShellTest extends BaseTest {
-  
-  @Test
-  public void onlyGroup1() {
-    addClass("test.methodselectors.SampleTest");
-    setBeanShellExpression("groups.\n     containsKey   \t    (\"test1\")");
-    run();
-    String[] passed = {
-        "test1",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[MethodSelectorTest] " + s);
-  }
-}
diff --git a/test/src/test/methodselectors/MethodSelectorTest.java b/test/src/test/methodselectors/MethodSelectorTest.java
deleted file mode 100644
index d2df469..0000000
--- a/test/src/test/methodselectors/MethodSelectorTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package test.methodselectors;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class MethodSelectorTest extends BaseTest {
-  
-  @Test
-  public void negativePriorityAllGroups() {
-    addClass("test.methodselectors.SampleTest");
-    addMethodSelector("test.methodselectors.AllTestsMethodSelector", -1);
-    run();
-    String[] passed = {
-        "test1", "test2", "test3",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void negativePriorityGroup2() {
-    addClass("test.methodselectors.SampleTest");
-    addMethodSelector("test.methodselectors.Test2MethodSelector", -1);
-    run();
-    String[] passed = {
-        "test2",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void lessThanPriorityTest1Test() {
-    addClass("test.methodselectors.SampleTest");
-    addIncludedGroup("test1");
-    addMethodSelector("test.methodselectors.Test2MethodSelector", 5);
-    run();
-    String[] passed = {
-        "test1", "test2",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void greaterThanPriorityTest1Test2() {
-    addClass("test.methodselectors.SampleTest");
-    addIncludedGroup("test1");
-    addMethodSelector("test.methodselectors.Test2MethodSelector", 15);
-    run();
-    String[] passed = {
-        "test2", 
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }    
-
-  @Test
-  public void lessThanPriorityAllTests() {
-    addClass("test.methodselectors.SampleTest");
-    addIncludedGroup("test1");
-    addMethodSelector("test.methodselectors.AllTestsMethodSelector", 5);
-    run();
-    String[] passed = {
-        "test1", "test2", "test3"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }  
-
-  public static void ppp(String s) {
-    System.out.println("[MethodSelectorTest] " + s);
-  }
-}
diff --git a/test/src/test/methodselectors/NoTest.java b/test/src/test/methodselectors/NoTest.java
deleted file mode 100644
index 55e1a89..0000000
--- a/test/src/test/methodselectors/NoTest.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package test.methodselectors;
-
-public @interface NoTest {
-}
diff --git a/test/src/test/methodselectors/NoTestSelector.java b/test/src/test/methodselectors/NoTestSelector.java
deleted file mode 100644
index b836f22..0000000
--- a/test/src/test/methodselectors/NoTestSelector.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.methodselectors;
-
-import java.util.List;
-
-import org.testng.IMethodSelector;
-import org.testng.IMethodSelectorContext;
-import org.testng.ITestNGMethod;
-
-public class NoTestSelector implements IMethodSelector {
-
-  public boolean includeMethod(IMethodSelectorContext context,
-      ITestNGMethod method, boolean isTestMethod) 
-  {
-    ppp("NOTEST RETURNING FALSE FOR " + method);
-    return false;
-  }
-
-  public void setTestMethods(List<ITestNGMethod> testMethods) {
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[NoTestSelector] " + s);
-  }
-}
diff --git a/test/src/test/methodselectors/PrioritySampleTest.java b/test/src/test/methodselectors/PrioritySampleTest.java
deleted file mode 100644
index 2372f24..0000000
--- a/test/src/test/methodselectors/PrioritySampleTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.methodselectors;
-
-import org.testng.annotations.Test;
-
-public class PrioritySampleTest {
-  
-  @Test
-  public void alwaysRun() {
-    ppp("ALWAYS");
-  }
-  
-  @Test
-  @NoTest
-  public void neverRun() {
-    ppp("NEVER");
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[PrioritySampleTest] " + s);
-  }
-}
diff --git a/test/src/test/methodselectors/PriorityTest.java b/test/src/test/methodselectors/PriorityTest.java
deleted file mode 100644
index 616d00c..0000000
--- a/test/src/test/methodselectors/PriorityTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package test.methodselectors;
-
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-public class PriorityTest {
-
-  private void runTest(int priority, String[] passedTests) {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { PrioritySampleTest.class });
-    tng.addMethodSelector("test.methodselectors.NoTestSelector", priority);
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    List<ITestResult> passed = tla.getPassedTests();
-    Assert.assertEquals(passedTests.length, passed.size());
-    if (passedTests.length == 1) {
-      String passed0 = passed.get(0).getName();
-      Assert.assertEquals(passed0, passedTests[0]);
-    }
-    if (passedTests.length == 2) {
-      String passed0 = passed.get(0).getName();
-      String passed1 = passed.get(1).getName();
-      Assert.assertTrue(passed0.equals(passedTests[0])
-        || passed0.equals(passedTests[1]));
-      Assert.assertTrue(passed1.equals(passedTests[0])
-          || passed1.equals(passedTests[1]));
-      
-    }
-  }
-  
-//  @Test
-  public void negativePriority() {
-    runTest(-5, new String[] {});
-  }
-  
-  @Test
-  public void lessThanTenPriority() {
-    runTest(5, new String[] { "alwaysRun" });
-  }
-  
-//  @Test
-  public void greaterThanTenPriority() {
-    runTest(15, new String[] { "alwaysRun", "neverRun" });
-  }
-
-
-}
diff --git a/test/src/test/methodselectors/SampleTest.java b/test/src/test/methodselectors/SampleTest.java
deleted file mode 100644
index 9c9323c..0000000
--- a/test/src/test/methodselectors/SampleTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.methodselectors;
-
-import org.testng.annotations.Test;
-
-public class SampleTest {
-
-  @Test(groups = { "test1" })
-  public void test1() {
-    ppp("TEST1");
-    
-  }
-  
-  @Test(groups = { "test2" })
-  public void test2() {
-    ppp("TEST2");    
-  }
-  
-  @Test(groups = { "test3" })
-  public void test3() {
-    ppp("TEST3");    
-  }
-  
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[SampleTest] " + s);
-    }
-  }
-}
diff --git a/test/src/test/methodselectors/Test2MethodSelector.java b/test/src/test/methodselectors/Test2MethodSelector.java
deleted file mode 100644
index ccd9bed..0000000
--- a/test/src/test/methodselectors/Test2MethodSelector.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.methodselectors;
-
-import java.util.List;
-
-import org.testng.IMethodSelector;
-import org.testng.IMethodSelectorContext;
-import org.testng.ITestNGMethod;
-
-public class Test2MethodSelector implements IMethodSelector {
-
-  public boolean includeMethod(IMethodSelectorContext context,
-      ITestNGMethod method, boolean isTestMethod) 
-  {
-    for (String group : method.getGroups()) {
-      if (group.equals("test2")) {
-        context.setStopped(true);
-        return true;
-      }
-    }
-    
-    return false;
-  }
-
-  public void setTestMethods(List<ITestNGMethod> testMethods) {
-    // TODO Auto-generated method stub
-    
-  }
-
-}
diff --git a/test/src/test/morten/SampleTest.java b/test/src/test/morten/SampleTest.java
deleted file mode 100644
index d915120..0000000
--- a/test/src/test/morten/SampleTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.morten;
-
-import java.util.HashMap;
-
-import org.testng.annotations.*;
-
-public class SampleTest {
-    private int capacity = 10;
-    private float loadFactor = 0.3f;
-
-    public class SampleTestTestFactory {
-      public SampleTestTestFactory() {} // CTR necessary ?
-      @Factory public Object[] createInstances() {
-      return new SampleTest[] {
-        new SampleTest(1, 0.1f),
-        new SampleTest(10, 0.5f),
-      };
-      }
-    };
-    
-    public SampleTest() {
-      
-    }
-
-    public SampleTest(int capacity, float loadFactor)
-    {
-      System.out.println("CREATING TEST WITH " + capacity);
-     this.capacity=capacity;
-     this.loadFactor=loadFactor;
-    }
-
-    @Test public void testPut()
-    {
-      HashMap hashTable = new HashMap(capacity, loadFactor);
-      // ...
-    }
-}
diff --git a/test/src/test/morten/SampleTestFactory.java b/test/src/test/morten/SampleTestFactory.java
deleted file mode 100644
index 203d5ec..0000000
--- a/test/src/test/morten/SampleTestFactory.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.morten;
-
-import org.testng.annotations.Factory;
-
-public class SampleTestFactory {
-  public SampleTestFactory() {} // CTR necessary ?
-  @Factory public Object[] createInstances() {
-  return new SampleTest[] {
-    new SampleTest(1, 0.1f),
-    new SampleTest(10, 0.5f),
-  };
-  }
-};
diff --git a/test/src/test/multiple/Test1.java b/test/src/test/multiple/Test1.java
deleted file mode 100644
index 2c1278b..0000000
--- a/test/src/test/multiple/Test1.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.multiple;
-
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.Test;
-
-public class Test1 {
-  private static int m_count = 0;
-
-  @Test
-  public void f1() {
-//    ppp("INVOKING f1 " + m_count);
-    assertTrue(m_count < 1, "FAILING");
-    m_count++;
-  }
-  
-  @AfterTest
-  public void cleanUp() {
-    m_count = 0;
-  }
-
-  
-  private static void ppp(String s) {
-    System.out.println("[Test1] " + s);
-  }
-  
-}
diff --git a/test/src/test/multiple/TestMultiple.java b/test/src/test/multiple/TestMultiple.java
deleted file mode 100644
index c50ce7c..0000000
--- a/test/src/test/multiple/TestMultiple.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.multiple;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class TestMultiple extends BaseTest {
-
-  private static final String CLASS_NAME = "test.multiple.ThisFactory";
-
-  @Test(groups = { "current" })
-  public void multiple() {
-    addClass(CLASS_NAME);
-    run();
-    String[] passed = {
-      "f1", 
-    };
-    String[] failed = {
-      "f1","f1","f1","f1","f1", "f1","f1","f1","f1",
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-}
diff --git a/test/src/test/multiple/ThisFactory.java b/test/src/test/multiple/ThisFactory.java
deleted file mode 100644
index 5b9c247..0000000
--- a/test/src/test/multiple/ThisFactory.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.multiple;
-
-import org.testng.annotations.Factory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class ThisFactory {
-  
-  @Factory
-  public Object[] create() {
-    List result = new ArrayList();
-    for (int i = 0; i < 10; i++) {
-      result.add(new Test1());
-    }
-    
-    return result.toArray();
-  }
-
-}
diff --git a/test/src/test/nested/GarfTest.java b/test/src/test/nested/GarfTest.java
deleted file mode 100644
index 17ea7ed..0000000
--- a/test/src/test/nested/GarfTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.nested;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import test.nested.foo.AccountTypeEnum;
-
- at Test(groups = { "unittest" }, enabled = true )
-public class GarfTest {
-
-  @Test()
-  public void testGarf() {
-    AccountTypeEnum foo = AccountTypeEnum.ClearingMember;
-    Assert.assertEquals(foo,AccountTypeEnum.ClearingMember);
-  }
-
-}
diff --git a/test/src/test/nested/foo/AccountTypeEnum.java b/test/src/test/nested/foo/AccountTypeEnum.java
deleted file mode 100644
index 783f3f3..0000000
--- a/test/src/test/nested/foo/AccountTypeEnum.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package test.nested.foo;
-
-public class AccountTypeEnum {
-
-  public static final AccountTypeEnum ClearingMember = null;
-
-}
diff --git a/test/src/test/objectfactory/BadMethodFactoryFactory.java b/test/src/test/objectfactory/BadMethodFactoryFactory.java
deleted file mode 100644
index ec6e415..0000000
--- a/test/src/test/objectfactory/BadMethodFactoryFactory.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.objectfactory;
-
-import org.testng.annotations.ObjectFactory;
-import org.testng.IObjectFactory;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 5:03:19 PM
- */
-public class BadMethodFactoryFactory
-{
-  @ObjectFactory
-  public Object create() {
-    return new LoggingObjectFactory();
-  }
-}
diff --git a/test/src/test/objectfactory/CombinedTestAndObjectFactorySample.java b/test/src/test/objectfactory/CombinedTestAndObjectFactorySample.java
deleted file mode 100644
index 84a97be..0000000
--- a/test/src/test/objectfactory/CombinedTestAndObjectFactorySample.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package test.objectfactory;
-
-import java.lang.reflect.Constructor;
-
-import org.testng.Assert;
-import org.testng.IObjectFactory;
-import org.testng.annotations.ObjectFactory;
-import org.testng.annotations.Test;
-
- at SuppressWarnings("serial")
-public class CombinedTestAndObjectFactorySample implements IObjectFactory{
-  private boolean configured = false;
-  
-  @ObjectFactory public IObjectFactory create() {
-    return new CombinedTestAndObjectFactorySample();
-  }
-  
-  @Test public void isConfigured() {
-    Assert.assertTrue(configured, "Should have been configured by object factory");
-  }
-
-  @SuppressWarnings("unchecked")
-  public Object newInstance(Constructor constructor, Object... params)  {
-    Object o;
-    try {
-      o = constructor.newInstance(params);
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-    if (CombinedTestAndObjectFactorySample.class.equals(o.getClass())) {
-      CombinedTestAndObjectFactorySample s = (CombinedTestAndObjectFactorySample) o;
-      s.configured = true;
-    }
-    return o;
-  }
-}
diff --git a/test/src/test/objectfactory/CombinedTestAndObjectFactoryTest.java b/test/src/test/objectfactory/CombinedTestAndObjectFactoryTest.java
deleted file mode 100644
index 1ba35b0..0000000
--- a/test/src/test/objectfactory/CombinedTestAndObjectFactoryTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.objectfactory;
-
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class CombinedTestAndObjectFactoryTest extends BaseTest {
-  @Test
-  void combinedTestAndObjectFactory() {
-    addClass(CombinedTestAndObjectFactorySample.class.getName());
-    run();
-    verifyTests("Should have passed", new String[]{"isConfigured"}, getPassedTests());
-    verifyTests("Failures", new String[0], getFailedTests());
-    verifyTests("Skipped", new String[0], getSkippedTests());
-  }
-  
-  public static void main(String[] args) {
-    TestNG tng = new TestNG();
-    tng.setTestClasses(new Class[] {CombinedTestAndObjectFactorySample.class});
-    tng.setVerbose(10);
-    tng.run();
-  }
-}
diff --git a/test/src/test/objectfactory/ContextAwareFactoryFactory.java b/test/src/test/objectfactory/ContextAwareFactoryFactory.java
deleted file mode 100644
index add766d..0000000
--- a/test/src/test/objectfactory/ContextAwareFactoryFactory.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.objectfactory;
-
-import org.testng.annotations.ObjectFactory;
-import org.testng.IObjectFactory;
-import org.testng.ITestContext;
-import org.testng.internal.ObjectFactoryImpl;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 8, 2007
- *         Time: 10:05:55 PM
- */
-public class ContextAwareFactoryFactory
-{
-  @ObjectFactory
-  public IObjectFactory create(ITestContext context) {
-    assert context != null;
-    return new ObjectFactoryImpl();
-  }
-}
diff --git a/test/src/test/objectfactory/CustomFactoryTest.java b/test/src/test/objectfactory/CustomFactoryTest.java
deleted file mode 100644
index 58f463a..0000000
--- a/test/src/test/objectfactory/CustomFactoryTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package test.objectfactory;
-
-import org.testng.annotations.Test;
-import org.testng.annotations.AfterMethod;
-import org.testng.TestNG;
-import org.testng.TestNGException;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlClass;
-import test.TestHelper;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 3:52:19 PM
- */
-public class CustomFactoryTest
-{
-  @Test
-  public void setFactoryOnTestNG() {
-    XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory");
-    //suite.setObjectFactory(new LoggingObjectFactory());
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.setObjectFactory(LoggingObjectFactory.class);
-    tng.run();
-    assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " + LoggingObjectFactory.invoked + " times";
-  }
-  
-  @AfterMethod
-  public void resetCount() {
-    LoggingObjectFactory.invoked = 0;
-  }
-  
-  @Test
-  public void setFactoryOnSuite() {
-    XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory");
-    suite.setObjectFactory(new LoggingObjectFactory());
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-    assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " + LoggingObjectFactory.invoked + " times";
-  }
-  
-  @Test 
-  public void setFactoryByAnnotation() {
-    XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory");
-    suite.getTests().get(0).getXmlClasses().add(new XmlClass("test.objectfactory.MyFactoryFactory"));
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-    assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " + LoggingObjectFactory.invoked + " times";    
-  }
-  
-  @Test
-  public void factoryReceivesContext() {
-    XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory");
-    suite.getTests().get(0).getXmlClasses().add(new XmlClass("test.objectfactory.ContextAwareFactoryFactory"));
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-  }
-  
-  @Test(expectedExceptions = TestNGException.class)
-  public void setInvalidMethodFactoryByAnnotation() {
-    XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory");
-    suite.getTests().get(0).getXmlClasses().add(new XmlClass("test.objectfactory.BadMethodFactoryFactory"));
-    TestNG tng = TestHelper.createTestNG(suite);
-    tng.run();
-  }
-}
diff --git a/test/src/test/objectfactory/LoggingObjectFactory.java b/test/src/test/objectfactory/LoggingObjectFactory.java
deleted file mode 100644
index ec39830..0000000
--- a/test/src/test/objectfactory/LoggingObjectFactory.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.objectfactory;
-
-import java.lang.reflect.Constructor;
-
-import org.testng.internal.ObjectFactoryImpl;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 3:53:28 PM
- */
-public class LoggingObjectFactory extends ObjectFactoryImpl
-{
-  public static int invoked;
-  
-  public Object newInstance(Constructor constructor, Object... params)
-  {
-    invoked++;
-    return super.newInstance(constructor, params);
-  }
-}
diff --git a/test/src/test/objectfactory/MyFactoryFactory.java b/test/src/test/objectfactory/MyFactoryFactory.java
deleted file mode 100644
index 40f7b94..0000000
--- a/test/src/test/objectfactory/MyFactoryFactory.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.objectfactory;
-
-import org.testng.IObjectFactory;
-import org.testng.annotations.ObjectFactory;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 5:03:19 PM
- */
-public class MyFactoryFactory
-{
-  @ObjectFactory
-  public IObjectFactory create() {
-    return new LoggingObjectFactory();
-  }
-}
diff --git a/test/src/test/objectfactory/Simple.java b/test/src/test/objectfactory/Simple.java
deleted file mode 100644
index f6f756f..0000000
--- a/test/src/test/objectfactory/Simple.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.objectfactory;
-
-import org.testng.annotations.Test;
-
-/**
- * @author Hani Suleiman
- *         Date: Mar 6, 2007
- *         Time: 3:56:57 PM
- */
-public class Simple
-{
-  @Test
-  public void dummy() {
-    
-  }
-}
diff --git a/test/src/test/parameters/BeforeSampleTest.java b/test/src/test/parameters/BeforeSampleTest.java
deleted file mode 100644
index 6d7dfdf..0000000
--- a/test/src/test/parameters/BeforeSampleTest.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.parameters;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-import junit.framework.Assert;
-
-public class BeforeSampleTest {
-   @BeforeMethod
-   @Parameters("parameter")
-   public static void beforeMethod(String parameter) {
-     Assert.assertEquals("parameter value", parameter);
-   }
-
-   @DataProvider(name = "dataProvider")
-   public static Object[][] dataProvider() {
-     return new Object[][]{{"abc", "def"}};
-   }
-
-   @Test(dataProvider = "dataProvider")
-   public static void testExample(String a, String b) {
-     Assert.assertEquals("abc", a);
-     Assert.assertEquals("def", b);
-   }
-}
\ No newline at end of file
diff --git a/test/src/test/parameters/ParameterSample.java b/test/src/test/parameters/ParameterSample.java
deleted file mode 100644
index 868bb8e..0000000
--- a/test/src/test/parameters/ParameterSample.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.parameters;
-
-import java.io.ByteArrayInputStream;
-
-import org.testng.TestNG;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Optional;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-import org.testng.xml.Parser;
-
-/**
- * This class
- *
- * @author Cedric Beust, Jul 22, 2004
- * 
- */
-
-public class ParameterSample {
-  
-  @Parameters({ "first-name" })
-  @BeforeMethod
-  public void beforeTest(String firstName) {
-//    System.out.println("[ParameterSample] Invoked beforeTestMethod with: " + firstName);
-    assert "Cedric".equals(firstName)
-     : "Expected Cedric, got " + firstName;
-  }
-    
-  
-  @Parameters({ "first-name" })
-  @Test(groups = { "singleString"})
-  public void testSingleString(String firstName) {
-//    System.out.println("[ParameterSample] Invoked testString " + firstName);
-    assert "Cedric".equals(firstName);
-  }
-  
-  @Parameters({"this parameter doesn't exist"})
-  @Test
-  public void testNonExistentParameter(@Optional String foo) {
-    
-  }
-  
-  public static void main(String[] args) throws Exception {
-    TestNG tng = new TestNG();
-    String xml = "<suite name=\"dgf\" verbose=\"10\"><parameter name=\"first-name\" value=\"Cedric\" /><test name=\"dgf\"><classes><class name=\"test.parameters.ParameterSample\"></class></classes></test></suite>";
-    System.out.println(xml);
-    ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes());
-    tng.setXmlSuites(new Parser(is).parseToList());
-    tng.run();
-  }
-  
-}
diff --git a/test/src/test/parameters/ParameterTest.java b/test/src/test/parameters/ParameterTest.java
deleted file mode 100644
index 5a57fe8..0000000
--- a/test/src/test/parameters/ParameterTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package test.parameters;
-
-import org.testng.annotations.*;
-
-import test.BaseTest;
-
-/**
- * This class
- *
- * @author Cedric Beust, Jul 22, 2004
- * 
- */
-public class ParameterTest extends BaseTest {
-  
-  public static void ppp(String s) {
-    System.out.println("[ParameterTest] " + s);
-  }
-  
-  @Test
-  public void stringSingle() {
-    addClass("test.parameters.ParameterSample");
-    setParameter("first-name", "Cedric");
-    run();
-    String[] passed = {
-      "testSingleString",
-      "testNonExistentParameter",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void beforeMethodWithParameters() {
-    addClass("test.parameters.BeforeSampleTest");
-    setParameter("parameter", "parameter value");
-    run();
-    String[] passed = {
-      "testExample",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-}
diff --git a/test/src/test/parameters/SuiteSampleTest.java b/test/src/test/parameters/SuiteSampleTest.java
deleted file mode 100644
index db6f051..0000000
--- a/test/src/test/parameters/SuiteSampleTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.parameters;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Parameters;
-
-public class SuiteSampleTest {
-
-  @Parameters({"param"})
-  @BeforeSuite
-  public void suiteParameter(String s) {
-    ppp("PARAM:" + s);
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[SuiteSampleTest] " + s);
-  }
-}
diff --git a/test/src/test/pholser/Captor.java b/test/src/test/pholser/Captor.java
deleted file mode 100644
index e1d6ba9..0000000
--- a/test/src/test/pholser/Captor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.pholser;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collections;
-
-/**
- * @author <a href="mailto:pholser at thoughtworks.com">Paul Holser</a>
- * @version $Id: Captor.java,v 1.3 2004/08/26 22:25:22 cedric Exp $
- */
-public class Captor {
-  private static Captor instance = null;
-  private List<String> captives;
-
-  public static Captor instance() {
-    if (null == instance) instance = new Captor();
-    return instance;
-  }
-  
-  public static void reset() {
-//    System.out.println("@@PHOLSER RESETTING CAPTOR");
-    instance().captives = new ArrayList<String>();
-  }
-
-  public void capture( String aString ) {
-//    System.out.println("@@PHOLSER CAPTURING " + aString);
-    captives.add( aString );
-  }
-
-  public List<String> captives() {
-    return Collections.unmodifiableList( captives );
-  }
-}
diff --git a/test/src/test/pholser/Demo.java b/test/src/test/pholser/Demo.java
deleted file mode 100644
index 2ae93e2..0000000
--- a/test/src/test/pholser/Demo.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package test.pholser;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * @author <a href="mailto:pholser at thoughtworks.com">Paul Holser</a>
- * @version $Id: Demo.java,v 1.5 2006/06/22 13:45:01 cedric Exp $
- */
-public class Demo {
-  @BeforeClass
-  public void setUpFixture() {
-    Captor.reset();
-    Captor.instance().capture( "Demo.setUpFixture" );
-  }
-
-  @BeforeMethod
-  public void setUp() {
-    Captor.instance().capture( "Demo.setUp" );
-  }
-
-  @AfterMethod
-  public void tearDown() {
-    Captor.instance().capture( "Demo.tearDown" );
-  }
-
-  @AfterClass
-  public void tearDownFixture() {
-    final List<String> expected = Arrays.asList(new String[] { "Demo.setUpFixture", "Demo.setUp", "Demo.tearDown" });
-    final List<String> actual = Captor.instance().captives();
-    verify(expected, actual);
-  }
-
-  @Test
-  public void go() {
-    final List<String> expected = Arrays.asList(new String[] { "Demo.setUpFixture", "Demo.setUp" } );
-    final List<String> actual = Captor.instance().captives();
-    verify(expected, actual);
-  }
-  
-  private void verify(List<String> expected, List<String> actual) {
-    if (! expected.equals(actual)) {
-      throw new AssertionError("\nExpected:" + dumpList(expected) + "\n     Got:" + dumpList(actual));
-    }
-  }
-  
-  private String dumpList(List<String> list) {
-    StringBuffer result = new StringBuffer();
-    for (String l : list) {
-      result.append(" " + l);
-    }
-    
-    return result.toString();
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/pholser/Saboteur.java b/test/src/test/pholser/Saboteur.java
deleted file mode 100644
index 833a59e..0000000
--- a/test/src/test/pholser/Saboteur.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package test.pholser;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * @author <a href="mailto:pholser at thoughtworks.com">Paul Holser</a>
- * @version $Id: Saboteur.java,v 1.4 2006/06/22 13:45:01 cedric Exp $
- */
-public class Saboteur {
-  @BeforeClass
-  public void setUpFixture() {
-    Captor.reset();
-    Captor.instance().capture( "Saboteur.setUpFixture" );
-  }
-
-  @BeforeMethod
-  public void setUp() {
-    Captor.instance().capture( "Saboteur.setUp" );
-  }
-
-  @AfterMethod
-  public void tearDown() {
-    Captor.instance().capture( "Saboteur.tearDown" );
-  }
-
-  @AfterClass
-  public void tearDownFixture() {
-    Captor.instance().capture( "Saboteur.tearDownFixture" );
-  }
-
-  @Test
-  public void go() {
-  }
-}
diff --git a/test/src/test/pkg/PackageTest.java b/test/src/test/pkg/PackageTest.java
deleted file mode 100644
index 959f5c7..0000000
--- a/test/src/test/pkg/PackageTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package test.pkg;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-import test.pkg2.Test2;
-
-import static org.testng.Assert.assertTrue;
-/**
- * Tests that <package> in testng.xml works.
- * 
- * Created on Aug 2, 2005
- * @author cbeust
- */
-public class PackageTest extends BaseTest {
-  public static boolean NON_TEST_CONSTRUCTOR= false;
-
-  @Test
-  public void stringSingle() {
-    addPackage("test.pkg2", new String[0], new String[0]);
-    run();
-    String[] passed = {
-      "method11", "method12",
-      "method31",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void packageWithNonTestClasses() {
-    addPackage("test.pkg2", new String[0], new String[0]);
-    run();
-    assertTrue(!NON_TEST_CONSTRUCTOR, Test2.class.getName() + " should not be considered");
-  }
-  
-  @Test
-  public void packageWithRegExp1() {
-    addPackage("test.pkg2", new String[] { ".*1.*"}, new String[0]);
-    run();
-    String[] passed = {
-      "method11", "method12",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void packageWithRegExp2() {
-    addPackage("test.pkg2", new String[0], new String[] { ".*1.*"});
-    run();
-    String[] passed = {
-      "method31",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void packageWithRegExp3() {
-    addPackage("test.pkg2", new String[] { ".*3.*"}, new String[] { ".*1.*"});
-    run();
-    String[] passed = {
-      "method31",
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void packageWithRegExp4() {
-    addPackage("test.pkg2",  new String[] { ".*1.*"}, new String[] { ".*3.*"});
-    run();
-    String[] passed = {
-      "method11", "method12"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void packageWithRegExp5() {
-    addPackage("test.pkg2",  new String[0], new String[] { "Test.*"});
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-
-}
diff --git a/test/src/test/pkg2/Test1.java b/test/src/test/pkg2/Test1.java
deleted file mode 100644
index 1a9252f..0000000
--- a/test/src/test/pkg2/Test1.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.pkg2;
-
-import org.testng.annotations.Test;
-
-public class Test1 {
-
-  @Test
-  public void method11() {
-    
-  }
-  
-  @Test
-  public void method12() {
-    
-  }
-  
-}
diff --git a/test/src/test/pkg2/Test2.java b/test/src/test/pkg2/Test2.java
deleted file mode 100644
index ec2ddc8..0000000
--- a/test/src/test/pkg2/Test2.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.pkg2;
-
-import test.pkg.PackageTest;
-
-
-public class Test2 {
-  private Test2(float afloat) {
-    PackageTest.NON_TEST_CONSTRUCTOR= true;
-  }
-
-  public void nonTestMethod() {
-  }  
-}
diff --git a/test/src/test/pkg2/Test3.java b/test/src/test/pkg2/Test3.java
deleted file mode 100644
index d6ded0f..0000000
--- a/test/src/test/pkg2/Test3.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.pkg2;
-
-import org.testng.annotations.Test;
-
-public class Test3 {
-
-  @Test
-  public void method31() {
-    
-  }
-  
-  
-}
diff --git a/test/src/test/priority/BaseSample.java b/test/src/test/priority/BaseSample.java
deleted file mode 100644
index 4971306..0000000
--- a/test/src/test/priority/BaseSample.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package test.priority;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
-
-import java.util.List;
-
-
-public class BaseSample {
-  public static List<String> m_methods;
-
-  protected void add(String m) {
-    System.out.println("Running " + m);
-    synchronized(m_methods) {
-      m_methods.add(m);
-    }
-  }
-
-  @BeforeClass
-  public void bc() {
-    m_methods = Lists.newArrayList(); 
-  }
-
-  @Test
-  public void f1() { add("f1"); }
-
-  @Test
-  public void f2() { add("f2"); }
-
-  @Test
-  public void f3() { add("f3"); }
-
-  @Test
-  public void f4() { add("f4"); }
-
-  @Test
-  public void f5() { add("f5"); }
-
-  @Test
-  public void f6() { add("f6"); }
-
-  @Test
-  public void f7() { add("f7"); }
-
-  @Test
-  public void f8() { add("f8"); }
-}
diff --git a/test/src/test/priority/PriorityTest.java b/test/src/test/priority/PriorityTest.java
deleted file mode 100644
index c700c5b..0000000
--- a/test/src/test/priority/PriorityTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test.priority;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-import test.SimpleBaseTest;
-
-public class PriorityTest extends SimpleBaseTest {
-
-//  @Test
-  public void withoutPriority() {
-    TestNG tng = create(WithoutPrioritySampleTest.class);
-    tng.setParallel("methods");
-    tng.run();
-    System.out.println(BaseSample.m_methods);
-    Assert.assertEquals(BaseSample.m_methods,
-        Arrays.asList("f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "first", "second"));
-  }
-
-  @Test
-  public void withPriority() {
-    TestNG tng = create(WithPrioritySampleTest.class);
-    tng.setParallel("methods");
-    tng.run();
-    System.out.println(BaseSample.m_methods);
-    Assert.assertEquals(BaseSample.m_methods.get(0), "first");
-    Assert.assertEquals(BaseSample.m_methods.get(1), "second");
-  }
-}
diff --git a/test/src/test/priority/WithPrioritySampleTest.java b/test/src/test/priority/WithPrioritySampleTest.java
deleted file mode 100644
index 8955ca6..0000000
--- a/test/src/test/priority/WithPrioritySampleTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.priority;
-
-import org.testng.annotations.Test;
-
-
-public class WithPrioritySampleTest extends BaseSample {
-  @Test(priority = -2)
-  public void first() {
-    add("first");
-  }
-
-  @Test(priority = -1)
-  public void second() {
-    add("second");
-  }
-
-}
diff --git a/test/src/test/priority/WithoutPrioritySampleTest.java b/test/src/test/priority/WithoutPrioritySampleTest.java
deleted file mode 100644
index c6dc5bc..0000000
--- a/test/src/test/priority/WithoutPrioritySampleTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.priority;
-
-import org.testng.annotations.Test;
-
-public class WithoutPrioritySampleTest extends BaseSample {
-
-  @Test
-  public void first() {
-    add("first");
-  }
-
-  @Test
-  public void second() {
-    add("second");
-  }
-}
diff --git a/test/src/test/privatemethod/PrivateMethodTest.java b/test/src/test/privatemethod/PrivateMethodTest.java
deleted file mode 100644
index 33e54da..0000000
--- a/test/src/test/privatemethod/PrivateMethodTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.privatemethod;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-
-public class PrivateMethodTest {
-  public PrivateMethodTest(String name, int value) {
-  }
-  
-  private int privateMethod() {
-    return 1;
-  }
-  
-  public static class PrivateMethodInnerTest {
-    @Test
-    public void testPrivateMethod() {
-      PrivateMethodTest pmt = new PrivateMethodTest("aname", 1);
-      int returnValue = pmt.privateMethod();
-      
-      Assert.assertEquals(returnValue, 1);
-    }
-  }
-}
diff --git a/test/src/test/regression/BeforeTestFailingTest.java b/test/src/test/regression/BeforeTestFailingTest.java
deleted file mode 100644
index 69e3f07..0000000
--- a/test/src/test/regression/BeforeTestFailingTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.regression;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class BeforeTestFailingTest extends SimpleBaseTest {
-
-  @Test
-  public void beforeTestFailingShouldCauseSkips() {
-    TestNG tng = create(MyTestngTest2.class);
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(tla.getSkippedTests().size(), 1);
-    Assert.assertEquals(tla.getPassedTests().size(), 0);
-  }
-}
diff --git a/test/src/test/regression/MyTestngTest.java b/test/src/test/regression/MyTestngTest.java
deleted file mode 100644
index 4ba40a8..0000000
--- a/test/src/test/regression/MyTestngTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.regression;
-
-import org.testng.ITestContext;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-
-public class MyTestngTest {
-
-  @BeforeSuite()
-  public void beforeSuite(ITestContext tc) throws Exception {
-  }
-
-  @BeforeTest()
-  public void beforeTest(ITestContext tc) throws Exception {
-      throw new RuntimeException("barfing now");
-  }
-}
diff --git a/test/src/test/regression/MyTestngTest2.java b/test/src/test/regression/MyTestngTest2.java
deleted file mode 100644
index 19c1951..0000000
--- a/test/src/test/regression/MyTestngTest2.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.regression;
-
-import org.testng.ITestContext;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class MyTestngTest2 extends MyTestngTest {
-
-  @BeforeClass()
-  public void beforeClass(ITestContext tc) throws Exception {
-  }
-
-  @BeforeMethod()
-  public void beforeMethod(ITestContext tc) throws Exception {
-      //throw new Exception("fail me");
-  }
-  @Test()
-  public void test(ITestContext tc) {
-  }
-}
diff --git a/test/src/test/regression/groupsordering/A.java b/test/src/test/regression/groupsordering/A.java
deleted file mode 100644
index d5fbf25..0000000
--- a/test/src/test/regression/groupsordering/A.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.regression.groupsordering;
-
-
-import org.testng.annotations.Test;
-
-public class A extends Base {
-
-  @Test(groups= "a")
-  public void testA() throws Exception {
-    s_childAWasRun= true;
-  }
-}
diff --git a/test/src/test/regression/groupsordering/B.java b/test/src/test/regression/groupsordering/B.java
deleted file mode 100644
index 9ecb928..0000000
--- a/test/src/test/regression/groupsordering/B.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.regression.groupsordering;
-
-
-import org.testng.annotations.Test;
-
-public class B extends Base {
-
-  @Test(groups= "a")
-  public void testB() throws Exception {
-    Base.s_childBWasRun= true;
-  }
-}
diff --git a/test/src/test/regression/groupsordering/Base.java b/test/src/test/regression/groupsordering/Base.java
deleted file mode 100644
index 61bf349..0000000
--- a/test/src/test/regression/groupsordering/Base.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.regression.groupsordering;
-
-
-import org.testng.Assert;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.Test;
-
-public abstract class Base {
-  protected static boolean s_childAWasRun;
-  protected static boolean s_childBWasRun;
-
-  @BeforeGroups(value= "a", groups= "a")
-  public void setUp() throws Exception {
-//    System.out.println("class is " + getClass().getName() + " Before group  ");
-    Assert.assertFalse(s_childBWasRun || s_childBWasRun, "Static field was not reset: @AfterGroup method not invoked");
-  }
-
-  @AfterGroups(value= "a", groups= "a")
-  public void tearDown() {
-//    System.out.println("class is " + getClass().getName() + " After group  ");
-    Assert.assertTrue(s_childAWasRun, "Child A was not run");
-    Assert.assertTrue(s_childBWasRun, "Child B was not run");
-    s_childAWasRun= false;
-    s_childBWasRun= false;
-  }
-
-}
diff --git a/test/src/test/regression/groupsordering/testng.xml b/test/src/test/regression/groupsordering/testng.xml
deleted file mode 100644
index 1c84d6b..0000000
--- a/test/src/test/regression/groupsordering/testng.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="Groups ordering regression" verbose="2">
-  <test name="Class Run">
-		<classes>
-			<class name="test.regression.groupsordering.A" />
-			<class name="test.regression.groupsordering.B" />
-		</classes>
-  </test>
-	
-	<test name="Groups Run">
-		<groups>
-			<run>
-				<include name="a" />
-			</run>
-		</groups>
-		<classes>
-			<class name="test.regression.groupsordering.A" />
-			<class name="test.regression.groupsordering.B" />
-		</classes>
-	</test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/reports/A.java b/test/src/test/reports/A.java
deleted file mode 100644
index 0aa9514..0000000
--- a/test/src/test/reports/A.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.reports;
-
-import org.testng.annotations.Test;
-
- at Test(suiteName = "SuiteA-JDK5", testName = "TestA-JDK5")
-public class A {
-  
-  public void f() {}
-
-}
diff --git a/test/src/test/reports/B.java b/test/src/test/reports/B.java
deleted file mode 100644
index 5ef1f91..0000000
--- a/test/src/test/reports/B.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.reports;
-
-import org.testng.annotations.Test;
-
- at Test(suiteName = "SuiteB-JDK5")
-public class B {
-  
-  public void f() {}
-
-}
diff --git a/test/src/test/reports/EmailableReportDriver.java b/test/src/test/reports/EmailableReportDriver.java
deleted file mode 100644
index 5a4394f..0000000
--- a/test/src/test/reports/EmailableReportDriver.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package test.reports;
-
-import org.testng.Assert;
-import org.testng.Reporter;
-import org.testng.annotations.Test;
-
-/**
- * Generates multiple permutations of TestNG output to see how things look in EmailableReporter.
- * 
- * @author Paul Mendelson
- * @since 5.3
- * @version $Revision$
- */
- at Test
-public class EmailableReportDriver {
-  
-  public void doFailureSansLog() {
-    Assert.fail("show failure in report");
-  }    
-  public void doFailureNested() {
-    Assert.fail("show failure in report",new Exception("Real cuase"));
-  }    
-  public void doFailureWithLog() {
-    Reporter.log("Preparing to fail");
-    Assert.fail("show failure in report");
-  }
-  @Test(expectedExceptions={NumberFormatException.class})
-  public void doExpectedExceptionSansLog() {
-    Reporter.log("step 1");
-    Reporter.log("step 2");
-    Integer.parseInt("BAD TEXT");
-  }
-  @Test(expectedExceptions={NumberFormatException.class})
-  public void doExpectedExceptionWithLog() {
-    Integer.parseInt("BAD TEXT");
-  }
-  
-}
diff --git a/test/src/test/reports/ReportTest.java b/test/src/test/reports/ReportTest.java
deleted file mode 100644
index a0301ed..0000000
--- a/test/src/test/reports/ReportTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package test.reports;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.ITestListener;
-import org.testng.ITestResult;
-import org.testng.Reporter;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.TestHelper;
-import test.reports.A;
-import test.reports.B;
-
-public class ReportTest {
-  
-  @Test
-  public void verifyIndex() {
-    String suiteName = "VerifyIndexSuite";
-    File outputDir = TestHelper.createRandomDirectory();
-    XmlSuite suite = TestHelper.createSuite("test.simple.SimpleTest", suiteName);
-
-    File f = new File(outputDir.getAbsolutePath() + File.separatorChar + suiteName
-        + File.separatorChar + "index.html");
-    f.delete();
-    Assert.assertFalse(f.exists());
-    
-    TestNG tng = TestHelper.createTestNG(suite, outputDir.getAbsolutePath());
-    tng.run();
-    Assert.assertTrue(f.exists());
-    
-    f.deleteOnExit();
-  }
-
-  @Test
-  public void directoryShouldBeSuiteName() {
-    String outputDirectory = TestHelper.createRandomDirectory().getAbsolutePath();
-    
-    TestNG testng = new TestNG();
-    testng.setVerbose(0);
-    testng.setOutputDirectory(outputDirectory);
-    
-    XmlSuite xmlSuite = new XmlSuite();
-    String suiteName = "ReportTestSuite1";
-    xmlSuite.setName(suiteName);
-    
-    XmlTest xmlTest = new XmlTest(xmlSuite);
-    xmlTest.setName("Test1");
-    
-    testng.setXmlSuites(Arrays.asList(new XmlSuite[] { xmlSuite }));
-    
-    File indexFile = 
-      new File(outputDirectory + File.separatorChar + suiteName + File.separatorChar + "index.html");
-    indexFile.delete();
-    Assert.assertFalse(indexFile.exists());
-    
-    testng.run();
-    
-    Assert.assertTrue(indexFile.exists(), "Expected to find file:" + indexFile);
-  }
-  
-  @Test
-  public void oneDirectoryPerSuite() {
-    XmlSuite xmlSuiteA = TestHelper.createSuite("test.reports.A", "ReportSuiteA");
-    XmlSuite xmlSuiteB = TestHelper.createSuite("test.reports.B", "ReportSuiteB");
-    TestNG testng = TestHelper.createTestNG();
-    testng.setXmlSuites(Arrays.asList(new XmlSuite[] { xmlSuiteA, xmlSuiteB }));
-    
-    
-    String outputDir = testng.getOutputDirectory();
-    File f1 = new File(outputDir + File.separatorChar + xmlSuiteA.getName()
-        + File.separatorChar + "index.html");
-    
-    File f2 = new File(outputDir + File.separatorChar + xmlSuiteB.getName()
-        + File.separatorChar + "index.html");
-    
-    Assert.assertFalse(f1.exists());
-    Assert.assertFalse(f2.exists());
-    
-    testng.run();
-    
-    Assert.assertTrue(f1.exists());
-    Assert.assertTrue(f2.exists());
-  }
-  
-  @Test
-  public void shouldHonorSuiteName() {
-    TestNG testng = TestHelper.createTestNG();
-    testng.setTestClasses(new Class[] { A.class, B.class });
-    String outputDir = testng.getOutputDirectory();
-    String dirA = outputDir + File.separatorChar + "SuiteA-JDK5";
-    File fileA = new File(dirA);
-    String dirB = outputDir + File.separatorChar + "SuiteB-JDK5";
-    File fileB = new File(dirB);
-    
-    Assert.assertFalse(fileA.exists());
-    Assert.assertFalse(fileB.exists());
-    testng.run();
-    Assert.assertTrue(fileA.exists(), fileA + " wasn't created");
-    Assert.assertTrue(fileB.exists(), fileB + " wasn't created");
-  }
-  
-  static boolean m_success = false;
-
-  @Test
-  public void reportLogShouldBeAvailableEvenWithTimeOut() {
-    m_success = false;
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { ReporterSampleTest.class });
-    
-    ITestListener listener = new TestListenerAdapter() {
-      @Override
-      public void onTestSuccess(ITestResult tr) {
-        super.onTestSuccess(tr);
-        List<String> output = Reporter.getOutput(tr);
-        m_success = output != null && output.size() > 0;
-//        ppp("ON SUCCESS, OUTPUT:" + output + " SUCCESS:" + m_success);
-      }
-    };
-    tng.addListener(listener);
-    tng.run();
-    
-    Assert.assertTrue(m_success);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[ReporterTest] " + s);
-  }    
-}
diff --git a/test/src/test/reports/ReporterSampleTest.java b/test/src/test/reports/ReporterSampleTest.java
deleted file mode 100644
index 338d410..0000000
--- a/test/src/test/reports/ReporterSampleTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.reports;
-
-import org.testng.Reporter;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-/**
- * Regression test:  if a timeOut is provided, getReporter(testResult) returns
- * null.
- * 
- * Created on Sep 21, 2006
- * @author <a href="mailto:cedric at beust.com">Cedric Beust</a>
- */
-public class ReporterSampleTest {
-  
-  @DataProvider(name = "dp")
-  public Object[][] createParameters() {
-    return new Object[][] {
-        new Object[] { "param1"},
-        new Object[] {"param2"}
-    };
-  }
-
-  @Test(dataProvider = "dp", timeOut = 10000)
-  public void report(String p) {
-    Reporter.log("IN THE REPORTER: " + p);
-  }
-  
-}
diff --git a/test/src/test/retryAnalyzer/RetryAnalyzerTest.java b/test/src/test/retryAnalyzer/RetryAnalyzerTest.java
deleted file mode 100644
index 9742f56..0000000
--- a/test/src/test/retryAnalyzer/RetryAnalyzerTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package test.retryAnalyzer;
-
-import org.testng.Assert;
-import org.testng.util.RetryAnalyzerCount;
-import org.testng.ITestResult;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-/**
- * retryAnalyzer parameter unit tests.
- * @author tocman at gmail.com (Jeremie Lenfant-Engelmann)
- *
- */
-public final class RetryAnalyzerTest extends RetryAnalyzerCount {
-
-  private static int r = 1;
-  private static int r2 = 1;
-  private static int r3 = 1;
-  private static int value = 42;
-
-  public RetryAnalyzerTest() {
-    setCount(2);
-  }
-
-  @Test(retryAnalyzer=RetryAnalyzerTest.class)
-  public void testAnnotation() {
-    Assert.assertTrue(true);
-  }
-
-  @Test(retryAnalyzer=RetryAnalyzerTest.class)
-  public void testAnnotationWithOneRetry() {
-    if (r == 1) {
-      r--;
-      Assert.assertTrue(false);
-    }
-    if (r == 0) {
-      Assert.assertTrue(true);
-    }
-  }
-
-  @DataProvider(name="dataProvider")
-  private Object[][] dataProvider() {
-    return new Object[][] { { 1, false }, { 0, true }, { 0, true },
-        { 1, false } };
-  }
-
-  @DataProvider(name="dataProvider2")
-  private Object[][] dataProvider2() {
-    value = 42;
-
-    return new Object[][] { { true }, { true } };
-  }
-
-  @Test(retryAnalyzer=RetryAnalyzerTest.class, dataProvider="dataProvider")
-  public void testAnnotationWithDataProvider(int paf, boolean test) {
-    if (paf == 1 && test == false) {
-      if (r2 >= 1) {
-        r2--;
-        Assert.assertTrue(false);
-      } else if (r2 == 0) {
-        Assert.assertTrue(true);
-      }
-    }
-    else if (paf == 0 || test == true) {
-      Assert.assertTrue(true);
-    }
-  }
-
-  @Test(retryAnalyzer=RetryAnalyzerTest.class, dataProvider="dataProvider2")
-  public void testAnnotationWithDataProviderAndRecreateParameters(boolean dummy) {
-    if (r3 == 1) {
-      this.value = 0;
-      r3--;
-      Assert.assertTrue(false);
-    } else if (r3 == 0) {
-      Assert.assertEquals(this.value, 42);
-    }
-  }
-
-  public boolean retryMethod(ITestResult result) {
-    return true;
-  }
-}
diff --git a/test/src/test/sample/AfterClassCalledAtEnd.java b/test/src/test/sample/AfterClassCalledAtEnd.java
deleted file mode 100644
index b7af90c..0000000
--- a/test/src/test/sample/AfterClassCalledAtEnd.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Check to see that AfterClass is called only at the end and that after methods
- * are called in reverse order of the before methods.
- */
-public class AfterClassCalledAtEnd extends BaseAfterClassCalledAtEnd {
-  boolean m_before1Class = false;
-  boolean m_test1 = false;
-  boolean m_test2 = false;
-  boolean m_test3 = false;
-
-  @BeforeClass(groups = { "before1Class" } )
-  public void before1Class() {
-    m_before1Class = true;
-  }
-
-  @AfterClass(groups = { "someGroup" })
-  public void afterClass() {
-    m_afterClass = true;
-    assert m_test1 && m_test2 && m_test3 :
-      "One of the test methods was not invoked: " + m_test1 + " " + m_test2 + " " + m_test3;
-  }
-
-  @Test(description = "Verify that beforeClass and afterClass are called correctly")
-  public void test1() { 
-    m_test1 = true;
-    assert m_before1Class : "beforeClass configuration must be called before method";
-    assert ! m_afterClass : "afterClass configuration must not be called before test method";
-  }
-  
-  @Test
-  public void test2() {
-    m_test2 = true;
-    assert m_before1Class : "beforeClass configuration must be called before method";
-    assert ! m_afterClass : "afterClass configuration must not be called before test method"; 
-  }
-
-  @Test
-  public void test3() {
-    m_test3 = true;
-    assert m_before1Class : "beforeClass configuration must be called before method";
-    assert ! m_afterClass : "afterClass configuration must not be called before test method"; 
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/sample/AllJUnitTests.java b/test/src/test/sample/AllJUnitTests.java
deleted file mode 100644
index 2d784e4..0000000
--- a/test/src/test/sample/AllJUnitTests.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.sample;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Tests the suite() functionality of TestNG
- *
- * @author Cedric Beust, May 5, 2004
- * 
- */
-public class AllJUnitTests {
-  public static Test suite() {
-    TestSuite suite= new TestSuite(); 
-    suite.addTest(new JUnitSample1(JUnitSample1.EXPECTED1)); 
-    suite.addTest(new JUnitSample2(JUnitSample2.EXPECTED)); 
-    return suite;    
-  }
-}
diff --git a/test/src/test/sample/BaseAfterClassCalledAtEnd.java b/test/src/test/sample/BaseAfterClassCalledAtEnd.java
deleted file mode 100644
index ae841a2..0000000
--- a/test/src/test/sample/BaseAfterClassCalledAtEnd.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.AfterClass;
-
-public class BaseAfterClassCalledAtEnd {
-  protected boolean m_afterClass = false;
-  
-  @AfterClass(dependsOnGroups = { ".*" })
-  public void baseAfterClass() {
-    assert m_afterClass : "This afterClass method should have been called last";
-  }
-}
diff --git a/test/src/test/sample/BaseSample1.java b/test/src/test/sample/BaseSample1.java
deleted file mode 100644
index a916c90..0000000
--- a/test/src/test/sample/BaseSample1.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.*;
-
-
-/**
- * @author Cedric Beust, Apr 30, 2004
- * 
- */
-public class BaseSample1 {
-
-  @Test(groups = { "odd" })
-  public void method1() {
-  }
-
-}
diff --git a/test/src/test/sample/BaseSampleInheritance.java b/test/src/test/sample/BaseSampleInheritance.java
deleted file mode 100644
index e39f847..0000000
--- a/test/src/test/sample/BaseSampleInheritance.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test.sample;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-
-/**
- * @author Cedric Beust, Apr 30, 2004
- * 
- */
-public class BaseSampleInheritance {
-
-  protected List<String> m_configurations = new ArrayList<String>();
-  
-  protected void addConfiguration(String c) {
-    m_configurations.add(c);
-    }
-  
-  protected boolean m_invokedBaseMethod = false;
-  
-  @Test(groups = { "inheritedTestMethod" })
-  public void baseMethod() {
-    m_invokedBaseMethod = true;
-  }  
-
-  protected boolean m_invokedBaseConfiguration = false;
-  
-  @BeforeClass
-  public void baseConfiguration() {
-    m_invokedBaseConfiguration = true;
-  }
-
-  @BeforeClass(groups = { "configuration1" }, 
-                 dependsOnGroups = { "configuration0" })
-  public void configuration1() {
-//    System.out.println("CONFIGURATION 1");
-    addConfiguration("configuration1");
-  }
-
-  @Test(dependsOnGroups = { "inheritedTestMethod" })
-  public void testBooleans() {
-    assert m_invokedBaseMethod : "Didn't invoke test method in base class";
-    assert m_invokedBaseConfiguration : "Didn't invoke configuration method in base class";
-  }
-  
-}
diff --git a/test/src/test/sample/Basic1.java b/test/src/test/sample/Basic1.java
deleted file mode 100644
index fb925e5..0000000
--- a/test/src/test/sample/Basic1.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class Basic1 {
-  static private int m_count = 0;
-  
-  public static void incrementCount() {
-    m_count++;
-  }
-  
-  public static int getCount() {
-    return m_count;
-  }
-  
-  @BeforeMethod
-  public void beforeTestMethod() {
-    incrementCount();
-  }
-  
-  @Test(groups = { "basic1" } )
-  public void basic1() {
-    assert getCount() > 0 : "COUNT WAS NOT INCREMENTED";
-  }
-  
-  static private void ppp(String s) {
-    System.out.println("[Basic1] " + s);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/sample/Basic2.java b/test/src/test/sample/Basic2.java
deleted file mode 100644
index 956769b..0000000
--- a/test/src/test/sample/Basic2.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.Test;
-
-public class Basic2 {
-  private boolean m_basic2WasRun = false;
-  private static int m_afterClass = 0;
-
-  @Test(dependsOnGroups = { "basic1" })
-  public void basic2() {
-    m_basic2WasRun = true;
-    assert Basic1.getCount() > 0 : "COUNT WAS NOT INCREMENTED";
-  }
-  
-  @AfterTest
-  public void cleanUp() {
-    m_basic2WasRun = false;
-    m_afterClass = 0;
-  }
-  
-  private void ppp(String s) {
-    System.out.println("[Basic2 "
-        + Thread.currentThread().getId() + " ] " + hashCode() + " " + s);
-  }
-  
-  @AfterClass
-  public void checkTestAtClassLevelWasRun() {
-    m_afterClass++;
-    assert m_basic2WasRun : "Class annotated with @Test didn't have its methods run.";
-    assert 1 == m_afterClass : "After class should have been called exactly once, not " + m_afterClass;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/sample/ConverterSample3.java b/test/src/test/sample/ConverterSample3.java
deleted file mode 100644
index aacd703..0000000
--- a/test/src/test/sample/ConverterSample3.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package test.sample;
-import java.util.Iterator;
-
-/*
- * Created on 12-Sep-2006 by micheb10
- */
-
-/**
- * Sample file for the Javadoc annotations to Java 5 annotations converter for a non-default package
- * @author micheb10 12-Sep-2006
- * @testng.test
- */
-public class ConverterSample3 {
-	/**
-	 * This comment line should be preserved
-	 * @testng.before-suite alwaysRun = "true"
-	 */
-	public void beforeSuiteAlwaysRun() {
-		// We are just checking appropriate annotations are added so we don't care about body
-	}
-	
-	/**
-	 * @testng.test
-	 */
-	public void plainTest() {
-		// Empty body
-	}
-	
-	/**
-	 * @testng.test
-	 * @testng.expected-exceptions
-	 * value = "java.lang.NullPointerException java.lang.NumberFormatException"
-	 */
-	public void expectedExceptions() {
-		// Empty body
-	}
-	
-	/**
-	 * @testng.test groups = "groupA groupB"
-	 */
-	public void testGroups() {
-		// Empty body
-	}
-	
-	/**
-	 * @testng.after-method
-	 */
-	public void afterMethod() {
-		// Empty body
-	}
-	
-	/**
-	 * This key should be preserved
-	 * @author The author is a standard tag and should not be touched
-	 * @testng.test groups = "groupA" alwaysRun=true
-	 * 		dependsOnMethods = "expectedExceptions" timeOut="3000"
-	 * @version another standard tag should not be changed
-	 * @testng.expected-exceptions
-	 * value = "java.lang.NullPointerException java.lang.NumberFormatException"
-	 * @testng.parameters value="firstParameter secondParameter thirdParameter"
-	 */
-	public void testEverything() {
-		// Lots and lots of stuff
-	}
-	
-	/**
-	 * @testng.data-provider name="test1" 
-	 */
-	public Object[][] dataProvider() {
-		return null;
-	}
-	
-	/**
-	 * @testng.factory
-	 */
-	public Object[] factory() {
-		return null;
-	}
-	
-	/**
-	 * @testng.test
-	 */
-	public class TestInnerClass {
-		public void bareInnerMethod() {
-			// Empty body
-		}
-		
-		/**
-		 * @testng.test
-		 */
-		public void testInnerMethod() {
-			// empty body
-		}
-	}
-}
diff --git a/test/src/test/sample/InvocationCountTest.java b/test/src/test/sample/InvocationCountTest.java
deleted file mode 100644
index 7f1ae9c..0000000
--- a/test/src/test/sample/InvocationCountTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.Test;
-
-
-/**
- * This class is used to test invocationCountTest
- * 
- * @author cbeust
- */
-public class InvocationCountTest {
- 
-  //
-  // Invocation test
-  //
-  private static int m_count = 0;
-  
-  @AfterSuite(groups = {"invocationOnly"})
-  public void afterSuite() {
-    m_count = 0;
-    m_count2 = 0;
-    m_count3 = 0;
-  }
-
-  @Test(groups = { "invocationOnly"}, invocationCount = 10 )
-  public void tenTimesShouldSucceed() {
-    m_count++;
-  }
-  
-  //
-  // Invocation + Success percentage test
-  // This method will work the first 8 times and fail after that, but overall
-  // the test should still pass because successPercentage = 80
-  //
-  private static int m_count2 = 0;
-  
-  @Test(groups = { "successPercentageThatSucceedsOnly" },
-    invocationCount = 10, successPercentage = 80)
-  public void successPercentageShouldSucceed() {
-    if (m_count2 >= 8) {
-      throw new RuntimeException("Called more than eight times : " + m_count2);
-    }
-    m_count2++;
-  }
-   
-  //
-  // Invocation + Success percentage test
-  // This method will work the first 8 times and fail after that.  One of
-  // the failures will fall under the percentage tolerance but the next one
-  // will not.
-  //
-  private static int m_count3 = 0;
-  
-  @Test(groups = { "successPercentageThatFailsOnly" },
-    invocationCount = 10, successPercentage = 90)
-  public void successPercentageShouldFail() {
-    if (m_count3>= 8) {
-      throw new RuntimeException("Called more than eight times : " + m_count3);
-    }
-    m_count3++;
-  }
-  
-  @AfterClass(groups = { "invocationOnly"})
-  public void verify() {
-    assert 10 == m_count : "Method should have been invoked 10 times but was invoked " 
-      + m_count + " times";
-  }
-
-  public static void ppp(String s) {
-    System.out.println("[InvocationCount] " + s);
-  }
-
-}
diff --git a/test/src/test/sample/JUnitSample1.java b/test/src/test/sample/JUnitSample1.java
deleted file mode 100644
index 5700ab6..0000000
--- a/test/src/test/sample/JUnitSample1.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.sample;
-
-import junit.framework.*;
-
-/**
- * This class
- *
- * @author Cedric Beust, May 5, 2004
- * 
- */
-public class JUnitSample1 extends TestCase {
-  private String m_field = null;
-  public static final String EXPECTED2 = "testSample1_2";
-  public static final String EXPECTED1 = "testSample1_1";
-  
-  public JUnitSample1() {
-    super();
-  }
-  
-  public JUnitSample1(String n) {
-    super(n);
-  }
-  
- @Override
-public void setUp() {
-    m_field = "foo";
-  }
-  
-  @Override
-  public void tearDown() {
-    m_field = null;
-  }
-  
-  /**
-   * 
-   *
-   */
-  public void testSample1_1() {
-//    ppp("Sample 1_1");
-  }
-  
-  public void testSample1_2() {
-//    ppp("Sample 1_2");    
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[JUnitSample1] " + s);
-  }
-
-
-
-}
diff --git a/test/src/test/sample/JUnitSample2.java b/test/src/test/sample/JUnitSample2.java
deleted file mode 100644
index 38344aa..0000000
--- a/test/src/test/sample/JUnitSample2.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package test.sample;
-
-import junit.framework.*;
-
-/**
- * This class
- *
- * @author Cedric Beust, May 5, 2004
- * 
- */
-public class JUnitSample2 extends TestCase {
-  public static final String EXPECTED = "testSample2ThatSetUpWasRun";
-  private String m_field = null;
-  
-  public JUnitSample2() {
-    super();
-  }
-  
-  public JUnitSample2(String n) {
-    super(n);
-  }
-  
-  @Override
-  public void setUp() {
-    m_field = "foo";
-  }
-  
-  public void testSample2ThatSetUpWasRun() {
-    assert null != m_field : "setUp() wasn't run";
-  }
-
-}
diff --git a/test/src/test/sample/JUnitSample3.java b/test/src/test/sample/JUnitSample3.java
deleted file mode 100644
index ecd8a38..0000000
--- a/test/src/test/sample/JUnitSample3.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.sample;
-
-import org.testng.Assert;
-
-import junit.framework.TestCase;
-
-/**
- * This class verifies that a new instance is used every time
- * 
- * @author cbeust
- */
-public class JUnitSample3 extends TestCase {
-  private int m_count = 0;
-  
-  public void test1() {
-    Assert.assertEquals( m_count, 0);
-    m_count++;
-  }
-
-  public void test2() {
-    Assert.assertEquals( m_count, 0);
-    m_count++;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[JUnitSample3] " + s);
-  }
-}
diff --git a/test/src/test/sample/PartialGroupTest.java b/test/src/test/sample/PartialGroupTest.java
deleted file mode 100644
index 560d26b..0000000
--- a/test/src/test/sample/PartialGroupTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package test.sample;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * This class tests groups that are partially defined at the class level
- * and then augmented at the method level.
- * 
- * @author cbeust
- */
-
- at Test(groups = { "classGroup" })
-public class PartialGroupTest {
-  public static boolean m_successMethod = false;
-  public static boolean m_successClass = false;
-  
-  @BeforeClass
-  public void init() {
-    m_successMethod = false;
-    m_successClass = false;
-  }
-  
-  @Test(groups = { "methodGroup" })
-  public void testMethodGroup() {
-    m_successMethod = true;
-  }
-  
-  @Test
-  public void testClassGroupShouldFail() {
-    Assert.assertTrue(false);
-  }
-  
-  @Test(groups = { "methodGroup" })
-  public void testMethodGroupShouldFail() {
-    Assert.assertTrue(false);
-  }
-
-  @Test
-  public void testClassGroup() {
-    m_successClass = true;
-  }
-  
-}
diff --git a/test/src/test/sample/PartialGroupVerification.java b/test/src/test/sample/PartialGroupVerification.java
deleted file mode 100644
index 86bc1b0..0000000
--- a/test/src/test/sample/PartialGroupVerification.java
+++ /dev/null
@@ -1,18 +0,0 @@
-
-package test.sample;
-
-import org.testng.annotations.*;
-
-/**
- * This class verifies the PartialGroupTest
- * 
- * @author cbeust
- */
-
-public class PartialGroupVerification {
-  @Test
-  public void verify() {
-    assert PartialGroupTest.m_successMethod && PartialGroupTest.m_successClass
-      : "test1 and test2 should have been invoked both";
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/sample/README.txt b/test/src/test/sample/README.txt
deleted file mode 100644
index ebe94a0..0000000
--- a/test/src/test/sample/README.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains "samples": TestNG tests that are not invoked directly but invoked
-programmatically by the real test classes in the main directory.
diff --git a/test/src/test/sample/Sample1.java b/test/src/test/sample/Sample1.java
deleted file mode 100644
index 31b77d2..0000000
--- a/test/src/test/sample/Sample1.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package test.sample;
-
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.ExpectedExceptions;
-import org.testng.annotations.Test;
-
-/**
- * This class
- *
- * @author Cedric Beust, Apr 26, 2004
- * 
- */
-public class Sample1 extends BaseSample1 {
-	@AfterClass 
-	public static void tearDownClass1() {
-	}
-
-	@AfterClass 
-	public void tearDownClass2() {
-	}
-
-	@BeforeMethod 
-	public void beforeTest() {
-	}
-
-	@AfterMethod 
-	public void afterTest() {
-	}
-
-	@Test(groups = {"even"}) 
-	public void method2() {
-	}
-	
-	@Test(groups = {"odd"}) 
-	public void method3() {
-	}
-
-	@Test(groups = {"odd"}, enabled = false) 
-	public void oddDisableMethod() {
-	}
-
-	@Test(groups = {"broken"}) 
-	public void broken() {
-	}
-	
-	@Test(groups = {"fail"}) 
-	@ExpectedExceptions( {NumberFormatException.class,	ArithmeticException.class}) 
-	public void throwExpectedException1ShouldPass() {
-		throw new NumberFormatException();
-	}
-
-	@Test(groups = {"fail"}) 
-	@ExpectedExceptions( {NumberFormatException.class,	ArithmeticException.class}) 
-	public void throwExpectedException2ShouldPass() {
-		throw new ArithmeticException();
-	}
-
-	@Test(groups = {"fail", "bug"}) 
-	public void throwExceptionShouldFail() {
-		throw new NumberFormatException();
-	}
-
-	@Test(groups = {"assert"}) 
-	public void verifyLastNameShouldFail() {
-	  Assert.assertEquals("Beust", "", "Expected name Beust, found blah");
-	}
-
-	private static void ppp(String s) {
-		System.out.println("[Test1] " + s);
-	}
-
-}
diff --git a/test/src/test/sample/Sample2.java b/test/src/test/sample/Sample2.java
deleted file mode 100644
index c02c969..0000000
--- a/test/src/test/sample/Sample2.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- *
- * @author Cedric Beust, Apr 26, 2004
- * 
- */
-
-public class Sample2 {
-  
-  @Test
-  public void method1() {
-//    System.out.println("@@@@@@@@@@@@@@@@@@@ METHOD1");
-  }
-
-  @Test
-  public void method2() {
-//    System.out.println("@@@@@@@@@@@@@@@@@@@ METHOD2");
-  }
-  
-  @Test
-  public void method3() {
-//    System.out.println("@@@@@@@@@@@@@@@@@@@ METHOD3");
-  }
-
-
-}
diff --git a/test/src/test/sample/Scope.java b/test/src/test/sample/Scope.java
deleted file mode 100644
index 0468747..0000000
--- a/test/src/test/sample/Scope.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.*;
-
-/**
- * This class tests paramete scopes.
- * 
- * @author cbeust
- */
-public class Scope {
-  
-  @Test(groups = { "outer-group" }, parameters = { "parameter" })
-  public void outerDeprecated(String s) {
-    assert "out".equals(s)
-      : "Expected out got " + s;
-  }
-
-  @Test(groups = { "inner-group" }, parameters = { "parameter" })
-  public void innerDeprecated(String s) {
-    assert "in".equals(s)
-      : "Expected in got " + s;
-  }
-}
diff --git a/test/src/test/sample/SetUpWithParameterTest.java b/test/src/test/sample/SetUpWithParameterTest.java
deleted file mode 100644
index 8ab6194..0000000
--- a/test/src/test/sample/SetUpWithParameterTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.sample;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * This class fails in setUp and should result in 1 failure, 1 skip
- * 
- * @author cbeust
- */
-public class SetUpWithParameterTest {
-  
-  @BeforeClass
-  public void setUp(String bogusParameter) {
-  }
-
-  @Test
-  public void test() {
-    
-  }
-}
diff --git a/test/src/test/simple/IncludedExcludedSampleTest.java b/test/src/test/simple/IncludedExcludedSampleTest.java
deleted file mode 100644
index 6c2e7f0..0000000
--- a/test/src/test/simple/IncludedExcludedSampleTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package test.simple;
-
-import org.testng.Reporter;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-public class IncludedExcludedSampleTest {
-  
-  @BeforeSuite
-  public void beforeSuite() {
-    Reporter.log("beforeSuite");
-  }
-
-  @BeforeTest
-  public void beforeTest() {
-    Reporter.log("beforeTest");
-  }
-
-  @BeforeClass
-  public void beforeTestClass() {
-    Reporter.log("beforeTestClass");
-  }
-
-  @BeforeMethod
-  public void beforeTestMethod() {
-    Reporter.log("beforeTestMethod");
-  }
-
-  @Test
-  public void test1() {
-    Reporter.log("Child.test1");
-  }
-
-  @Test(enabled = false)
-  public void test2() {
-    Reporter.log("Child.test2");
-  }
-  
-  @Test(groups = "a")
-  public void test3() {
-    Reporter.log("Child.test3");
-  }
-
-  private void ppp(String string) {
-    System.out.println("[TestNGBug] " + string);
-  }
-}
diff --git a/test/src/test/simple/IncludedExcludedTest.java b/test/src/test/simple/IncludedExcludedTest.java
deleted file mode 100644
index 8c487b4..0000000
--- a/test/src/test/simple/IncludedExcludedTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package test.simple;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.IReporter;
-import org.testng.ISuite;
-import org.testng.ITestNGMethod;
-import org.testng.TestNG;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlSuite;
-
-import testhelper.OutputDirectoryPatch;
-
-public class IncludedExcludedTest {
-
-  private TestNG m_tng;
-  
-  @BeforeMethod
-  public void init() {
-    m_tng = new TestNG();
-    m_tng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    m_tng.setVerbose(0);
-    m_tng.setUseDefaultListeners(false);
-  }
-  
-  @Test(description = "First test method")
-  public void verifyIncludedExcludedCount1() {
-    m_tng.setTestClasses(new Class[] {IncludedExcludedSampleTest.class});
-    m_tng.setGroups("a");
-    m_tng.addListener(
-        new MyReporter(new String[] { "test3" }, new String[] { "test1", "test2"}));
-    m_tng.run();
-  }
-
-  @Test(description = "Second test method")
-  public void verifyIncludedExcludedCount2() {
-    m_tng.setTestClasses(new Class[] {IncludedExcludedSampleTest.class});
-    m_tng.addListener(
-        new MyReporter(
-            new String[] { 
-                "beforeSuite", "beforeTest", "beforeTestClass",
-                "beforeTestMethod", "test1", "beforeTestMethod", "test3" 
-              }, 
-            new String[] { "test2"}));
-    m_tng.run();
-  }
-
-}
-
-class MyReporter implements IReporter {
-
-  private String[] m_included;
-  private String[] m_excluded;
-
-  public MyReporter(String[] included, String[] excluded) {
-    m_included = included;
-    m_excluded = excluded;
-  }
-  
-  public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
-    Assert.assertEquals(suites.size(), 1);
-    ISuite suite = suites.get(0);
-    
-    {
-      Collection<ITestNGMethod> invoked = suite.getInvokedMethods();
-      Assert.assertEquals(invoked.size(), m_included.length);
-      for (String s : m_included) {
-        Assert.assertTrue(containsMethod(invoked, s));
-      }
-    }
-
-    {
-      Collection<ITestNGMethod> excluded = suite.getExcludedMethods();
-      Assert.assertEquals(excluded.size(), m_excluded.length);
-      for (String s : m_excluded) {
-        Assert.assertTrue(containsMethod(excluded, s));
-      }
-    }
-  }
-
-  private boolean containsMethod(Collection<ITestNGMethod> invoked, String string) {
-    for (ITestNGMethod m : invoked) {
-      if (m.getMethodName().equals(string)) return true;
-    }
-    
-    return false;
-  }
-
-}
diff --git a/test/src/test/simple/SimpleTest.java b/test/src/test/simple/SimpleTest.java
deleted file mode 100644
index 391a18c..0000000
--- a/test/src/test/simple/SimpleTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package test.simple;
-
-import org.testng.annotations.Test;
-
-public class SimpleTest {
-
-  @Test
-  public void f() {
-  }
-
-  private void ppp(String string) {
-    System.out.println("[SimpleTest] " + string);
-  }
-  
-}
diff --git a/test/src/test/skipex/ConfigurationSkippedExceptionTest.java b/test/src/test/skipex/ConfigurationSkippedExceptionTest.java
deleted file mode 100644
index 9fcdc6d..0000000
--- a/test/src/test/skipex/ConfigurationSkippedExceptionTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.skipex;
-
-import java.util.Calendar;
-
-import org.testng.SkipException;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class ConfigurationSkippedExceptionTest {
-  @BeforeMethod
-  public void configurationLevelSkipException() {
-    throw new SkipException("some skip message");
-  }
-  
-  @Test
-  public void dummyTest() {
-  }
-}
diff --git a/test/src/test/skipex/SkippedExceptionTest.java b/test/src/test/skipex/SkippedExceptionTest.java
deleted file mode 100644
index a8f38e4..0000000
--- a/test/src/test/skipex/SkippedExceptionTest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package test.skipex;
-
-import java.util.List;
-
-import org.testng.Assert;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class SkippedExceptionTest {  
-  @Test
-  public void skippedExceptionInConfigurationMethods() {
-    TestListenerAdapter listener= new TestListenerAdapter();
-    TestNG test= new TestNG(false);
-    test.addListener(listener);
-    test.setVerbose(0);
-    test.setTestClasses(new Class[] {ConfigurationSkippedExceptionTest.class});
-    test.run();
-    List<ITestResult> confSkips= listener.getConfigurationSkips();
-    List<ITestResult> testSkips= listener.getSkippedTests();
-    Assert.assertEquals(testSkips.size(), 1);
-    Assert.assertEquals(testSkips.get(0).getMethod().getMethodName(), "dummyTest");
-    
-    Assert.assertEquals(confSkips.size(), 1);
-    Assert.assertEquals(confSkips.get(0).getMethod().getMethodName(), "configurationLevelSkipException");
-  }  
-  
-  
-  @Test
-  public void skippedExceptionInTestMethods() {
-    TestListenerAdapter listener= new TestListenerAdapter();
-    TestNG test= new TestNG(false);
-    test.addListener(listener);
-    test.setVerbose(0);
-    test.setTestClasses(new Class[] {TestSkippedExceptionTest.class});
-    test.run();
-    List<ITestResult> skips= listener.getSkippedTests();
-    List<ITestResult> failures= listener.getFailedTests();
-    Assert.assertEquals(skips.size(), 1);
-    Assert.assertEquals(failures.size(), 1);
-    Assert.assertEquals(skips.get(0).getMethod().getMethodName(), "genericSkipException");
-    Assert.assertEquals(failures.get(0).getMethod().getMethodName(), "timedSkipException");
-  }  
-}
diff --git a/test/src/test/skipex/TestSkippedExceptionTest.java b/test/src/test/skipex/TestSkippedExceptionTest.java
deleted file mode 100644
index 932b735..0000000
--- a/test/src/test/skipex/TestSkippedExceptionTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.skipex;
-
-import org.testng.SkipException;
-import org.testng.TimeBombSkipException;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class TestSkippedExceptionTest {
-  @Test
-  public void genericSkipException() {
-    throw new SkipException("genericSkipException is skipped for now");
-  }
-  
-  @Test
-  public void timedSkipException() {
-    throw new TimeBombSkipException("timedSkipException is time bombed", "2007/04/10");
-  }
-}
diff --git a/test/src/test/superclass/Base1.java b/test/src/test/superclass/Base1.java
deleted file mode 100644
index 4898e89..0000000
--- a/test/src/test/superclass/Base1.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-public class Base1 {
-  @BeforeClass
-  public void bc() {
-    ppp("BEFORE_CLASS");
-  }
-
-  @BeforeMethod
-  public void bm() {
-    ppp("BEFORE_METHOD");
-  }
-
-  @Test
-  public void tbase() {
-    ppp("TEST IN BASE");
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[Base] " + s);
-    }
-  }
-}
diff --git a/test/src/test/superclass/Base2.java b/test/src/test/superclass/Base2.java
deleted file mode 100644
index 8bacf6a..0000000
--- a/test/src/test/superclass/Base2.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
- at Test
-public class Base2 {
-  @BeforeClass
-  public void bc() {
-    ppp("BEFORE_CLASS");
-  }
-
-  @BeforeMethod
-  public void bm() {
-    ppp("BEFORE_METHOD");
-  }
-
-  public void tbase() {
-    ppp("TEST IN BASE");
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[Base] " + s);
-    }
-  }
-}
diff --git a/test/src/test/superclass/BaseSampleTest3.java b/test/src/test/superclass/BaseSampleTest3.java
deleted file mode 100644
index 9a5771e..0000000
--- a/test/src/test/superclass/BaseSampleTest3.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.Test;
-
-public class BaseSampleTest3 {
-  @Test
-  public void base() {
-      assert true;
-  }
-
-}
diff --git a/test/src/test/superclass/Child1Test.java b/test/src/test/superclass/Child1Test.java
deleted file mode 100644
index b2b2190..0000000
--- a/test/src/test/superclass/Child1Test.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.Test;
-
- at Test
-public class Child1Test extends Base1 {
-  public void t1() {
-    ppp("T1");
-  }
-  
-  public void t2() {
-    ppp("T2");
-  }
-  
-  public void t3() {
-    ppp("T3");
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[Child] " + s);
-    }
-  }
-}
diff --git a/test/src/test/superclass/Child2Test.java b/test/src/test/superclass/Child2Test.java
deleted file mode 100644
index 25f1aef..0000000
--- a/test/src/test/superclass/Child2Test.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.Test;
-
- at Test
-public class Child2Test extends Base2 {
-  public void t1() {
-    ppp("T1");
-  }
-  
-  public void t2() {
-    ppp("T2");
-  }
-  
-  public void t3() {
-    ppp("T3");
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[Child] " + s);
-    }
-  }
-}
diff --git a/test/src/test/superclass/ChildSampleTest3.java b/test/src/test/superclass/ChildSampleTest3.java
deleted file mode 100644
index 6bfd89a..0000000
--- a/test/src/test/superclass/ChildSampleTest3.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.superclass;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class ChildSampleTest3 extends BaseSampleTest3 {
-  @Test
-  public void pass() {
-    Assert.assertTrue(true);
-  }
-
-  @Test
-  public void fail() {
-    Assert.assertTrue(false);
-  }
-}
diff --git a/test/src/test/superclass/MainTest.java b/test/src/test/superclass/MainTest.java
deleted file mode 100644
index 405b556..0000000
--- a/test/src/test/superclass/MainTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class MainTest extends BaseTest {
-
-  @Test
-  public void baseMethodIsCalledWithMethodTest() {
-    addClass("test.superclass.Child1Test");
-    run();
-    String[] passed = {
-      "tbase", "t1", "t2", "t3"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void baseMethodIsCalledWithClassTest() {
-    addClass("test.superclass.Child2Test");
-    run();
-    String[] passed = {
-      "tbase", "t1", "t2", "t3"
-    };
-    String[] failed = {
-    };
-    verifyTests("Passed", passed, getPassedTests());
-    verifyTests("Failed", failed, getFailedTests());
-  }
-  
-
-}
diff --git a/test/src/test/superclass/Test3.java b/test/src/test/superclass/Test3.java
deleted file mode 100644
index c01fad4..0000000
--- a/test/src/test/superclass/Test3.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.superclass;
-
-import org.testng.annotations.Test;
-
-import test.BaseTest;
-
-public class Test3 extends BaseTest {
-
-  @Test
-  public void shouldExcludeBaseMethods() {
-    addClass("test.superclass.ChildSampleTest3");
-    addExcludedMethod("test.superclass.ChildSampleTest3", "pass");
-    addExcludedMethod("test.superclass.ChildSampleTest3", "base");
-    run();
-    String[] passed = {
-    };
-    String[] failed = {
-        "fail"
-    };
-    verifyTests("Failed", failed, getFailedTests());
-    verifyTests("Passed", passed, getPassedTests());    
-  }
-}
diff --git a/test/src/test/testng106/FailingSuiteFixture.java b/test/src/test/testng106/FailingSuiteFixture.java
deleted file mode 100644
index b346c76..0000000
--- a/test/src/test/testng106/FailingSuiteFixture.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.testng106;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-
-/**
- * TESTNG-106: failing @BeforeSuite doesn't skip all tests 
- */
-public class FailingSuiteFixture {
-  static int s_invocations = 0;
-  
-  @BeforeSuite
-  public void failingBeforeSuite() {
-    double d = 1/0;
-  }
-  
-  @AfterSuite(alwaysRun=true)
-  public void afterSuite() {
-    System.out.println("Invocations:" + s_invocations + " must be 0");
-    Assert.assertEquals(s_invocations, 0, "@BeforeSuite has failed. All tests should be skipped.");
-  }
-}
diff --git a/test/src/test/testng106/Test1.java b/test/src/test/testng106/Test1.java
deleted file mode 100644
index e6fb4f4..0000000
--- a/test/src/test/testng106/Test1.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.testng106;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class Test1 {
-  @Test
-  public void method1() {
-    System.out.println("method1");
-    FailingSuiteFixture.s_invocations++;
-  } 
-}
diff --git a/test/src/test/testng106/Test2.java b/test/src/test/testng106/Test2.java
deleted file mode 100644
index 586f254..0000000
--- a/test/src/test/testng106/Test2.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.testng106;
-
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class Test2 {
-  @Test
-  public void method2() {
-    System.out.println("method2");
-    FailingSuiteFixture.s_invocations++;
-  }
-
-  @Test
-  public void method3() {
-    System.out.println("method3");
-    FailingSuiteFixture.s_invocations++;
-  } 
-}
diff --git a/test/src/test/testng106/testng-106.xml b/test/src/test/testng106/testng-106.xml
deleted file mode 100644
index 25b6bf9..0000000
--- a/test/src/test/testng106/testng-106.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
-<suite name="TESTNG-106" verbose="3">
-    <test name="myTest1">
-        <classes>
-            <class name="test.testng106.FailingSuiteFixture" />
-            <class name="test.testng106.Test1"/>
-        </classes>
-    </test>
-    <test name="myTest2">
-        <classes>
-            <class name="test.testng106.Test1"/>
-        </classes>
-    </test>
-    <test name="myTest3">
-        <classes>
-            <class name="test.testng106.Test2"/>
-        </classes>
-    </test>
-    <test name="myTest-last">
-        <classes>
-            <class name="test.testng106.Test2"/>
-        </classes>
-    </test>
-</suite> 
\ No newline at end of file
diff --git a/test/src/test/testng109/SkippedTestWithExpectedException.java b/test/src/test/testng109/SkippedTestWithExpectedException.java
deleted file mode 100644
index ab530d4..0000000
--- a/test/src/test/testng109/SkippedTestWithExpectedException.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test.testng109;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class SkippedTestWithExpectedException {
-  @BeforeClass
-  public void setup() {
-    throw new RuntimeException("test-exception");
-  }
-
-  @Test
-  public void test1()
-  {
-//   empty
-  }
-
-  @Test(expectedExceptions={OutOfMemoryError.class})
-  public void test2()
-  {
-//  empty
-  } 
-}
diff --git a/test/src/test/testng195/AfterMethodSampleTest.java b/test/src/test/testng195/AfterMethodSampleTest.java
deleted file mode 100644
index c90e0e3..0000000
--- a/test/src/test/testng195/AfterMethodSampleTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.testng195;
-
-import java.lang.reflect.Method;
-
-import org.testng.IResultMap;
-import org.testng.ITestContext;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class AfterMethodSampleTest {
-  static boolean m_success;
-
-  @Test
-  public void pass() {
-  }
-  
-  @BeforeClass
-  public void init() {
-    m_success = false;
-  }
-
-  @AfterMethod
-  public void afterMethod(ITestContext c, Method m) {
-      IResultMap map = c.getPassedTests();
-      m_success = map.size() == 1;
-  }
-}
diff --git a/test/src/test/testng195/AfterMethodTest.java b/test/src/test/testng195/AfterMethodTest.java
deleted file mode 100644
index 4b4648b..0000000
--- a/test/src/test/testng195/AfterMethodTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.testng195;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class AfterMethodTest extends SimpleBaseTest {
-
-  @Test
-  public void testContextShouldBeInitialized() {
-    TestNG tng = create(AfterMethodSampleTest.class);
-    tng.run();
-    Assert.assertTrue(AfterMethodSampleTest.m_success);
-  }
-}
diff --git a/test/src/test/testng249/B.java b/test/src/test/testng249/B.java
deleted file mode 100644
index 782fa16..0000000
--- a/test/src/test/testng249/B.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.testng249;
-
-import org.testng.annotations.Test;
-
-public class B extends Base {
-  @Override
-   @Test
-   public void b() {
-   }
-}
\ No newline at end of file
diff --git a/test/src/test/testng249/Base.java b/test/src/test/testng249/Base.java
deleted file mode 100644
index 09d59aa..0000000
--- a/test/src/test/testng249/Base.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.testng249;
-
-import org.testng.annotations.Test;
-
-public class Base {
-  @Test
-  public void b() {
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/testng249/VerifyTest.java b/test/src/test/testng249/VerifyTest.java
deleted file mode 100644
index 451a7b5..0000000
--- a/test/src/test/testng249/VerifyTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package test.testng249;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlInclude;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.SimpleBaseTest;
-
-import java.util.Arrays;
-
-public class VerifyTest extends SimpleBaseTest {
-
-  @Test
-  public void verify() {
-    XmlSuite suite = new XmlSuite();
-    suite.setName("Suite");
-    
-    XmlTest test = new XmlTest(suite);
-    test.setName("Test");
-    XmlClass c1 = new XmlClass(B.class);
-    c1.setIncludedMethods(Arrays.asList(new XmlInclude[] { new XmlInclude("b")}));
-    XmlClass c2 = new XmlClass(Base.class);
-    c2.setIncludedMethods(Arrays.asList(new XmlInclude[] { new XmlInclude("b")}));
-    test.setXmlClasses(Arrays.asList(new XmlClass[] { c1, c2 }));
-    
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setXmlSuites(Arrays.asList(new XmlSuite[] { suite }));
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), 2);
-  }
-}
diff --git a/test/src/test/testng285/BugBase.java b/test/src/test/testng285/BugBase.java
deleted file mode 100644
index 1d12b1f..0000000
--- a/test/src/test/testng285/BugBase.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.testng285;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.HashSet;
-import java.util.Set;
-
- at Test(sequential = true)
-public class BugBase {
-  static Set<Long> m_threadIds;
-  
-  @BeforeClass
-  public void setup() {
-    m_threadIds = new HashSet<Long>();
-  }
-  
-  void log(long threadId) {
-    m_threadIds.add(threadId);
-  }
-
-  public void fbase() {
-    log(Thread.currentThread().getId());
-  }
-
-}
diff --git a/test/src/test/testng285/Derived.java b/test/src/test/testng285/Derived.java
deleted file mode 100644
index f7cb7f0..0000000
--- a/test/src/test/testng285/Derived.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.testng285;
-
-import org.testng.annotations.Test;
-
-public class Derived extends BugBase {
-  
-  @Test
-  public void f1() {
-    log(Thread.currentThread().getId());
-  }
-
-  @Test
-  public void f2() {
-    log(Thread.currentThread().getId());
-  }
-}
diff --git a/test/src/test/testng285/TestNG285Test.java b/test/src/test/testng285/TestNG285Test.java
deleted file mode 100644
index 191f0ce..0000000
--- a/test/src/test/testng285/TestNG285Test.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.testng285;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlSuite;
-
-import test.BaseTest;
-
-public class TestNG285Test extends BaseTest {
-
-  @Test
-  public void verifyBug() {
-    addClass("test.testng285.Derived");
-    setParallel(XmlSuite.PARALLEL_METHODS);
-    setThreadCount(5);
-    
-    run();
-
-    Assert.assertEquals(BugBase.m_threadIds.size(), 1);
-  }
-}
diff --git a/test/src/test/testng317/ClassA.java b/test/src/test/testng317/ClassA.java
deleted file mode 100755
index 2494bf4..0000000
--- a/test/src/test/testng317/ClassA.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package test.testng317;
-
-import org.testng.annotations.Test;
-
-
-public class ClassA {
-  @Test
-  public void sameNameA(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="sameNameA")
-  public void uniqueNameB(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="uniqueNameB")
-  public void uniqueNameC(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="uniqueNameC")
-  public void uniqueNameD(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="uniqueNameD")
-  public void sameNameE(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="sameNameE")
-  public void sameNameF(){
-    printMethod();
-  }  
-  @Test (dependsOnMethods="sameNameF")
-  public void sameNameG(){
-    printMethod();
-  }  
-  @Test (dependsOnMethods="sameNameG")
-  public void sameNameH(){
-    printMethod();
-  }  
-  
-  public void nullTest(){
-    printMethod();
-  }
-  protected void printMethod() {
-    StackTraceElement[] sTrace = new Exception().getStackTrace();
-    String className = sTrace[0].getClassName();
-    String methodName = sTrace[1].getMethodName();
-    
-    System.out.printf("*********** executing --- %s %s\n", className, methodName);
-    
-    VerifyTest.m_methods.add(className + "." + methodName);
-  }
-}
diff --git a/test/src/test/testng317/ClassB.java b/test/src/test/testng317/ClassB.java
deleted file mode 100755
index 937e0b8..0000000
--- a/test/src/test/testng317/ClassB.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package test.testng317;
-
-import org.testng.annotations.Test;
-
-public class ClassB {
-  @Test
-  public void sameNameAA(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="sameNameAA")
-  public void uniqueNameBB(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="uniqueNameBB")
-  public void uniqueNameCC(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="uniqueNameCC")
-  public void uniqueNameDD(){
-    printMethod();
-  }
-  @Test (dependsOnMethods="uniqueNameDD")
-  public void sameNameE(){
-    printMethod();
-  }
-  
-  public void nullTest(){
-    printMethod();
-  }
-  protected void printMethod() {
-    StackTraceElement[] sTrace = new Exception().getStackTrace();
-    String className = sTrace[0].getClassName();
-    String methodName = sTrace[1].getMethodName();
-    
-    System.out.printf("*********** executing --- %s %s\n", className, methodName);
-    
-    VerifyTest.m_methods.add(className + "." + methodName);
-  }
-}
diff --git a/test/src/test/testng317/VerifyTest.java b/test/src/test/testng317/VerifyTest.java
deleted file mode 100755
index 6d297ce..0000000
--- a/test/src/test/testng317/VerifyTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.testng317;
-
-import org.testng.TestNG;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class VerifyTest extends SimpleBaseTest {
-  static List<String> m_methods = new ArrayList<String>();
-  
-  @BeforeMethod
-  public void before() {
-    m_methods = new ArrayList<String>();
-  }
-
-  @Test
-  public void verify() {
-    TestNG tng = create();
-    tng.setTestClasses(new Class[] { test.testng317.ClassB.class, test.testng317.ClassA.class });
-    tng.run();
-    
-    System.out.println("Methods:" + m_methods.size());
-  }
-}
diff --git a/test/src/test/testng37/NullParameterTest.java b/test/src/test/testng37/NullParameterTest.java
deleted file mode 100644
index 954d1f5..0000000
--- a/test/src/test/testng37/NullParameterTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.testng37;
-
-import org.testng.Assert;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class NullParameterTest {
-  @Test
-  @Parameters({"notnull", "nullvalue"})
-  public void nullParameter(String notNull, int mustBeNull) {
-    Assert.assertNotNull(notNull, "not null parameter expected");
-    Assert.assertNull(mustBeNull, "null parameter expected");
-  }
-}
diff --git a/test/src/test/testng37/testng-37.xml b/test/src/test/testng37/testng-37.xml
deleted file mode 100644
index 6c7d09d..0000000
--- a/test/src/test/testng37/testng-37.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="TESTNG-37 Suite" verbose="2">
-  <test name="TESTNG-57">
-      <parameter name="notnull" value="null"/>
-      <parameter name="nullvalue" value="NULL"/>
-      <packages>
-          <package name="test.testng37" />
-      </packages>
-  </test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/testng56/ParallelTest.java b/test/src/test/testng56/ParallelTest.java
deleted file mode 100644
index 5c92d08..0000000
--- a/test/src/test/testng56/ParallelTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package test.testng56;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class ParallelTest {
-  @BeforeClass
-  public void setup() {
-    System.out.println(Thread.currentThread().getId() + ":setup");
-  }
-
-  @AfterClass
-  public void teardown() {
-    System.out.println(Thread.currentThread().getId() + ":teardown");
-  }
-
-  @Test
-  public void test1() {
-    System.out.println(Thread.currentThread().getId() + ":test1");
-  }
-
-  @Test(dependsOnMethods = {"test1"})
-  public void test2() {
-    System.out.println(Thread.currentThread().getId() + ":test2");
-  }
-
-  @Test
-  public void test3() {
-    System.out.println(Thread.currentThread().getId() + ":test3");
-  }
-
-  @Test(dependsOnMethods = {"test3"})
-  public void test4() {
-    System.out.println(Thread.currentThread().getId() + ":test4");
-  }
-
-  @Test
-  public void test5() {
-    System.out.println(Thread.currentThread().getId() + ":test5");
-  } 
-}
diff --git a/test/src/test/testng56/testng-56.xml b/test/src/test/testng56/testng-56.xml
deleted file mode 100644
index 94cf92c..0000000
--- a/test/src/test/testng56/testng-56.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="TESTNG-56 Suite" verbose="3" parallel="true" thread-count="3">
-  <test name="TESTNG-56">
-      <packages>
-          <package name="test.testng56" />
-      </packages>
-  </test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/testng59/Test1.java b/test/src/test/testng59/Test1.java
deleted file mode 100644
index d81817b..0000000
--- a/test/src/test/testng59/Test1.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.testng59;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class Test1 {
-  private boolean m_run= false;
-  
-  @Test
-  public void test1() {
-    m_run= true;
-  }
-  
-  @AfterClass
-  public void checkWasRun() {
-    Assert.assertTrue(m_run, "test1() should have been run according to testng-59.xml");
-  }
-}
diff --git a/test/src/test/testng59/Test2.java b/test/src/test/testng59/Test2.java
deleted file mode 100644
index 61a2829..0000000
--- a/test/src/test/testng59/Test2.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.testng59;
-
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class Test2 {
-  private boolean m_run= false;
-  
-  @Test
-  public void test2() {
-    m_run= true;
-  } 
-  
-  @AfterClass
-  public void checkWasRun() {
-    Assert.assertTrue(m_run, "test2() should have been run according to testng-59.xml");
-  }
-}
diff --git a/test/src/test/testng59/testng-59.xml b/test/src/test/testng59/testng-59.xml
deleted file mode 100644
index 63185bd..0000000
--- a/test/src/test/testng59/testng-59.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="TESTNG-59 Suite" verbose="3" >
-  <test name="TESTNG-59">
-      <classes>
-          <class name="test.testng59.Test1">
-              <methods>
-                  <include name="test1"/>
-              </methods>
-          </class>
-          <class name="test.testng59.Test2">
-              <methods>
-                  <include name="test2"/>
-              </methods>
-          </class>
-      </classes>
-  </test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/testng93/SingleTestTest.java b/test/src/test/testng93/SingleTestTest.java
deleted file mode 100644
index bfbc434..0000000
--- a/test/src/test/testng93/SingleTestTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.testng93;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-
-/**
- * This class/interface 
- */
-public class SingleTestTest {
-  @BeforeMethod(groups={"group1"})
-  public void shouldRunBefore() {
-      System.out.println("Runs before");
-  }
-
-  @Test(groups={"group1"})
-  public void theFirstActualTest() {
-      System.out.println("The first actual test");
-  }
-
-  @Test
-  public void theSecondActualTest() {
-      System.out.println("The second actual test");
-  }
-}
diff --git a/test/src/test/testng93/testng-93.xml b/test/src/test/testng93/testng-93.xml
deleted file mode 100644
index 13e195d..0000000
--- a/test/src/test/testng93/testng-93.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="Bugtest" verbose="1">
-    <test name="Single test">
-        <groups>
-            <run>
-                <include name="group1"/>
-            </run>
-        </groups>
-        <classes>
-            <class name="test.testng93.SingleTestTest">
-                <methods>
-                    <include name="theFirstActualTest"/>
-                </methods>
-            </class>
-        </classes>
-    </test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/thread/B.java b/test/src/test/thread/B.java
deleted file mode 100644
index 5d7f8f9..0000000
--- a/test/src/test/thread/B.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.thread;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.annotations.Test;
-
-public class B {
-  public static Map<Long, Long> m_threadIds;
-  
-  public static void setUp() {
-    m_threadIds = new HashMap<Long, Long>();
-  }
-  
-  @Test
-  public void f2() {
-    Long id = Thread.currentThread().getId();
-    m_threadIds.put(id, id);
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[FactoryTest] " + s);
-  }
-  
-}
diff --git a/test/src/test/thread/BaseSequentialSample.java b/test/src/test/thread/BaseSequentialSample.java
deleted file mode 100644
index 602ca16..0000000
--- a/test/src/test/thread/BaseSequentialSample.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.thread;
-
-import java.util.Map;
-
-public class BaseSequentialSample {
-
-  protected void addId(String method, long id) {
-    ppp(method + " ID:" + id);
-    getMap().put(id, id);
-  }
-
-  Map getMap() {
-    Map result = Helper.getMap(getClass().getName());
-    ppp("RETURNING MAP " + result + " THIS:" + this);
-    
-    return result;
-  }
-
-  protected void ppp(String s) {
-    if (false) {
-      System.out.println("[" + getClass().getName() + " " 
-          + Thread.currentThread().getId() + " " 
-          + "] " + s);
-    }
-  }
-}
diff --git a/test/src/test/thread/DataProviderThreadPoolSizeSampleTest.java b/test/src/test/thread/DataProviderThreadPoolSizeSampleTest.java
deleted file mode 100644
index 0241761..0000000
--- a/test/src/test/thread/DataProviderThreadPoolSizeSampleTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class DataProviderThreadPoolSizeSampleTest {
-  static Map<Long, Long> m_threadIds;
-  
-  @BeforeClass(alwaysRun = true)
-  public void setUp() {
-    ppp("INIT THREAD IDS");
-    m_threadIds = new HashMap<Long, Long>();    
-  }
-  
-  @DataProvider(parallel = true)
-  public Object[][] parallelDataProvider() {
-    return createArray();
-  }
-  
-  @DataProvider
-  public Object[][] sequentialDataProvider() {
-    return createArray();
-  }
-
-  private Object[][] createArray() {
-    int i = 0;
-    return new Object[][] {
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-        new Object[] { i++ },
-    };
-  }
-
-  @Test(dataProvider = "sequentialDataProvider", groups = "sequential")
-  public void fSequential(Integer p) {
-    long n = Thread.currentThread().getId();
-    ppp("fSequential THREAD: " + n + " " +hashCode());
-    m_threadIds.put(n,n);
-  }
-
-  @Test(dataProvider = "parallelDataProvider", groups = "parallel")
-  public void fParallel(Integer p) {
-    long n = Thread.currentThread().getId();
-    ppp("fParallel THREAD: " + n + " " +hashCode());
-    m_threadIds.put(n,n);
-  }
-  
-//  @Test(dependsOnMethods = {"f1"})
-//  public void verify() {
-//    int expected = 3;
-//    Assert.assertEquals(m_threadIds.size(), expected,  
-//        "Should have run on " + expected + " threads but ran on " + m_threadIds.size());
-//  }
-  
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[ThreadPoolSizeTest] " + s);
-    }
-  }
-}
diff --git a/test/src/test/thread/DataProviderThreadPoolSizeTest.java b/test/src/test/thread/DataProviderThreadPoolSizeTest.java
deleted file mode 100644
index a59da1f..0000000
--- a/test/src/test/thread/DataProviderThreadPoolSizeTest.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.thread;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class DataProviderThreadPoolSizeTest extends SimpleBaseTest {
-  
-  @Test
-  public void shouldUseDefaultDataProviderThreadCount() {
-    TestNG tng = create(DataProviderThreadPoolSizeSampleTest.class);
-    tng.setGroups("parallel");
-    tng.run();
-    Assert.assertEquals(DataProviderThreadPoolSizeSampleTest.m_threadIds.size(), 10);
-  }
-  
-  @Test
-  public void shouldNotUseThreadsIfNotUsingParallel() {
-    TestNG tng = create(DataProviderThreadPoolSizeSampleTest.class);
-    tng.setGroups("sequential");
-    tng.run();
-    Assert.assertEquals(DataProviderThreadPoolSizeSampleTest.m_threadIds.size(), 1);
-  }
-
-  @Test
-  public void shouldUseSpecifiedDataProviderThreadCount() {
-    TestNG tng = create(DataProviderThreadPoolSizeSampleTest.class);
-    tng.setGroups("parallel");
-    tng.setDataProviderThreadCount(3);
-    tng.run();
-    Assert.assertEquals(DataProviderThreadPoolSizeSampleTest.m_threadIds.size(), 3);
-  }
-}
diff --git a/test/src/test/thread/FactorySampleTest.java b/test/src/test/thread/FactorySampleTest.java
deleted file mode 100644
index 121401d..0000000
--- a/test/src/test/thread/FactorySampleTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-
- at Test
-public class FactorySampleTest {
-  
-  @Factory
-  public Object[] init() {
-    return new Object[] { 
-        new B(),
-        new B(),
-    };
-  }
-}
-
diff --git a/test/src/test/thread/FactoryTest.java b/test/src/test/thread/FactoryTest.java
deleted file mode 100644
index 8e155ef..0000000
--- a/test/src/test/thread/FactoryTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package test.thread;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-public class FactoryTest {
-  
-  @Test
-  /**
-   * In non-parallel mode, we should only have one thread id
-   * for the two methods invoked on B.
-   */
-  public void verifyFactoryNotParallel() {
-    runTest(null, 1);
-  }
-
-  /**
-   * In parallel mode "methods", we should have as many thread id's
-   * as there are test methods on B (2).
-   */
-  @Test
-  public void verifyFactoryParallelMethods() {
-    runTest("methods", 2);
-  }
-
-  @Test(groups = "broken",
-      description = "Known bug:  when parallel='tests', tests returned" +
-        " by a @Factory are run in the same thread")
-  public void verifyFactoryParallelTests() {
-    runTest("tests", 2);
-  }
-  
-  private void runTest(String parallelMode, int expectedThreadIdCount) {
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setTestClasses(new Class[] { FactorySampleTest.class});
-    if (parallelMode != null) {
-      tng.setParallel(parallelMode);
-    }
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    
-    B.setUp();
-    tng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), 2);
-    Assert.assertEquals(B.m_threadIds.size(), expectedThreadIdCount);
-    
-//    ppp("# TESTS RUN " + tla.getPassedTests().size() 
-//        + " ID:" + B.m_threadIds.size());
-  }
-  
-  private void ppp(String string) {
-    System.out.println("[FactoryTest] " + string);
-  }
-  
-  
-
-}
diff --git a/test/src/test/thread/Helper.java b/test/src/test/thread/Helper.java
deleted file mode 100644
index 10dbdf1..0000000
--- a/test/src/test/thread/Helper.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.thread;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Helper {
-  private static Map<String, Map<Long, Long>> m_maps = new HashMap<String, Map<Long, Long>>();
-
-  public synchronized static Map<Long, Long> getMap(String className) {
-    Map<Long, Long> result = m_maps.get(className);
-    if (result == null) {
-      result = new HashMap();
-      m_maps.put(className, result);
-    }
-    
-    return result;
-  }
-  
-  public static void reset() {
-    m_maps = new HashMap<String, Map<Long, Long>>();    
-  }
-}
diff --git a/test/src/test/thread/MultiThreadedDependentSampleTest.java b/test/src/test/thread/MultiThreadedDependentSampleTest.java
deleted file mode 100644
index 4638f31..0000000
--- a/test/src/test/thread/MultiThreadedDependentSampleTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
-
-import java.util.List;
-import java.util.Random;
-
-public class MultiThreadedDependentSampleTest {
-  public static List<String> m_methods = Lists.newArrayList();
-
-  @BeforeClass
-  public void bc() {
-//    log("beforeClass");
-  }
-
-  @AfterClass
-  public void ac() {
-//    log("afterClass");
-  }
-
-  @BeforeMethod
-  public void bm() {
-//    log("beforeMethod");
-  }
-
-  @AfterMethod
-  public void am() {
-//    log("afterMethod");
-  }
-
-  @Test(groups = "1")
-  public void a1() {
-    logThread();
-    log("a1");
-  }
-
-  @Test(groups = "1")
-  public void a2() {
-    logThread();
-    log("a2");
-  }
-
-  @Test(groups = "1")
-  public void a3() {
-    logThread();
-    log("a3");
-  }
-
-  @Test(groups = "2", dependsOnGroups = "1")
-  public void b1() {
-    logThread();
-    log("b1");
-  }
-
-  @Test(groups = "2", dependsOnGroups = "1")
-  public void b2() {
-    logThread();
-    log("b2");
-  }
-
-  @Test(groups = "2", dependsOnGroups = "1")
-  public void b3() {
-    logThread();
-    log("b3");
-  }
-
-  @Test(groups = "2", dependsOnGroups = "1")
-  public void b4() {
-    logThread();
-    log("b4");
-  }
-  
-  @Test(groups = "2", dependsOnGroups = "1")
-  public void b5() {
-    logThread();
-    log("b5");
-  }
-
-  @Test(dependsOnGroups = "2")
-  public void c1() {
-    logThread();
-    log("c1");
-  }
-
-  @Test(dependsOnGroups = { "1" })
-  public void d() {
-    logThread();
-    log("d");
-  }
-
-  @Test
-  public void x() {
-    log("x");
-  }
-
-  @Test
-  public void y() {
-    log("y");
-  }
-
-  @Test
-  public void z() {
-    log("z");
-  }
-
-  @Test
-  public void t() {
-    log("t");
-  }
-
-  //  @Test(groups = "mytest", dependsOnMethods = "g")
-//  public void f() {
-//  }
-//
-//
-//  @AfterMethod
-//  public void after() {
-//  }
-
-  private void logThread() {
-    long id = Thread.currentThread().getId();
-//    Thread.yield();
-//    try {
-//      Thread.sleep(new Random().nextInt() % 1000);
-//    } catch (InterruptedException e) {
-//    }
-    Helper.getMap(getClass().getName()).put(id, id);
-  }
-
-  private void log(String string) {
-    synchronized(m_methods) {
-      m_methods.add(string);
-    }
-//    System.out.println(string + "() thread:" + Thread.currentThread().getId());
-//    int sleep = Math.abs(new Random().nextInt() % 500);
-//    System.out.println("   sleeping " + sleep);
-//    try {
-//        Thread.sleep(sleep);
-//    } catch (InterruptedException e) {
-//        e.printStackTrace();
-//    }
-  }
-
-}
diff --git a/test/src/test/thread/MultiThreadedDependentTest.java b/test/src/test/thread/MultiThreadedDependentTest.java
deleted file mode 100644
index 71a399f..0000000
--- a/test/src/test/thread/MultiThreadedDependentTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package test.thread;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.collections.Lists;
-import org.testng.collections.Maps;
-
-import test.SimpleBaseTest;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Test that classes with dependent methods are still run in different threads
- * and in the correct order.
- */
-public class MultiThreadedDependentTest extends SimpleBaseTest {
-
-  /**
-   * Make sure that the topological order is preserved and that if
-   * the TestNG runner is configured to run n threads, the dependent
-   * methods are using these n threads.
-   */
-  private void assertOrder(List<String> methods) {
-    List<String> expectedMethods = Arrays.asList(new String[] {
-      "a1", "a2", "a3", "b1", "b2", "b3", "b4", "b5", "c1", "d", "x", "y", "z", "t"
-    });
-    int size = expectedMethods.size();
-    Assert.assertEquals(methods.size(), size);
-    for (String em : expectedMethods) {
-      Assert.assertTrue(methods.contains(em));
-    }
-    Map<String, Boolean> map = Maps.newHashMap();
-    for (String m : methods) {
-      map.put(m, Boolean.TRUE);
-      if ("b1".equals(m) || "b2".equals(m) || "b3".equals(m) || "b4".equals(m) || "b5".equals(m)) {
-        Assert.assertTrue(map.get("a1"));
-        Assert.assertTrue(map.get("a2"));
-        Assert.assertTrue(map.get("a3"));
-      }
-      if ("d".equals(m)) {
-        Assert.assertTrue(map.get("a1"));
-        Assert.assertTrue(map.get("a2"));
-      }
-      if ("c1".equals(m)) {
-        Assert.assertTrue(map.get("b1"));
-        Assert.assertTrue(map.get("b2"));
-      }
-    }
-    Assert.assertEquals(map.size(), size);
-    for (String m : map.keySet()) {
-      Assert.assertTrue(map.get(m));
-    }
-  }
-
-  @Test
-  public void test2Threads() {
-    test(2);
-  }
-  
-  @Test
-  public void test3Threads() {
-    test(3);
-  }
-
-  private void test(int threadCount) {
-    Helper.reset();
-    MultiThreadedDependentSampleTest.m_methods = Lists.newArrayList();
-    TestNG tng = create(MultiThreadedDependentSampleTest.class);
-    tng.setThreadCount(threadCount);
-    tng.setParallel("methods");
-    Map<Long, Long> map = Helper.getMap(MultiThreadedDependentSampleTest.class.getName());
-    synchronized(map) {
-      tng.run();
-      Assert.assertTrue(map.size() > 1, "Map size:" + map.size() + " expected more than 1");
-      assertOrder(MultiThreadedDependentSampleTest.m_methods);
-    }
-  }
-}
diff --git a/test/src/test/thread/ParallelTestTest.java b/test/src/test/thread/ParallelTestTest.java
deleted file mode 100644
index a76ba70..0000000
--- a/test/src/test/thread/ParallelTestTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package test.thread;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.BaseTest;
-
-public class ParallelTestTest extends BaseTest {
-    
-  @Test
-  public void verifyParallelNone() {
-    verifyExpected(XmlSuite.PARALLEL_NONE, 1);
-  }
-  
-  @Test
-  public void verifyParallelTests() {
-    verifyExpected(XmlSuite.PARALLEL_TESTS, 2);
-  }
-
-  @Test
-  public void verifyParallelMethods() {
-    verifyExpected(XmlSuite.PARALLEL_METHODS, 4);
-  }
-  
-  @Test
-  public void verifyParallelClasses() {
-    verifyExpected(XmlSuite.PARALLEL_CLASSES, 2);
-  }
-
-  public static final String CLASS1 = "test.thread.Test1Test";
-  public static final String CLASS2 = "test.thread.Test2Test";
-    
-  private void createTest(XmlSuite xmlSuite, String className) {
-    XmlTest result = new XmlTest(xmlSuite);
-    List<XmlClass> classes = result.getXmlClasses();
-    XmlClass xmlClass = new XmlClass(className);
-    classes.add(xmlClass);
-  }
-  
-  private void verifyExpected(String parallelMode, int expectedThreadCount) {
-    XmlSuite xmlSuite = new XmlSuite();
-    xmlSuite.setName("ParallelTestTest");
-    xmlSuite.setParallel(parallelMode);
-    createTest(xmlSuite, CLASS1);
-    createTest(xmlSuite, CLASS2);
-    
-    TestNG tng = new TestNG();
-    tng.setVerbose(0);
-    tng.setXmlSuites(Arrays.asList(new XmlSuite[] { xmlSuite }));
-    
-    Helper.reset();
-    
-    tng.run();    
-    
-    Map<Long, Long>[] maps = new Map[] {
-        Helper.getMap(CLASS1),
-        Helper.getMap(CLASS2),
-    };
-    
-    Map<Long, Long> mergedMap = new HashMap<Long, Long>();
-    for (Map<Long, Long>m : maps) {
-      mergedMap.putAll(m);
-    }
-    
-    Assert.assertEquals(mergedMap.size(), expectedThreadCount);
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[SequentialTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/thread/SequentialSample2Test.java b/test/src/test/thread/SequentialSample2Test.java
deleted file mode 100644
index 80caf73..0000000
--- a/test/src/test/thread/SequentialSample2Test.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Test;
-
- at Test(sequential = true)
-public class SequentialSample2Test extends BaseSequentialSample {
-  
-  @Test
-  public void f1() {
-    addId("SequentialSample2Test.f1()", Thread.currentThread().getId());
-  }
-  
-  @Test
-  public void f2() {
-    addId("SequentialSample2Test.f2()", Thread.currentThread().getId());
-  }
-  
-  @Test
-  public void f3() {
-    addId("SequentialSample2Test.f3()", Thread.currentThread().getId());
-  }  
-
-}
diff --git a/test/src/test/thread/SequentialSample3Test.java b/test/src/test/thread/SequentialSample3Test.java
deleted file mode 100644
index 578c406..0000000
--- a/test/src/test/thread/SequentialSample3Test.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Test;
-
- at Test(sequential = true)
-public class SequentialSample3Test extends BaseSequentialSample {
-  
-  @Test
-  public void f1() {
-    addId("SequentialSample3Test.f1()", Thread.currentThread().getId());
-  }
-  
-  @Test // (dependsOnMethods = "f1")
-  public void f2() {
-    addId("SequentialSample3Test.f2()", Thread.currentThread().getId());
-  }
-  
-  @Test // (dependsOnMethods = "f2")
-  public void f3() {
-    addId("SequentialSample3Test.f3()", Thread.currentThread().getId());
-  }  
-
-}
diff --git a/test/src/test/thread/SequentialSampleTest.java b/test/src/test/thread/SequentialSampleTest.java
deleted file mode 100644
index cba2a24..0000000
--- a/test/src/test/thread/SequentialSampleTest.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Test;
-
- at Test(sequential = true)
-public class SequentialSampleTest extends BaseSequentialSample {
-  
-  @Test
-  public void f1() {
-    addId("SequentialSampleTest.f1()", Thread.currentThread().getId());
-  }
-  
-  @Test
-  public void f2() {
-    addId("SequentialSampleTest.f2()", Thread.currentThread().getId());
-  }
-  
-  @Test
-  public void f3() {
-    addId("SequentialSampleTest.f3()", Thread.currentThread().getId());
-  }  
-
-}
diff --git a/test/src/test/thread/SequentialTest.java b/test/src/test/thread/SequentialTest.java
deleted file mode 100644
index 90a7555..0000000
--- a/test/src/test/thread/SequentialTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package test.thread;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlSuite;
-
-import test.BaseTest;
-
-public class SequentialTest extends BaseTest {
-  
-  @Test
-  public void verifySequential1() {
-    verifySequential(1);
-  }    
-
-  @Test
-  public void verifySequential2() {
-    verifySequential(2);
-  }
-  
-  @Test
-  public void verifySequential3() {
-    verifySequential(3);
-  }    
-
-  public void verifySequential(int threadCount) {
-    Helper.reset();
-    
-    String class1 = "test.thread.SequentialSampleTest";
-    String class2 = "test.thread.SequentialSample2Test";
-    String class3 = "test.thread.SequentialSample3Test";
-    
-    addClass(class1);
-    addClass(class2);
-    addClass(class3);
-    setParallel(XmlSuite.PARALLEL_METHODS);
-    setThreadCount(threadCount);
-
-    run();
-    
-    Map<Long, Long>[] maps = new Map[] {
-        Helper.getMap(class1),
-        Helper.getMap(class2),
-        Helper.getMap(class3),
-    };
-
-    for(Map m : maps) {
-      Assert.assertEquals(m.size(), 1);
-    }
-    
-    long[] ids = new long[] {
-        maps[0].keySet().iterator().next().longValue(),
-        maps[1].keySet().iterator().next().longValue(),
-        maps[2].keySet().iterator().next().longValue(),
-    };
-    Map<Long, Long> verifyMap = new HashMap<Long, Long>();
-    
-    for (long id : ids) {
-      verifyMap.put(id, id);
-    }
-    
-    Assert.assertEquals(verifyMap.size(), threadCount);
-    
-    ppp("COUNT:" + threadCount  + " THREAD ID'S:" + ids[0] + " " + ids[1] + " " + ids[2]);
-  }
-
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[SequentialTest] " + s);
-    }
-  }
-
-}
diff --git a/test/src/test/thread/SuiteThreadCountTest.java b/test/src/test/thread/SuiteThreadCountTest.java
deleted file mode 100644
index 70f06cf..0000000
--- a/test/src/test/thread/SuiteThreadCountTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Test;
-import org.testng.annotations.AfterClass;
-import org.testng.internal.thread.ThreadUtil;
-import org.testng.Assert;
-
-import java.util.Set;
-import java.util.Collections;
-import java.util.HashSet;
-
-/**
- * Test for test level thread-count.
- *
- * @author <a href="mailto:the.mindstorm at gmail.com">Alex Popescu</a>
- */
-public class SuiteThreadCountTest {
-  private Set<String> m_threads= Collections.synchronizedSet(new HashSet<String>());
-
-  @Test
-  public void test1() {
-    m_threads.add(ThreadUtil.currentThreadInfo());
-  }
-
-  @Test
-  public void test2() {
-    m_threads.add(ThreadUtil.currentThreadInfo());
-  }
-
-  @AfterClass
-  public void checkThreading() {
-    Assert.assertEquals(m_threads.size(), 2, "Test should use 2 threads (suite level)");
-  }
-}
diff --git a/test/src/test/thread/Test1Test.java b/test/src/test/thread/Test1Test.java
deleted file mode 100644
index a90701c..0000000
--- a/test/src/test/thread/Test1Test.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Test;
-
-public class Test1Test extends BaseSequentialSample {
-
-  @Test
-  public void f11() { 
-    ppp("f11");
-    addId("Test1Test.f11()", Thread.currentThread().getId());
-  }
-  
-  @Test
-  public void f12() { 
-    ppp("f12");
-    addId("Test1Test.f12()", Thread.currentThread().getId());
-  }
-
-
-}
diff --git a/test/src/test/thread/Test2Test.java b/test/src/test/thread/Test2Test.java
deleted file mode 100644
index e2ce5c5..0000000
--- a/test/src/test/thread/Test2Test.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.thread;
-
-import org.testng.annotations.Test;
-
-public class Test2Test extends BaseSequentialSample {
-
-  @Test
-  public void f21() { 
-    ppp("f21");
-    addId("Test2Test.f21()", Thread.currentThread().getId());
-  }
-  
-  @Test
-  public void f22() { 
-    ppp("f22");
-    addId("Test2Test.f22()", Thread.currentThread().getId());
-  }
-
-
-}
diff --git a/test/src/test/thread/TestThreadCountTest.java b/test/src/test/thread/TestThreadCountTest.java
deleted file mode 100644
index 31f29c9..0000000
--- a/test/src/test/thread/TestThreadCountTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package test.thread;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.testng.annotations.AfterClass;
-import org.testng.internal.thread.ThreadUtil;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Test for test level thread-count.
- *
- * @author <a href="mailto:the.mindstorm at gmail.com">Alex Popescu</a>
- */
-public class TestThreadCountTest {
-  private Set<String> m_threads= Collections.synchronizedSet(new HashSet<String>());
-
-  @Test
-  public void test1() {
-    m_threads.add(ThreadUtil.currentThreadInfo());
-  }
-
-  @Test
-  public void test2() {
-    m_threads.add(ThreadUtil.currentThreadInfo());
-  }
-
-  @Test
-  public void test3() {
-    m_threads.add(ThreadUtil.currentThreadInfo());
-  }
-
-  @AfterClass
-  public void checkThreading() {
-    Assert.assertEquals(m_threads.size(), 3, "Test should use 3 threads");
-  }
-}
diff --git a/test/src/test/thread/ThreadPoolSizeTest.java b/test/src/test/thread/ThreadPoolSizeTest.java
deleted file mode 100644
index eef2764..0000000
--- a/test/src/test/thread/ThreadPoolSizeTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package test.thread;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ThreadPoolSizeTest {
-  private static Map<Long, Long> m_threadIds;
-  
-  @BeforeClass
-  public void setUp() {
-    ppp("INIT THREAD IDS");
-    m_threadIds = new HashMap<Long, Long>();    
-  }
-
-  @Test(invocationCount = 10, threadPoolSize = 3)
-  public void f1() {
-    long n = Thread.currentThread().getId();
-    ppp("THREAD: " + n + " " +hashCode());
-    m_threadIds.put(n,n);
-  }
-  
-  @Test(dependsOnMethods = {"f1"})
-  public void verify() {
-    int expected = 3;
-    Assert.assertEquals(m_threadIds.size(), expected,  
-        "Should have run on " + expected + " threads but ran on " + m_threadIds.size());
-  }
-  
-  private static void ppp(String s) {
-    if (false) {
-      System.out.println("[ThreadPoolSizeTest] " + s);
-    }
-  }
-}
diff --git a/test/src/test/thread/testng.xml b/test/src/test/thread/testng.xml
deleted file mode 100644
index 1c19df7..0000000
--- a/test/src/test/thread/testng.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-<suite name="Thread Counters" verbose="2" thread-count="2">
-  <test name="Test level thread-count" thread-count="3" parallel="methods">
-    <classes>
-      <class name="test.thread.TestThreadCountTest" />
-    </classes>
-  </test>
-  <test name="Suite level thread-count" parallel="methods">
-    <classes>
-      <class name="test.thread.SuiteThreadCountTest" />
-    </classes>
-  </test>
-</suite>
\ No newline at end of file
diff --git a/test/src/test/timeout/InvocationTimeOutSampleTest.java b/test/src/test/timeout/InvocationTimeOutSampleTest.java
deleted file mode 100644
index 3e97e50..0000000
--- a/test/src/test/timeout/InvocationTimeOutSampleTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.timeout;
-
-import org.testng.annotations.Test;
-
-public class InvocationTimeOutSampleTest {
-
-  @Test(invocationCount = 5, invocationTimeOut = 2000)
-  public void shouldPass() {
-    try {
-      Thread.sleep(250);
-    }
-    catch (InterruptedException e) {
-    }
-  }
-
-  @Test(invocationCount = 5, invocationTimeOut = 1000)
-  public void shouldFail() {
-    try {
-      Thread.sleep(250);
-    }
-    catch (InterruptedException e) {
-    }
-  }
-}
diff --git a/test/src/test/timeout/TestTimeOutSampleTest.java b/test/src/test/timeout/TestTimeOutSampleTest.java
deleted file mode 100644
index 62b537d..0000000
--- a/test/src/test/timeout/TestTimeOutSampleTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.timeout;
-
-import org.testng.annotations.Test;
-
-public class TestTimeOutSampleTest {
-
-    @Test
-    public void timeoutTest() {
-        try {
-            Thread.sleep(2000);
-        } catch (InterruptedException e) {
-//            System.out.println("Interrupted exception");
-        }
-//        System.out.println("Finished normally");
-    }
-}
diff --git a/test/src/test/timeout/TimeOutFromXmlTest.java b/test/src/test/timeout/TimeOutFromXmlTest.java
deleted file mode 100644
index ac23789..0000000
--- a/test/src/test/timeout/TimeOutFromXmlTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package test.timeout;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlInclude;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.BaseTest;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class TimeOutFromXmlTest extends BaseTest {
-    
-    private void timeOutTest(boolean onSuite) {
-        addClass("test.timeout.TestTimeOutSampleTest");
-        if (onSuite) {
-            setSuiteTimeOut(1000);
-        } else {
-            setTestTimeOut(1000);
-        }
-        run();
-        String[] passed = {
-          };
-        String[] failed = {
-          "timeoutTest"
-        };
-      
-//        dumpResults("Passed", getPassedTests());
-//        dumpResults("Failed", getFailedTests());
-
-        verifyTests("Passed", passed, getPassedTests());
-        verifyTests("Failed", failed, getFailedTests());
-    }
-
-    @Test
-    public void timeOutOnSuiteTag() {
-        timeOutTest(true /* on suite */);
-    }
-
-    @Test
-    public void timeOutOnTestTag() {
-        timeOutTest(false /* on test */);
-    }
-
-    @Test
-    public void noTimeOut() {
-      addClass("test.timeout.TestTimeOutSampleTest");
-      run();
-      String[] passed = {
-          "timeoutTest"
-        };
-        String[] failed = {
-        };
-        
-        verifyTests("Passed", passed, getPassedTests());
-        verifyTests("Failed", failed, getFailedTests());
-    }
-
-    @Test
-    public void twoDifferentTests() {
-      XmlSuite result = new XmlSuite();
-      result.setName("Suite");
-      
-      createXmlTest(result, "WithoutTimeOut");
-      createXmlTest(result, "WithTimeOut").setTimeOut(1000);
-
-      TestNG tng = new TestNG();
-      tng.setVerbose(0);
-      tng.setXmlSuites(Arrays.asList(new XmlSuite[] { result }));
-      TestListenerAdapter tla = new TestListenerAdapter();
-      tng.addListener(tla);
-      tng.run();
-      
-//      System.out.println("Passed:" + tla.getPassedTests().size()
-//          + " Failed:" + tla.getFailedTests().size());
-      Assert.assertEquals(tla.getPassedTests().size(), 1);
-      Assert.assertEquals(tla.getFailedTests().size(), 1);
-    }
-
-    private XmlTest createXmlTest(XmlSuite suite, String name) {
-        XmlTest result = new XmlTest(suite);
-        result.setName(name);
-        List<XmlClass> classes = new ArrayList<XmlClass>();
-        XmlClass cls = new XmlClass(TestTimeOutSampleTest.class);
-        cls.setIncludedMethods(
-            Arrays.asList(new XmlInclude[] { new XmlInclude("timeoutTest") }));
-        classes.add(cls);
-        result.setXmlClasses(classes);
-
-        return result;
-    }}
diff --git a/test/src/test/timeout/TimeOutSample2Test.java b/test/src/test/timeout/TimeOutSample2Test.java
deleted file mode 100644
index c9a810c..0000000
--- a/test/src/test/timeout/TimeOutSample2Test.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.timeout;
-
-import org.testng.annotations.Test;
-
-/**
- * Tests timeouts set from testng.xml
- * @author cbeust
- */
-public class TimeOutSample2Test {
-  @Test(timeOut = 1500)
-  public void timeoutShouldFailByTimeOut() throws InterruptedException {
-      Thread.sleep(10 * 1000);
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[TimeOutTest]@@@@@@@@@@@@@@@ " + s);
-  }
-
-}
diff --git a/test/src/test/timeout/TimeOutSampleTest.java b/test/src/test/timeout/TimeOutSampleTest.java
deleted file mode 100644
index 5ef9df2..0000000
--- a/test/src/test/timeout/TimeOutSampleTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.timeout;
-
-import org.testng.annotations.*;
-
-/**
- * This class tests timeouts
- * 
- * @author cbeust
- */
-public class TimeOutSampleTest {
-  
-  @Test(timeOut = 5000 /* 5 seconds */)
-  public void timeoutShouldPass() {
-  }
-  
-  @Test(timeOut = 5 * 1000 /* 5 seconds */)
-  public void timeoutShouldFailByException() {
-    throw new RuntimeException("EXCEPTION SHOULD MAKE THIS METHOD FAIL");
-  }
-  
-  @Test(timeOut = 1000 /* 1 second */)
-  public void timeoutShouldFailByTimeOut() throws InterruptedException {
-      Thread.sleep(10 * 1000 /* 10 seconds */);
-  }
-  
-  public static void ppp(String s) {
-    System.out.println("[TimeOutTest]@@@@@@@@@@@@@@@ " + s);
-  }
-}
diff --git a/test/src/test/timeout/TimeOutTest.java b/test/src/test/timeout/TimeOutTest.java
deleted file mode 100644
index dfa72f2..0000000
--- a/test/src/test/timeout/TimeOutTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package test.timeout;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import test.BaseTest;
-
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class TimeOutTest extends BaseTest {
-  private Long m_id;
-  
-  public TimeOutTest() {
-    m_id = new Long(System.currentTimeMillis());     
-  }
-  
-  @Test
-  public void timeOutInParallel() {
-    addClass("test.timeout.TimeOutSampleTest");
-    setParallel(XmlSuite.PARALLEL_METHODS);
-    run();
-    String[] passed = {
-        "timeoutShouldPass", 
-      };
-      String[] failed = {
-          "timeoutShouldFailByException", "timeoutShouldFailByTimeOut"
-      };
-      
-//      dumpResults("Passed", getPassedTests());
-
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-  }
-
-  @Test
-  public void timeOutInNonParallel() {
-    addClass("test.timeout.TimeOutSampleTest");
-    run();
-    String[] passed = {
-        "timeoutShouldPass", 
-      };
-      String[] failed = {
-          "timeoutShouldFailByException", "timeoutShouldFailByTimeOut"
-      };
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  @Test
-  public void verifyInvocationTimeOut() {
-    addClass("test.timeout.InvocationTimeOutSampleTest");
-    run();
-    String[] passed = {
-        "shouldPass", 
-      };
-      String[] failed = {
-          "shouldFail"
-      };
-      verifyTests("Passed", passed, getPassedTests());
-      verifyTests("Failed", failed, getFailedTests());
-  }
-  
-  public Long getId() {
-    return m_id;
-  }
-  
-  
-}
diff --git a/test/src/test/tmp/A.java b/test/src/test/tmp/A.java
deleted file mode 100644
index a0d7ceb..0000000
--- a/test/src/test/tmp/A.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
- at Parameters({"n"})
- at Test
-public class A {
-
-  public A() {
-    log("A");
-  }
-
-  private void log(String s) {
-    System.out.println(hashCode() + " [A]" + s);
-  }
-
-  @DataProvider
-  public Object[][] dp() {
-    return new Object[][] {
-      new Object[] { 42 },   
-    };
-  }
-
-//  @BeforeClass
-//  public void bc() {
-//    log("beforeClass");
-//  }
-//
-//  @AfterClass
-//  public void ac() {
-//    log("afterClass");
-//  }
-
-  @BeforeMethod
-  public void bm() {
-    log("BeforeMethod");
-//    throw new RuntimeException();
-  }
-
-  @AfterMethod
-  public void am() {
-    log("AfterMethod");
-  }
-
-  @Test(dataProvider = "dp")
-  public void f1(Integer n) {
-    log("f1");
-  }
-
-  public void f2() {
-    log("f2");
-  }
-
-  //  @Test
-//  public void f2() {
-//    log("f2");
-//  }
-//  @Test(priority = 1)
-//  public void f1() {
-//  }
-//
-//  @Test(priority = -1)
-//  public void f2() {
-//  }
-//
-//  @Test
-//  public void f3() {
-//  }
-
-  //  @BeforeSuite
-//  public void bs() {
-//    System.out.println("Before suite");
-//  }
-//
-//  @AfterSuite
-//  public void as() {
-//    System.out.println("After suite");
-//  }
-//
-//  @BeforeClass
-//  public void beforeClassA() {
-//  }
-//
-//  @AfterClass
-//  public void afterClassA() {
-//  }
-//
-//  @Test
-//  public void g1() {
-////    throw new RuntimeException();
-//  }
-
-
-  public String getTestName() {
-    return "This is test A";
-  }
-
-//  @Test(groups = "mytest", dependsOnMethods = "g")
-//  public void f() {
-//  }
-//
-//
-//  @AfterMethod
-//  public void after() {
-//  }
-
-}
diff --git a/test/src/test/tmp/AnnotationTransformer.java b/test/src/test/tmp/AnnotationTransformer.java
deleted file mode 100644
index e31baf6..0000000
--- a/test/src/test/tmp/AnnotationTransformer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package test.tmp;
-
-import org.testng.IAnnotationTransformer;
-import org.testng.ITestContext;
-import org.testng.ITestListener;
-import org.testng.ITestResult;
-import org.testng.annotations.ITestAnnotation;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-public class AnnotationTransformer 
-  implements IAnnotationTransformer, ITestListener
-{
-
-  public void transform(ITestAnnotation annotation, Class testClass,
-      Constructor testConstructor, Method testMethod) 
-  {
-  }
-
-  public void onFinish(ITestContext context) {
-    // TODO Auto-generated method stub
-    
-  }
-
-  public void onStart(ITestContext context) {
-    // TODO Auto-generated method stub
-    
-  }
-
-  public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
-    // TODO Auto-generated method stub
-    
-  }
-
-  public void onTestFailure(ITestResult result) {
-    // TODO Auto-generated method stub
-    
-  }
-
-  public void onTestSkipped(ITestResult result) {
-    // TODO Auto-generated method stub
-    
-  }
-
-  public void onTestStart(ITestResult result) {
-    // TODO Auto-generated method stub
-    
-  }
-
-  public void onTestSuccess(ITestResult result) {
-    // TODO Auto-generated method stub
-    
-  }
-
-}
diff --git a/test/src/test/tmp/AssertEqualsTest.java b/test/src/test/tmp/AssertEqualsTest.java
deleted file mode 100644
index 36ebb4f..0000000
--- a/test/src/test/tmp/AssertEqualsTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package test.tmp;
-
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.Random;
-import java.util.Set;
-
-import org.testng.Assert;
-import org.testng.Reporter;
-import org.testng.annotations.Test;
-
-public class AssertEqualsTest {
-  
-  private void log(String s) {
-    System.out.println("[" + Thread.currentThread().getId() + "] " + s);
-  }
-  
-  @Test(threadPoolSize = 3, invocationCount = 6)
-  public void f1() {
-    log("start");
-    try {
-      int sleepTime = new Random().nextInt(500);
-      Thread.sleep(sleepTime);
-    }
-    catch (Exception e) {
-      log("  *** INTERRUPTED");
-    }
-    log("end");
-  }
-  
-  @Test(threadPoolSize = 10, invocationCount = 10000)
-  public void verifyMethodIsThreadSafe() {
-//    foo();
-  }
-
-  @Test(dependsOnMethods = "verifyMethodIsThreadSafe")
-  public void verify() {
-    // make sure that nothing was broken
-  }
-
-  public static void main(String[] args) {
-    Set set1 = new LinkedHashSet();
-    Set set2 = new HashSet();
-
-    set1.add(new Integer(5));
-    set2.add(new Integer(5));
-
-    set1.add(new Integer(6));
-    set2.add(new Integer(6));
-
-    set1.add(new Integer(1));
-    set2.add(new Integer(1));
-
-    set1.add(new Integer(9));
-    set2.add(new Integer(9));
-
-    System.out.println("set1 is:" + set1.toString());
-    System.out.println("set2 is:" + set2.toString());
-
-    System.out.println("is set1 equals set2 :" + set1.equals(set2));
-
-    try {
-      Assert.assertEquals(set1, set2, "set1 must equals with set2");
-    }
-    catch (Exception ex) {
-      ex.printStackTrace();
-    }
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/B.java b/test/src/test/tmp/B.java
deleted file mode 100644
index 9447d47..0000000
--- a/test/src/test/tmp/B.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.tmp;
-
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-
-import test.SimpleBaseTest;
-
-public class B extends SimpleBaseTest {
-  public static void main(String[] arg) {
-    TestNG tng = new TestNG();
-    tng.setTestClasses(new Class[] { C.class });
-    tng.setParallel("method");
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    System.out.println("\n# tests:" + tla.getPassedTests().size());
-  }
-}
-
diff --git a/test/src/test/tmp/Base.java b/test/src/test/tmp/Base.java
deleted file mode 100644
index f31cddd..0000000
--- a/test/src/test/tmp/Base.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.BeforeMethod;
-
-public class Base {
-  @BeforeMethod
-  public void bm() {
-      System.out.println("Thread" + Thread.currentThread().getId());
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/BeforeGroupTest.java b/test/src/test/tmp/BeforeGroupTest.java
deleted file mode 100644
index 18da2a6..0000000
--- a/test/src/test/tmp/BeforeGroupTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package test.tmp;
-
-import org.testng.ITestContext;
-import org.testng.annotations.BeforeGroups;
-
-public class BeforeGroupTest {
-
-//  Logger l = LoggerFactory.getLogger(this.getClass());
-
-  @BeforeGroups(groups = { "NewUser" }, value = { "NewUser" })
-  public void preNewUser(ITestContext itc) {
-    System.out.println("BEFOREGROUPS perfroming pre groups init");
-//    m_inj = Guice.createInjector(new JUnitModule(), new RequestModule(),
-//        new GenericModule(), new SecurityModule());
-//    itc.setAttribute("injector", m_inj);
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/C.java b/test/src/test/tmp/C.java
deleted file mode 100644
index bec1d4c..0000000
--- a/test/src/test/tmp/C.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-
-public class C extends B {
-  @Test(threadPoolSize = 10, dataProvider = "data") 
-  public void testMethod(Integer val) {
-    System.out.print(Thread.currentThread().getId() + " ");
-  }
-
-  @DataProvider(name = "data", parallel = true) 
-  public Object[][] data() { 
-    final ArrayList<Integer[]> resa = new ArrayList<Integer[]>(); 
-    for(int i = 0; i < 1000; i ++) { 
-      resa.add(new Integer[]{i}); 
-    } 
-    return resa.toArray(new Object[1][resa.size()]); 
-  }
-}
diff --git a/test/src/test/tmp/ChildTest.java b/test/src/test/tmp/ChildTest.java
deleted file mode 100644
index 8de1183..0000000
--- a/test/src/test/tmp/ChildTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
-public class ChildTest extends ParentTest {
-
-  @Configuration(beforeTestMethod = true)
-  public void btm2() {
-    ppp("CHILD BEFORE TEST");
-  }
-  
-  @Configuration(afterTestMethod = true)
-  public void atm2() {
-    ppp("CHILD AFTER TEST");
-  }
-
-  @Test
-  public void t1() {
-    ppp("TEST CHILD");
-  }
-
-  private void ppp(String string) {
-    System.out.println("[Parent] " + string);
-  }
-  
-  
-
-}
diff --git a/test/src/test/tmp/ConcreteTest.java b/test/src/test/tmp/ConcreteTest.java
deleted file mode 100644
index 92d94fe..0000000
--- a/test/src/test/tmp/ConcreteTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
-public class ConcreteTest extends Fixturable {
-  @Configuration(beforeTest=true, afterGroups="fixture")
-  public void beforeFixture() { 
-    ppp("BEFORE");
-  }
- 
-  @Test(groups = "fixture")
-  public void test() {
-    ppp("TEST");
-  }
-  
-
-  private static void ppp(String s) {
-    System.out.println("[ConcreteTest] " + s);
-  }
-}
diff --git a/test/src/test/tmp/DataDrivenTest.java b/test/src/test/tmp/DataDrivenTest.java
deleted file mode 100644
index 5e2bb02..0000000
--- a/test/src/test/tmp/DataDrivenTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package test.tmp;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Properties;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-
-public class DataDrivenTest {
-  
-  @DataProvider(name = "provider")
-  public Object[][] createData() throws FileNotFoundException, IOException {
-    Properties p = new Properties();
-    List<Object> vResult = new ArrayList<Object>();
-    p.load(new FileInputStream(new File("c:/t/data.properties")));
-    for (Enumeration e = p.keys(); e.hasMoreElements(); ) {
-      vResult.add(e.nextElement());
-    }
-    
-    Object[][] result = new Object[vResult.size()][1];
-    for (int i = 0; i < result.length; i++) {
-      result[i] = new Object[] { vResult.get(i) };
-    }
-    
-    return result;
-  }
-  
-  @Test(dataProvider = "provider")
-  public void foo(int n) {
-    Assert.assertTrue(n > 0);
-  }
-
-}
diff --git a/test/src/test/tmp/ExponentTest.java b/test/src/test/tmp/ExponentTest.java
deleted file mode 100644
index d943950..0000000
--- a/test/src/test/tmp/ExponentTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package test.tmp;
-
-import static org.testng.Assert.assertEquals;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
- at Test(suiteName = "Exponent suite", testName = "Exponent test")
-public class ExponentTest {
-
-    @DataProvider(name = "random")
-    public Object[][] generateRandomExps() {
-      // This array should be generated with random numbers
-      return new Object[][] {
-        new Object[] { 0.0, Math.exp(0) },
-        new Object[] { 1.0, Math.exp(1) },
-        new Object[] { 2.0, Math.exp(2) },
-      };
-    }
-    
-    @BeforeMethod
-    public void setUp() {
-      ppp("BEFORE METHOD");
-    }
-
-    @Test(dataProvider = "random")
-    public void testExponent(double exponent, double expected) {
-      ppp("COMPARING " + myExpFunction(exponent) + " AND " + expected);
-      assertEquals(myExpFunction(exponent), expected);
-    }
-    
-    private static void ppp(String s) {
-      System.out.println("[ExponentTest] " + s);
-    }
-    
-    private double myExpFunction(double exponent) {
-      return Math.exp(exponent);
-    }
-
-}
diff --git a/test/src/test/tmp/Fixturable.java b/test/src/test/tmp/Fixturable.java
deleted file mode 100644
index c546861..0000000
--- a/test/src/test/tmp/Fixturable.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Configuration;
-
-public class Fixturable {
-  @Configuration(beforeTest=true, groups="fixture")
-  public void setupFixture() { 
-    ppp("SETUP");
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[Fixturable] " + s);
-  }
-}
diff --git a/test/src/test/tmp/IgnoreUntil.java b/test/src/test/tmp/IgnoreUntil.java
deleted file mode 100644
index 74b34f6..0000000
--- a/test/src/test/tmp/IgnoreUntil.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.tmp;
-
-import static java.lang.annotation.ElementType.CONSTRUCTOR;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({METHOD, TYPE, CONSTRUCTOR})
-public @interface IgnoreUntil {
-
-  /**
-   * Format:  hhmm
-   */
-  public String time();
-}
diff --git a/test/src/test/tmp/ParamTest.java b/test/src/test/tmp/ParamTest.java
deleted file mode 100644
index cd48963..0000000
--- a/test/src/test/tmp/ParamTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package test.tmp;
-
-import org.testng.Reporter;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class ParamTest {
-  
-  @Test(dataProvider="dp")
-  public void f(String s, int n) {
-//    if ("Alois".equals(s)) assert false;
-    Reporter.log("CALL " + n);
-    ppp("TEST : " + s);
-  }
-  
-  @DataProvider(name="dp")
-  public Object[][] create() {
-    return new Object[][] {
-        new Object[] { "Cedric", 36},
-        new Object[] {"Alois", 35},
-    };
-  }
-
-  private void ppp(String string) {
-    System.err.println("[ParamTest] " + string);
-  }
-  
-}
diff --git a/test/src/test/tmp/ParentTest.java b/test/src/test/tmp/ParentTest.java
deleted file mode 100644
index acdd2bb..0000000
--- a/test/src/test/tmp/ParentTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
-public class ParentTest {
-
-  @Configuration(beforeTestMethod = true)
-  public void btm1() {
-    ppp("PARENT BEFORE TEST");
-  }
-  
-  @Configuration(afterTestMethod = true)
-  public void atm1() {
-    ppp("PARENT AFTER TEST");
-  }
-  
-  @Test
-  public void t1() {
-    ppp("TEST PARENT");
-  }
-
-  private void ppp(String string) {
-    System.out.println("[Parent] " + string);
-  }
-  
-  
-
-}
diff --git a/test/src/test/tmp/RegisterCommandTest.java b/test/src/test/tmp/RegisterCommandTest.java
deleted file mode 100644
index 36e3fae..0000000
--- a/test/src/test/tmp/RegisterCommandTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.tmp;
-
-import org.testng.ITestContext;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
- at Test(groups = { "NewUser" })
-public class RegisterCommandTest {
-
-//  Logger l = LoggerFactory.getLogger(this.getClass());
-
-  @BeforeClass
-  public void beforeClass(ITestContext itc) {
-    System.out.println("BEFORECLASS getting injector from context");
-//    m_inj = (Injector) itc.getAttribute("injector");
-//    m_inj.injectMembers(this);
-
-  }
-
-  public void testExecute(ITestContext itc) throws Exception {
-    System.out.println("TESTEXECUTE do somthing");
-  }
-}
-
diff --git a/test/src/test/tmp/RetryAnalyzer.java b/test/src/test/tmp/RetryAnalyzer.java
deleted file mode 100644
index b44395f..0000000
--- a/test/src/test/tmp/RetryAnalyzer.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package test.tmp;
-
-import org.testng.IRetryAnalyzer;
-import org.testng.ITestResult;
-
-public class RetryAnalyzer implements IRetryAnalyzer {
-
-  public boolean retry(ITestResult result) {
-    System.out.println("retry()");
-    return true;
-  }
-
-}
diff --git a/test/src/test/tmp/StaticInitializerTest.java b/test/src/test/tmp/StaticInitializerTest.java
deleted file mode 100644
index 87bb7ec..0000000
--- a/test/src/test/tmp/StaticInitializerTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Test;
-
- at Test
-public class StaticInitializerTest {
-
-    static {
-      foo();
-    }
-
-    public void testMe() {
-        System.err.println("**** testMe ****");
-    }
-    
-    private static void foo() {
-      throw new RuntimeException("FAILING");
-    }
-} 
\ No newline at end of file
diff --git a/test/src/test/tmp/Sub.java b/test/src/test/tmp/Sub.java
deleted file mode 100644
index cb64957..0000000
--- a/test/src/test/tmp/Sub.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.tmp;
-
-import org.testng.Assert;
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
- at Test(groups = {"sub"})
-public class Sub extends Base {
-  boolean m_beforeTest;
-  boolean m_afterTest;
-
-    @Configuration(beforeTestClass = true)
-    public void subSetup() {
-        System.out.println("sub before class");
-    }
-
-    @Configuration(afterTestClass = true)
-    public void subTeardown() {
-        System.out.println("sub after class");
-    }
-
-    public void subTest() {
-        System.out.println ("sub test");
-    }
-    
-    @Configuration(afterSuite = true) 
-    public void verify() {
-      Assert.assertTrue(m_beforeTest);
-      Assert.assertTrue(m_afterTest);
-    }
-}
diff --git a/test/src/test/tmp/Test0.java b/test/src/test/tmp/Test0.java
deleted file mode 100644
index f60649c..0000000
--- a/test/src/test/tmp/Test0.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Configuration;
-import org.testng.annotations.Test;
-
-public class Test0 {
-
-  @Configuration(beforeTest = true)
-  public void setup() {
-          System.out.println("setup");
-  }
-
-  @Test(groups = { "G0" })
-  public void test() {
-          System.out.println("Test0.test");
-  }
-
-  @Configuration(afterTest = true)
-  public void tearDown() {
-          System.out.println("tearDown");
-  }
-
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/Test1.java b/test/src/test/tmp/Test1.java
deleted file mode 100644
index 22ecd68..0000000
--- a/test/src/test/tmp/Test1.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Test;
-
- at Test(dependsOnGroups = { "G0" })
-public class Test1 {
-
-       public void test() {
-               System.out.println("Test1.test");
-       }
-
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/TestA.java b/test/src/test/tmp/TestA.java
deleted file mode 100644
index 0818a2f..0000000
--- a/test/src/test/tmp/TestA.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class TestA {
-    @BeforeClass
-    public void insertA() {
-        // Inserts an entity 'A'. This is an expensive operation.
-        // After this, the entity 'A' is the first row on the table.
-    }
-
-    @Test
-    public void testGetA() {
-        // Checks that 'A' is the first row on the table, and loads it.
-    }
-
-    @Test(dependsOnMethods = "testGetA")
-    public void testViewA_Details1() {
-        // Loads the first row (assumed A) and checks some details
-    }
-
-    @Test(dependsOnMethods = "testGetA")
-    public void testViewA_Details2() {
-        // Loads the first row (assumed A) and checks some details
-    }
-
-    @Test(dependsOnMethods = "testGetA")
-    public void testViewA_Details3() {
-        // Loads the first row (assumed A) and checks some details
-    }
-
-    @Test(dependsOnMethods = "testGetA")
-    public void testViewA_Details4() {
-        // Loads the first row (assumed A) and checks some details
-    }
-}
diff --git a/test/src/test/tmp/TestB.java b/test/src/test/tmp/TestB.java
deleted file mode 100644
index dfedb3a..0000000
--- a/test/src/test/tmp/TestB.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class TestB {
-    @BeforeClass
-    public void insertB() {
-        // Inserts an entity 'B'. This is an expensive operation.
-        // After this, the entity 'B' is the first row on the table.
-    }
-
-    @Test
-    public void testGetB() {
-        // Checks that 'B' is the first row on the table, and loads it.
-    }
-
-    @Test(dependsOnMethods = "testGetB")
-    public void testViewB_Details1() {
-        // Loads the first row (assumed B) and checks some details
-    }
-
-    @Test(dependsOnMethods = "testGetB")
-    public void testViewB_Details2() {
-        // Loads the first row (assumed B) and checks some details
-    }
-
-    @Test(dependsOnMethods = "testGetB")
-    public void testViewB_Details3() {
-        // Loads the first row (assumed B) and checks some details
-    }
-
-    @Test(dependsOnMethods = "testGetB")
-    public void testViewB_Details4() {
-    }
-
-}
diff --git a/test/src/test/tmp/TestCaseFactory.java b/test/src/test/tmp/TestCaseFactory.java
deleted file mode 100644
index 64864e3..0000000
--- a/test/src/test/tmp/TestCaseFactory.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Factory;
-import org.testng.annotations.Test;
-
-public class TestCaseFactory {
-  class MyTestClass {
-    @Test
-    public void testAll() {
-    }
-  }
-
-  @Factory
-  public Object[] createTestCases() {
-    Object[] testCases = new Object[1];
-    testCases[0] = new MyTestClass() {
-    };
-    return testCases;
-  }
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/TestFixture.java b/test/src/test/tmp/TestFixture.java
deleted file mode 100644
index 5f0916c..0000000
--- a/test/src/test/tmp/TestFixture.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.Configuration;
-
-public class TestFixture {
-  
-  public static int globalCallSequence = 0;
-  
-  public static int printGlobalCallSequence(String methodName) {
-    globalCallSequence++;
-    System.err.println("*** " + methodName + ": globalCallSequence=" + globalCallSequence);
-    return globalCallSequence;
-  }
-  
-  public int fixtureBeforeTestCallSequence;
-
-  @Configuration(beforeTest=true, groups="fixture")
-  public void beforeTest() {
-    fixtureBeforeTestCallSequence = printGlobalCallSequence("TestFixture.beforeTest");
-  }
-  
-  public int getSomeRandomValue() {
-    return 20;
-  }
-  
-}
diff --git a/test/src/test/tmp/TestNGBug.java b/test/src/test/tmp/TestNGBug.java
deleted file mode 100644
index 8cf04b0..0000000
--- a/test/src/test/tmp/TestNGBug.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.tmp;
-
-import org.testng.Reporter;
-import org.testng.annotations.Test;
-
-public class TestNGBug {
-//  @Configuration(beforeTestMethod = true)
-  public void init() {
-    ppp("Base.init()");
-  }
-
-  @Test
-  public void test1() {
-    Reporter.log("Child.test1");
-  }
-
-  @Test(enabled = false)
-  public void test2() {
-    Reporter.log("Child.test2");
-  }
-  
-  @Test(groups = "a")
-  public void test3() {
-    Reporter.log("Child.test3");
-  }
-
-  private void ppp(String string) {
-    System.out.println("[TestNGBug] " + string);
-  }
-}
diff --git a/test/src/test/tmp/Test_TestListenerAppender.java b/test/src/test/tmp/Test_TestListenerAppender.java
deleted file mode 100644
index 9c53932..0000000
--- a/test/src/test/tmp/Test_TestListenerAppender.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.tmp;
-
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class Test_TestListenerAppender {
-
-  @DataProvider(name = "test1")
-  public Object[][] createData1() {
-//      throw new RuntimeException("Intentionally thrown exception");
-       return new Object[][] { { "Cedric", new Integer(36) }, {"Anne", new Integer(37) }, };
-  }
-
-  @Test(dataProvider = "test1")
-  public void verifyData1(String n1, Integer n2) {
-      System.out.println(n1 + " " + n2);
-  }
-}
diff --git a/test/src/test/tmp/TimeBombTest.java b/test/src/test/tmp/TimeBombTest.java
deleted file mode 100644
index 30d076e..0000000
--- a/test/src/test/tmp/TimeBombTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package test.tmp;
-
-import java.lang.reflect.Method;
-import java.util.Calendar;
-
-import org.testng.annotations.Test;
-
-public class TimeBombTest {
-
-  @IgnoreUntil(time = "1022")
-  @Test
-  public void timeBomb() throws SecurityException, NoSuchMethodException {
-    Method m = TimeBombTest.class.getMethod("timeBomb", new Class[0]);
-    IgnoreUntil t = m.getAnnotation(IgnoreUntil.class);
-    long now = Calendar.getInstance().getTimeInMillis();
-    long l = parseTime(t.time());
-    ppp("IGNORE:" + (now < l));
-  }
-
-  private long parseTime(String string) {
-    int hour = Integer.parseInt(string.substring(0, 2)); 
-    int minute = Integer.parseInt(string.substring(2));
-    Calendar result = Calendar.getInstance();
-    result.set(Calendar.HOUR_OF_DAY, hour);
-    result.set(Calendar.MINUTE, minute);
-    
-    return result.getTimeInMillis();
-  }
-
-  private void ppp(String string) {
-    System.out.println("[TimeBombTest] " + string);
-  }
-  
-}
-
-
diff --git a/test/src/test/tmp/Tmp.java b/test/src/test/tmp/Tmp.java
deleted file mode 100644
index b686ae2..0000000
--- a/test/src/test/tmp/Tmp.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package test.tmp;
-
-import java.util.Random;
-
-import org.testng.annotations.Test;
-
-public class Tmp {
-  
-  @Test(invocationCount = 10, threadPoolSize = 5)
-  public void f() {
-    ppp("START " + Thread.currentThread().getId());
-    try {
-      Thread.sleep(Math.abs(new Random().nextInt() % 300));
-    }
-    catch (InterruptedException e) {
-      e.printStackTrace();
-    }
-    ppp("END " + Thread.currentThread().getId());
-  }
-
-  private void ppp(String string) {
-    System.out.println("[Tmp] " + string);
-  }
-
-}
diff --git a/test/src/test/tmp/Tn.java b/test/src/test/tmp/Tn.java
deleted file mode 100644
index f1130b3..0000000
--- a/test/src/test/tmp/Tn.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.tmp;
-
-import org.testng.Reporter;
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-public class Tn {
-  @Test (groups = {"g1"})
-  public void m1() {
-  System.out.println("1");
- }
-
- @Test (groups = {"g1"}, dependsOnMethods="m1")
-  public void m2() {
-  System.out.println("2");
- }
-
- @Parameters(value = "param")
- @Test (groups = {"g2"})
-  public void m3(String param) {
-  System.out.println("3");
-  Reporter.log("M3 WAS CALLED");
- }
-}
diff --git a/test/src/test/tmp/p1/ContainerTest.java b/test/src/test/tmp/p1/ContainerTest.java
deleted file mode 100644
index 46cff50..0000000
--- a/test/src/test/tmp/p1/ContainerTest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.tmp.p1;
-
-import static org.testng.AssertJUnit.assertNotNull;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-public class ContainerTest {
-
-    @BeforeSuite
-    public void startup() {
-        assertNotNull(null);
-    }
-
-    @AfterSuite
-    public void shutdown() {
-        assertNotNull(null);
-    }
-}
diff --git a/test/src/test/tmp/p2/ServiceTest.java b/test/src/test/tmp/p2/ServiceTest.java
deleted file mode 100644
index 0fc3017..0000000
--- a/test/src/test/tmp/p2/ServiceTest.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.tmp.p2;
-
-import org.testng.annotations.Test;
-
-import static org.testng.AssertJUnit.assertNotNull;
-
-public class ServiceTest {
-  @Test(groups = {"group1"})
-    public void service() {
-        assertNotNull(null);
-    }
-}
\ No newline at end of file
diff --git a/test/src/test/tmp/verify/Verify.java b/test/src/test/tmp/verify/Verify.java
deleted file mode 100644
index f5ad0c1..0000000
--- a/test/src/test/tmp/verify/Verify.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package test.tmp.verify;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target(java.lang.annotation.ElementType.METHOD)
-public @interface Verify {
-}
diff --git a/test/src/test/tmp/verify/VerifyInterceptor.java b/test/src/test/tmp/verify/VerifyInterceptor.java
deleted file mode 100644
index 8be3ec7..0000000
--- a/test/src/test/tmp/verify/VerifyInterceptor.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package test.tmp.verify;
-
-import org.testng.IMethodInstance;
-import org.testng.IMethodInterceptor;
-import org.testng.ITestContext;
-import org.testng.ITestNGMethod;
-import org.testng.TestNGUtils;
-import org.testng.collections.Maps;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-public class VerifyInterceptor implements IMethodInterceptor {
-
-  /**
-   * @return the list of methods received in parameters with all methods
-   * annotated with @Verify inserted after each of these test methods.
-   * 
-   * This happens in two steps:
-   * - Find all the methods annotated with @Verify in the classes that contain test methods
-   * - Insert these verify methods after each method passed in parameter
-   * These @Verify methods are stored in a map keyed by the class in order to avoid looking them
-   * up more than once on the same class.
-   */
-  public List<IMethodInstance> intercept(List<IMethodInstance> methods,
-      ITestContext context) {
-
-    List<IMethodInstance> result = new ArrayList<IMethodInstance>();
-    Map<Class<?>, List<IMethodInstance>> verifyMethods = Maps.newHashMap();
-    for (IMethodInstance mi : methods) {
-      ITestNGMethod tm = mi.getMethod();
-      List<IMethodInstance> verify = verifyMethods.get(tm.getRealClass());
-      if (verify == null) {
-        verify = findVerifyMethods(tm.getRealClass(), tm);
-      }
-      result.add(mi);
-      result.addAll(verify);
-    }
-
-    return result;
-  }
-
-  /**
-   * @return all the @Verify methods found on @code{realClass}
-   */
-  private List<IMethodInstance> findVerifyMethods(Class realClass, final ITestNGMethod tm) {
-    List<IMethodInstance> result = new ArrayList<IMethodInstance>();
-    for (final Method m : realClass.getDeclaredMethods()) {
-      Annotation a = m.getAnnotation(Verify.class);
-      if (a != null) {
-        final ITestNGMethod vm = TestNGUtils.createITestNGMethod(tm, m);
-        result.add(new IMethodInstance() {
-
-          public Object[] getInstances() {
-            return tm.getInstances();
-          }
-
-          public ITestNGMethod getMethod() {
-            return vm;
-          }
-
-          public int compareTo(IMethodInstance o) {
-            if (getInstances()[0] == o.getInstances()[0]) return 0;
-            else return -1;
-          }
-        });
-      }
-    }
-
-    return result;
-  }
-}
diff --git a/test/src/test/tmp/verify/VerifyTest.java b/test/src/test/tmp/verify/VerifyTest.java
deleted file mode 100644
index dc10eeb..0000000
--- a/test/src/test/tmp/verify/VerifyTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.tmp.verify;
-
-import org.testng.annotations.Test;
-
-public class VerifyTest {
-
-  @Test
-  public void f2() {
-    System.out.println("f2()");
-  }
-
-  @Test
-  public void f1() {
-    System.out.println("f1()");
-  }
-
-  @Verify
-  public void verify() {
-//    throw new RuntimeException();
-//    System.out.println("verify()");
-  }
-}
diff --git a/test/src/test/triangle/Base.java b/test/src/test/triangle/Base.java
deleted file mode 100644
index 080cf4c..0000000
--- a/test/src/test/triangle/Base.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.triangle;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class Base {
-  protected boolean m_isInitialized = false;
-  
-  @BeforeSuite
-  public void beforeSuite() {
-    CountCalls.numCalls = 0;
-  }  
-  
-  @BeforeClass
-  public void initBeforeTestClass() {
-    m_isInitialized = true;
-  }
-  
-  @AfterClass
-  public void postAfterTestClass() {
-    CountCalls.incr();
-  }
-
-  private static void ppp(String s) {
-    System.out.println("[Base] " + s);
-  }
-}
diff --git a/test/src/test/triangle/CheckCount.java b/test/src/test/triangle/CheckCount.java
deleted file mode 100644
index 2de3725..0000000
--- a/test/src/test/triangle/CheckCount.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package test.triangle;
-
-import org.testng.annotations.Parameters;
-import org.testng.annotations.Test;
-
-/**
- * this test checks the CountCalls's static counter to see if we got the
- * expected number of calls
- */
-public class CheckCount {
-
-  @Test(parameters = { "expected-calls" })
-  public void testCheckCountDeprecated(String expectedCalls){
-    try {
-      
-      //      System.out.println("\n\ntestCheckCount time = " + System.currentTimeMillis());
-      int i = (Integer.valueOf(expectedCalls)).intValue();
-      int numCalls =  CountCalls.getNumCalls();
-      assert (numCalls == i)  : "Count calls expected " + i + " but got " + numCalls;
-    } 
-    catch (NumberFormatException nfe) {
-      assert false : "CountCalls needs an expected-calls numeric parameter";
-    }
-  }
-
-  @Parameters({ "expected-calls" })
-  @Test
-  public void testCheckCount(String expectedCalls){
-    try {
-      
-      //      System.out.println("\n\ntestCheckCount time = " + System.currentTimeMillis());
-      int i = (Integer.valueOf(expectedCalls)).intValue();
-      int numCalls =  CountCalls.getNumCalls();
-      assert (numCalls == i)  : "Count calls expected " + i + " but got " + numCalls;
-    } 
-    catch (NumberFormatException nfe) {
-      assert false : "CountCalls needs an expected-calls numeric parameter";
-    }
-  }
-  
-}
\ No newline at end of file
diff --git a/test/src/test/triangle/Child1.java b/test/src/test/triangle/Child1.java
deleted file mode 100644
index 3830bfa..0000000
--- a/test/src/test/triangle/Child1.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.triangle;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class Child1 extends Base {
-  @Test
-  public void child1() {
-    assert m_isInitialized : "Wasn't initialized correctly " + hashCode() + " " + getClass();
-
-  }
-
-  @Test
-  public void child1a() {
-    assert m_isInitialized : "Wasn't initialized correctly " + hashCode() + " " + getClass();
-  }
-
-}
diff --git a/test/src/test/triangle/Child2.java b/test/src/test/triangle/Child2.java
deleted file mode 100644
index ad988a0..0000000
--- a/test/src/test/triangle/Child2.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package test.triangle;
-
-import org.testng.annotations.*;
-
-/**
- * This class
- * 
- * @author cbeust
- */
-public class Child2 extends Base {
-
-  @Test
-  public void child2() {
-    assert m_isInitialized : "Wasn't initialized correctly";
-  }
-}
diff --git a/test/src/test/triangle/CountCalls.java b/test/src/test/triangle/CountCalls.java
deleted file mode 100644
index 765d88f..0000000
--- a/test/src/test/triangle/CountCalls.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test.triangle;
-
-
-/**
- * count the number of times something is called
- * used to check whether certain methods have been called
- */
-public class CountCalls {
-  static int numCalls = 0;
-  
-  public static void incr () {
-    numCalls++;
-  }
-  
-  public static int getNumCalls() { 
-    return numCalls;
-  }
-}
diff --git a/test/src/test/uniquesuite/BaseAfter.java b/test/src/test/uniquesuite/BaseAfter.java
deleted file mode 100644
index a31529a..0000000
--- a/test/src/test/uniquesuite/BaseAfter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-public class BaseAfter {
-  public static int m_afterCount = 0;
-
-  @BeforeSuite
-  public void beforeSuite() {
-    m_afterCount = 0;
-  }
-
-  @AfterSuite
-  public void incrementAfter() {
-    m_afterCount++;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[BaseAfter] " + s);
-  }
-}
diff --git a/test/src/test/uniquesuite/BaseBefore.java b/test/src/test/uniquesuite/BaseBefore.java
deleted file mode 100644
index bf3e5c4..0000000
--- a/test/src/test/uniquesuite/BaseBefore.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-public class BaseBefore {
-  public static int m_beforeCount = 0;
-  public static int m_afterCount = 0;
-
-  @BeforeSuite
-  public void incrementBefore() {
-    m_beforeCount++;
-  }
-  
-  @AfterSuite
-  public void incrementAfter() {
-    m_afterCount++;
-  }
-  
-  private static void ppp(String s) {
-    System.out.println("[Base] " + s);
-  }
-}
diff --git a/test/src/test/uniquesuite/TestAfter.java b/test/src/test/uniquesuite/TestAfter.java
deleted file mode 100644
index 2c12488..0000000
--- a/test/src/test/uniquesuite/TestAfter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.Assert;
-import org.testng.TestNG;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.Test;
-
-import testhelper.OutputDirectoryPatch;
-
-public class TestAfter {
-
-  @Test
-  public void testAfter() {
-    TestNG tng = new TestNG();
-    tng.setOutputDirectory(OutputDirectoryPatch.getOutputDirectory());
-    tng.setTestClasses(new Class[] { TestAfter1.class, TestAfter2.class });
-    tng.setVerbose(0);
-    tng.run();
-    Assert.assertEquals(BaseAfter.m_afterCount, 1);
-  }
-  
-  @AfterTest
-  public void afterTest() {
-    BaseAfter.m_afterCount = 0;
-    BaseBefore.m_beforeCount = 0;
-    BaseBefore.m_afterCount = 0;
-  }
-}
-
-/////
-
diff --git a/test/src/test/uniquesuite/TestAfter1.java b/test/src/test/uniquesuite/TestAfter1.java
deleted file mode 100644
index 2ffa8a6..0000000
--- a/test/src/test/uniquesuite/TestAfter1.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.annotations.Test;
-
-public class TestAfter1 extends BaseAfter {
-
-  @Test
-  public void verify() {
-  }
-}
diff --git a/test/src/test/uniquesuite/TestAfter2.java b/test/src/test/uniquesuite/TestAfter2.java
deleted file mode 100644
index 2273c75..0000000
--- a/test/src/test/uniquesuite/TestAfter2.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.annotations.Test;
-
-public class TestAfter2 extends BaseAfter {
-
-  @Test
-  public void verify() {
-  }
-}
diff --git a/test/src/test/uniquesuite/TestBefore1.java b/test/src/test/uniquesuite/TestBefore1.java
deleted file mode 100644
index 635531f..0000000
--- a/test/src/test/uniquesuite/TestBefore1.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class TestBefore1 extends BaseBefore {
-
-  @Test
-  public void verify() {
-    Assert.assertEquals(m_beforeCount, 1);
-  }
-}
diff --git a/test/src/test/uniquesuite/TestBefore2.java b/test/src/test/uniquesuite/TestBefore2.java
deleted file mode 100644
index aa3454b..0000000
--- a/test/src/test/uniquesuite/TestBefore2.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.uniquesuite;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class TestBefore2 extends BaseBefore {
-
-  @Test
-  public void verify() {
-    Assert.assertEquals(m_beforeCount, 1);
-  }
-}
diff --git a/test/src/test/v6/A.java b/test/src/test/v6/A.java
deleted file mode 100644
index 6e2b223..0000000
--- a/test/src/test/v6/A.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package test.v6;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterGroups;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeGroups;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-public class A {
-
-  @Test(dependsOnMethods = "fa1")
-  public void fa2() {
-  }
-
-  @Test(groups = "1")
-  public void fa1() {}
-  
-  @Test public void fa3() {}
-  
-  @BeforeGroups("1")
-  public void beforeGroups() {}
-  
-  @AfterGroups("1")
-  public void afterGroups() {}
-
-  @BeforeMethod
-  public void beforeMethod() {}
-  
-  @AfterMethod
-  public void afterMethod() {}
-  
-  @BeforeSuite
-  public void beforeSuite() {}
-  
-  @AfterSuite
-  public void afterSuite() {}
-  
-  @BeforeClass
-  public void beforeClass() {}
-  
-  @AfterClass
-  public void afterClass() {}
-}
diff --git a/test/src/test/v6/B.java b/test/src/test/v6/B.java
deleted file mode 100644
index fde2b81..0000000
--- a/test/src/test/v6/B.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package test.v6;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-public class B {
-
-  @Test(dependsOnMethods = "fb1")
-  public void fb2() {
-  }
-
-  @Test(groups = "1")
-  public void fb1() {}
-  
-  @Test public void fb3() {}
-
-  @BeforeMethod
-  public void beforeMethod() {}
-  
-  @AfterMethod(groups = "1")
-  public void afterMethod() {}
-  
-  @BeforeSuite
-  public void beforeSuite() {}
-  
-  @BeforeClass
-  public void beforeClass() {}
-  
-  @AfterClass
-  public void afterClass() {}
-}
diff --git a/test/src/test/v6/C.java b/test/src/test/v6/C.java
deleted file mode 100644
index e116b7a..0000000
--- a/test/src/test/v6/C.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package test.v6;
-
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-public class C {
-
-  @BeforeTest
-  public void beforeTest() {}
-  
-  @AfterTest
-  public void afterTest() {}
-  
-  @Test
-  public void fc1() {}
-  
-  @BeforeSuite
-  public void beforeSuite() {}
-  
-  @AfterSuite
-  public void afterSuite() {}
-
-}
diff --git a/test/src/test/verify/Verifier.java b/test/src/test/verify/Verifier.java
deleted file mode 100644
index a04efca..0000000
--- a/test/src/test/verify/Verifier.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.verify;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({METHOD, TYPE})
-public @interface Verifier {
-}
diff --git a/test/src/test/verify/Verify.java b/test/src/test/verify/Verify.java
deleted file mode 100644
index 982a66f..0000000
--- a/test/src/test/verify/Verify.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package test.verify;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
- at Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
- at Target({METHOD, TYPE})
-public @interface Verify {
-}
diff --git a/test/src/test/verify/VerifyMethodInterceptor.java b/test/src/test/verify/VerifyMethodInterceptor.java
deleted file mode 100644
index b3f2ffd..0000000
--- a/test/src/test/verify/VerifyMethodInterceptor.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package test.verify;
-
-import org.testng.IMethodInstance;
-import org.testng.IMethodInterceptor;
-import org.testng.ITestContext;
-import org.testng.collections.Lists;
-
-import java.util.List;
-
-public class VerifyMethodInterceptor implements IMethodInterceptor {
-  public List<IMethodInstance> intercept(List<IMethodInstance> methods,
-      ITestContext context) {
-    List<IMethodInstance> result = Lists.newArrayList();
-    IMethodInstance verifier = null;
-
-    // Doing a na�ve approach here: we run through the list of methods
-    // twice, once to find the verifier and once more to actually create
-    // the result. Obviously, this can be done with just one loop
-    for (IMethodInstance m : methods) {
-      if (m.getMethod().getMethod().getAnnotation(Verifier.class) != null) {
-        verifier = m;
-        break;
-      }
-    }
-
-    // Create the result with each @Verify method followed by a call
-    // to the @Verifier method
-    for (IMethodInstance m : methods) {
-      if (m != verifier) {
-        result.add(m);
-      }
-
-      if (m.getMethod().getMethod().getAnnotation(Verify.class) != null) {
-        result.add(verifier);
-      }
-    }
-
-    return result;
-  }
-  
-}
\ No newline at end of file
diff --git a/test/src/test/verify/VerifyNoListenersSampleTest.java b/test/src/test/verify/VerifyNoListenersSampleTest.java
deleted file mode 100644
index 6f64ebf..0000000
--- a/test/src/test/verify/VerifyNoListenersSampleTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package test.verify;
-
-import org.testng.annotations.Test;
-
-/**
- * Same class as VerifySampleTest but without the @Listeners annotation.
- */
-public class VerifyNoListenersSampleTest {
-
-  @Verify
-  @Test
-  public void f1() {
-    log("f1");  
-  }
-
-  @Verify
-  @Test
-  public void f2() {
-    log("f2");  
-  }
-
-  @Verifier
-  @Test
-  public void verify() {
-    log("Verifying");
-  }
-
-  private void log(String string) {
-    if (false) {
-      System.out.println(string);
-    }
-  }
-}
diff --git a/test/src/test/verify/VerifySampleTest.java b/test/src/test/verify/VerifySampleTest.java
deleted file mode 100644
index c6aa8da..0000000
--- a/test/src/test/verify/VerifySampleTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package test.verify;
-
-import org.testng.annotations.Listeners;
-import org.testng.annotations.Test;
-
-/**
- * Illustrate the implementation of a @Verify/@Verifier test.
- * 
- * One method should be annotated with @Verifier and then each test method
- * annotated with @Verify will be followed with a call to the @Verifier
- * method.
- */
- at Listeners(VerifyMethodInterceptor.class)
-public class VerifySampleTest {
-
-  @Verify
-  @Test
-  public void f1() {
-    log("f1");  
-  }
-
-  @Verify
-  @Test
-  public void f2() {
-    log("f2");  
-  }
-
-  @Verifier
-  @Test
-  public void verify() {
-    log("Verifying");
-  }
-
-  private void log(String string) {
-    if (false) {
-      System.out.println(string);
-    }
-  }
-}
diff --git a/test/src/test/verify/VerifyTest.java b/test/src/test/verify/VerifyTest.java
deleted file mode 100644
index aed9b1c..0000000
--- a/test/src/test/verify/VerifyTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.verify;
-
-import org.testng.Assert;
-import org.testng.TestListenerAdapter;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-
-import test.SimpleBaseTest;
-
-public class VerifyTest extends SimpleBaseTest {
-
-  private void runTest(Class<?> cls, int expected) {
-    TestNG tng = create(cls);
-    TestListenerAdapter tla = new TestListenerAdapter();
-    tng.addListener(tla);
-    tng.run();
-    
-    Assert.assertEquals(tla.getPassedTests().size(), expected);
-  }
-
-  @Test
-  public void verifyWithAnnotation() {
-    runTest(VerifySampleTest.class, 4);
-  }
-
-  @Test
-  public void verifyWithoutAnnotation() {
-    runTest(VerifyNoListenersSampleTest.class, 3);
-  }
-}
diff --git a/test/src/test/xml/XmlVerifyTest.java b/test/src/test/xml/XmlVerifyTest.java
deleted file mode 100644
index fb75f6c..0000000
--- a/test/src/test/xml/XmlVerifyTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package test.xml;
-
-import org.testng.annotations.Test;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-public class XmlVerifyTest {
-
-  @Test
-  public void simple() {
-    XmlSuite suite = new XmlSuite();
-    XmlTest test = new XmlTest(suite);
-    XmlClass xClass = new XmlClass(XmlVerifyTest.class);
-    test.getXmlClasses().add(xClass);
-    test.getExcludedGroups().add("fast");
-    test.setVerbose(5);
-    
-    suite.toXml();
-  }
-}
diff --git a/test/src/testhelper/OutputDirectoryPatch.java b/test/src/testhelper/OutputDirectoryPatch.java
deleted file mode 100644
index c6a9039..0000000
--- a/test/src/testhelper/OutputDirectoryPatch.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package testhelper;
-
-/**
- * <code>OutputDirectoryPatch</code> is a helper class to provide an output directory
- * for TestNG tests that explicitly create an instance of TestNG and do not know the
- * output directory specified for the test.
- *
- * @author cquezel
- * @since 4.8
- */
-public final class OutputDirectoryPatch {
-  
-  /** The default output directory name if none was specified. We should use something
-   * different than "test-output" to make it clear that the output directory 
-   * has not been set. */
-  private static final String DEFAULT_OUTPUT_DIRECTORY = "test-output";
-
-  /** The name of the System property used to store the output directory. */
-  private static final String OUTPUT_DIRECTORY_PROPERTY_NAME = "testng.outputDir";
-  
-  /**
-   * Private constructor to disable instantiation.
-   *
-   * @since 4.8
-   */
-  private OutputDirectoryPatch() {
-    // Hide constructor
-  }
-  
-  /**
-   * Returns the output directory as specified for the current test.
-   *
-   * @return the output directory as specified for the current test.
-   * @since 4.8
-   */
-  public static String getOutputDirectory() {
-    String tmp = System.getProperty(OUTPUT_DIRECTORY_PROPERTY_NAME);
-    if (tmp != null) {
-      return tmp;
-    }
-//    System.err.println("System property: " + OUTPUT_DIRECTORY_PROPERTY_NAME 
-//        + " has not been set. Using default path: " + DEFAULT_OUTPUT_DIRECTORY);
-    
-//    new Throwable("Stack is only to help locate the problem. No excpetion thrown.").printStackTrace(System.err);
-    return DEFAULT_OUTPUT_DIRECTORY;
-  }
-}
diff --git a/test/testng-annconv.xml b/test/testng-annconv.xml
deleted file mode 100644
index 10b509a..0000000
--- a/test/testng-annconv.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="Converter" verbose="3" parallel="false">
-  
-    <test name="AnnotationConverter">
-    <parameter name="source-directory" value="src/test/sample" />
-    <classes>
-    <class name="test.converter.AnnotationConverterTest" />
-    </classes>
-    </test>
-
-
-</suite>
-
diff --git a/test/testng-single.xml b/test/testng-single.xml
deleted file mode 100644
index 427fd14..0000000
--- a/test/testng-single.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-  
-<suite name="SingleSuite" verbose="2" parallel="tests" thread-count="2"
-    data-provider-thread-count="3">
-
-  <parameter name="n" value="42" />
-
-  <listeners>
-<!--
-    <listener class-name="test.methodinterceptors.FastTestsFirstInterceptor" />
-    <listener class-name="test.invokedmethodlistener.MyListener" />
--->  
-  </listeners>
-
-  <test name="Regression2">
-<!--
-    <packages>
-      <package name="test.testng355.org.apache.tapestry5" />
-      <package name="test.testng355.org.apache.tapestry5.dom" />
-    </packages>
-    <groups>
-      <run>
-        <exclude name="broken" />
-      </run>
-    </groups>
--->
-    <classes>
-      <class name="test.verify.VerifyTest"/>
-<!-- 
-      <class name="test.objectfactory.CombinedTestAndObjectFactoryTest" />
-      <class name="test.dataprovider.FailedDataProviderTest" />
-      <class name="test.regression.MyTestngTest2"/>
-      <class name="test.regression.BeforeTestFailingTest"/>
-      <class name="test.inject.InjectDataProviderTest"/>
-      <class name="test.dataprovider.IteratorParallelTest"/>
-      <class name="test.dependent.DepBugSampleTest" />
-      <class name="test.dependent.DepBugVerifyTest" />
-      <class name="test.methodinterceptors.FooTest" />
-      <class name="test.methodinterceptors.MethodInterceptorTest" />
-      <class name="test.dependent.DepBugSampleTest" />
-      <class name="test.dependent.DepBugVerifyTest" />
-      <class name="test.interleavedorder.InterleavedInvocationTest" />
-      <class name="test.interleavedorder.TestChild1" />
-      <class name="test.interleavedorder.TestChild2" />
-      <class name="test.interleavedorder.InterleavedInvocationTest" />
-      <class name="test.factory.FactoryOrderMainTest" />
-      <class name="test.priority.PriorityTest" />
-      <class name="test.failedreporter.FailedReporterTest" />
-        <methods>
-          <include name="verifyIPAddress" invocationNumbers="0 2" />
-        </methods>
-      </class>
-      <class name="test.testng355.org.apache.tapestry5.test.AA" />
-      <class name="test.invokedmethodlistener.Success" />
- -->
-    </classes>
-  </test>
-</suite>
-
diff --git a/test/testng-single2.xml b/test/testng-single2.xml
deleted file mode 100644
index 0238dc3..0000000
--- a/test/testng-single2.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<suite name="Timeout Tests" verbose="2">
-
-  <test name="TimeoutTest" time-out="1000">
-      <classes>
-          <class name="test.timeout.TestTimeOutSampleTest">
-              <methods>
-                <include name="timeoutTest"/>
-              </methods>
-          </class>
-      </classes>
-  </test>
-
-  <test name="NoTimeoutTest">
-      <classes>
-          <class name="test.timeout.TestTimeOutSampleTest">
-              <methods>
-                <include name="timeoutTest"/>
-              </methods>
-          </class>
-      </classes>
-  </test>
-    
-</suite>
diff --git a/test/testng.xml b/test/testng.xml
deleted file mode 100644
index acd52bd..0000000
--- a/test/testng.xml
+++ /dev/null
@@ -1,568 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-  
-<suite name="TestNG JDK 1.5" verbose="1" parallel="false" thread-count="2"
-    data-provider-thread-count="3">
-  
-  <test name="Nopackage">
-    <groups>
-      <run>
-        <include name="nopackage"/>
-      </run>
-    </groups>
-    <classes>
-      <class name="NoPackageTest" />
-    </classes>
-  </test>
-   
-  <parameter name="first-name" value="Cedric" />
-  
-  <test name="Regression1" >
-    <groups>
-      <define name="evenodd">
-        <include name="even" />
-        <include name="odd" />
-      </define>      
-      <run>
-        <exclude name="excludeThisGroup" />
-      </run>
-    </groups>
-    
-    <classes>
-      <class name="test.parameters.ParameterSample" />
-      <class name="test.parameters.ParameterTest" />
-      <class name="test.Test1" />
-      <class name="test.Test2" />
-      <class name="test.CtorCalledOnce" />
-      <class name="test.expectedexceptions.ExpectedExceptionsTest" />
-      <class name="test.access.PrivateAccessConfigurationMethods" />
-      <class name="test.expectedexceptions.WrappedExpectedException" />
-    </classes>
-  </test>
-  
-  <test name="Regression2">
-    <groups>
-      <run>
-        <exclude name="broken" />
-      </run>
-    </groups>
-    <classes>
-      <class name="test.Test1" />
-      <class name="test.MethodTest" />
-      <class name="test.sample.AfterClassCalledAtEnd"/>
-      <class name="test.GraphTest"/>
-      <class name="test.DynamicGraphTest"/>
-      <class name="test.configuration.BaseGroupsTest" />
-      <class name="test.configuration.BeforeClassThreadTest" />
-      <class name="test.configuration.BeforeTestOrderingTest" />
-      <class name="test.configuration.ConfigurationTest"/>
-      <class name="test.configuration.ExternalConfigurationClass"/>
-      <class name="test.configuration.GroupsTest"/>
-      <class name="test.configuration.MethodCallOrderTest"/>
-      <class name="test.configuration.MultipleBeforeGroupTest" />
-      <class name="test.configuration.ReflectMethodParametrizedConfigurationMethodTest" />
-      <class name="test.configuration.SuiteFactoryOnceTest" />
-      <class name="test.configuration.SuiteTest" />
-      <class name="test.configuration.VerifySuiteTest" />
-      <class name="test.privatemethod.PrivateMethodTest$PrivateMethodInnerTest"/>
-      <class name="test.multiple.TestMultiple"/>
-      <class name="test.ClassConfigurations"/>
-      <class name="test.alwaysrun.AlwaysRunTest"/>
-      <class name="test.conffailure.ConfigurationFailure" />
-      <class name="test.superclass.MainTest" />
-      <class name="test.superclass.Test3" />
-      <class name="test.failures.FailuresTest" />
-      <class name="test.mannotation.MAnnotationSampleTest" />
-      <class name="test.mannotation.MAnnotation2SampleTest" />
-      <class name="test.thread.ThreadPoolSizeTest" />
-      <class name="test.thread.SequentialTest" />
-      <class name="test.thread.ParallelTestTest" />
-      <class name="test.thread.FactoryTest" />
-      <class name="test.thread.DataProviderThreadPoolSizeTest" />
-      <class name="test.thread.MultiThreadedDependentTest" />
-      <class name="test.simple.IncludedExcludedTest" />
-      <class name="test.reports.ReportTest" />
-      <class name="test.annotationtransformer.AnnotationTransformerTest" />
-      <class name="test.jar.JarTest" />
-<!-- 
-      <class name="test.jarpackages.JarPackagesTest" />
- -->
-      <class name="test.xml.XmlVerifyTest" />
-      <class name="test.invokedmethodlistener.InvokedMethodListenerTest" />
-      <class name="test.testng249.VerifyTest"/>
-      <class name="test.testng195.AfterMethodTest" />
-      <class name="test.regression.BeforeTestFailingTest"/>
-      <class name="test.testng285.TestNG285Test" />
-      <class name="test.failedreporter.FailedReporterTest" />
-      <class name="test.attributes.AttributeTest"/>
-      <class name="test.verify.VerifyTest"/>
-    </classes>
-  </test>
-  
-  <test name="Injection">
-    <classes>
-      <class name="test.inject.InjectTestContextTest"/>
-      <class name="test.inject.InjectBeforeMethodTest"/>
-      <class name="test.inject.InjectTestResultTest" />
-      <class name="test.inject.InjectDataProviderTest"/>
-    </classes>
-  </test>
-
-	<!--  Keep this in its own <test> tag -->
-  <test name="BeforeMethod">
-    <classes>
-      <class name="test.configuration.BeforeMethodTest" />
-    </classes>      
-  </test>
-
-  <test name="Factory tests">
-		<classes>
-			<class name="test.factory.classconf.XClassOrderWithFactoryTest" />
-      <class name="test.factory.FactoryInterleavingTest"/>
-		</classes>
-	</test>
-  
-  <test name="Basic" >
-    <classes>
-      <class name="test.sample.Basic2" />
-      <class name="test.sample.Basic1" />
-      <class name="test.Misc" />
-    </classes>
-  </test>
-  
-  <test name="Exclusion">
-    <groups>
-      <run>
-        <exclude name="excludeThisGroup" />
-      </run>
-    </groups>
-    <classes>
-      <class name="test.Test2" />
-    </classes>
-  </test>
-  
-  <test name="Dependents">
-    <parameter name="foo" value="Cedric" />
-    <classes>
-      <class name="test.dependent.MissingGroupTest" />
-      <class name="test.dependent.MissingMethodTest" />
-      <class name="test.dependent.OrderMethodTest" />
-      <class name="test.dependent.DependentTest" />
-      <class name="test.dependent.SampleDependentMethods" />
-      <class name="test.dependent.SampleDependentMethods2" />
-      <class name="test.dependent.SampleDependentMethods3" />
-      <class name="test.dependent.SampleDependentConfigurationMethods" />
-      <class name="test.dependent.ClassDependsOnGroups"/>
-      <class name="test.dependent.DependentAlwaysRunTest" />
-      <class name="test.dependent.MultiGroupTest" />
-      <class name="test.dependent.ImplicitGroupInclusionTest" />
-      <class name="test.dependent.ClassWide1Test" />
-      <class name="test.dependent.ClassWide2Test" />
-      <class name="test.dependent.DepBugSampleTest" />
-      <class name="test.dependent.DepBugVerifyTest" />
-      <class name="test.dependent.DependsOnProtectedMethodTest" />
-      <class name="test.dependsongroup.DependsOnGroupsTest" />
-    </classes>      
-  </test>
-  
-  <test name="Inheritance">
-    <classes>
-      <class name="test.SampleInheritance" />
-      <class name="test.inheritance.ClassScopeTest" />
-    </classes>
-  </test>
-  
-  <!-- Test scopes -->  
-  
-  <parameter name="parameter" value="out" />
-
-  <test name="Test outer scope">
-    <groups>
-      <run>
-        <include name="outer-group" />
-      </run>
-    </groups>
-    <classes>
-      <class name="test.sample.Scope" />
-    </classes>
-  </test>
-  
-  <test name="Test inner scope">
-    <parameter name="parameter" value="in" />
-    <groups>
-      <run>
-        <include name="inner-group" />
-      </run>
-    </groups>
-    <classes>
-      <class name="test.sample.Scope" />
-    </classes>
-  </test>
-    
-  <test name="AfterClassCalledAtEnd">
-    <classes>
-      <class name="test.sample.AfterClassCalledAtEnd"/>
-    </classes>
-  </test>
-
-  <test name="Triangle">
-    <classes>
-      <class name="test.triangle.Child1" />
-      <class name="test.triangle.Child2" />
-    </classes>
-  </test>  
-
-  <!-- note that CheckTriangePost must be run sequentially after Triangle-->
-  <test name="CheckTrianglePost">
-    <parameter name="expected-calls" value="2" />
-    <classes>
-      <class name="test.triangle.CheckCount"/>
-    </classes>
-  </test>
-  
-  <!-- Test that we can declare groups and dependents on classes -->
-  
-  <test name="Test class groups 1" >
-    <classes>
-      <class name="test.classgroup.Second" />
-      <class name="test.classgroup.First" />
-    </classes>
-  </test>
-
-    <test name="Test class groups 2" >
-    <classes>
-      <class name="test.classgroup.First" />
-      <class name="test.classgroup.Second" />
-    </classes>
-  </test>
-  
-  <parameter name="factory-param" value="FactoryParam" />
-  <test name="Factory">
-    <classes>
-      <class name="test.factory.FactoryTest" />
-      <class name="test.factory.VerifyFactoryTest" />
-      <class name="test.factory.FactoryInSeparateClass" />
-      <class name="test.factory.Factory2Test" />
-	  
-      <class name="test.factory.FactoryWithInstanceInfoTest" />
-      <class name="test.factory.VerifyFactoryWithInstanceInfoTest" />
-      <class name="test.factory.TestClassAnnotationTest" />
-      
-      <class name="test.factory.FactoryWithDataProviderTest" />
-      <class name="test.factory.FactoryOrderMainTest" />
-      <class name="test.factory.FactoryFailureTest" />
-
-      <class name="test.factory.FactoryInSuperClassTest" />
-    </classes>
-  </test>
-
-  <test name="TimeOut">
-    <classes>
-      <class name="test.timeout.TimeOutTest" />
-      <class name="test.timeout.TimeOutFromXmlTest"/>
-    </classes>
-  </test>
-  
-  <test name="InvocationCount">
-    <parameter name="count" value="10" />
-    <classes>
-      <class name="test.InvocationAndSuccessPercentageTest" />
-      <class name="test.invocationcount.FailedInvocationCountTest" />
-      <class name="test.invocationcount.FirstAndLastTimeTest" />
-    </classes>
-  </test>
-
-  <!-- Tests for included and excluded methods -->
-  <test name="Method1">
-    <classes>
-        <class name="test.methods.SampleMethod1">
-          <methods>
-            <include name="shouldRun1" />
-            <include name="shouldRun2" />
-          </methods>
-        </class>
-          <class name="test.methods.VerifyMethod1" />
-    </classes>
-  </test>
-  
-  <test name="Method2">
-    <classes>
-        <class name="test.methods.SampleMethod1">
-          <methods>
-            <exclude name="shouldNotRun1" />
-            <exclude name="shouldNotRun2" />
-          </methods>
-        </class>
-        <class name="test.methods.VerifyMethod1" />
-    </classes>
-  </test>
-  
-  <test name="Method3">
-    <classes>
-        <class name="test.methods.SampleMethod1">
-          <methods>
-            <exclude name=".*Not.*" />
-          </methods>
-        </class>
-        <class name="test.methods.VerifyMethod1" />
-    </classes>
-  </test>
-
-  <test name="Object factory">
-    <classes>
-      <class name="test.objectfactory.CustomFactoryTest" />
-      <class name="test.objectfactory.CombinedTestAndObjectFactoryTest" />
-    </classes>
-  </test>
-  
-  <!-- Test parameters for constructors -->  
-  <parameter name="string" value="Cedric" />
-  <parameter name="int" value="42" />
-  <parameter name="boolean" value="true" />
-  <parameter name="byte" value="43" />
-  <parameter name="char" value="c" />
-  <parameter name="double" value="44.0" />
-  <parameter name="float" value="45.0" />
-  <parameter name="long" value="46" />
-  <parameter name="short" value="47" />
-
-  <test name="Parameters for constructors">
-    <classes>
-      <class name="test.ParameterConstructorTest" />
-    </classes>
-  </test>
-  
-  <test name="Excluded methods" >
-    <groups>
-      <run>
-        <include name="group1" />
-        <include name="group2" />
-      </run>        
-    </groups>
-    <classes>
-      <class name="test.Exclude">
-		<methods>
-          <exclude name="excluded1" />
-          <exclude name="excluded2" />
-		</methods>
-      </class>
-    </classes>
-  </test>  
-  
-  <test name="Parameters in init 1">
-    <parameter name="param" value="value1"/>
-    <classes>
-      <class name="test.configuration.ConfigurationWithParameters"/>
-    </classes>
-  </test>
-
-  <test name="Parameters in init 2">
-  <parameter name="param" value="value2"/>
-    <classes>
-      <class name="test.configuration.ConfigurationWithParameters"/>
-    </classes>
-  </test>
-  
-  <test name="Individual method">
-    <classes>
-      <class name="test.IndividualMethodsTest">
-        <methods>
-          <include name="testMethod"/>
-        </methods>
-      </class>
-    </classes>
-  </test>
-
-  <test name="Method inheritance">
-    <classes>
-      <class name="test.inheritance.DChild_2" />
-      <class name="test.inheritance.VerifyTest" />	  
-    </classes>
-  </test>
-
-  <test name="Method selectors">
-    <classes>
-      <class name="test.methodselectors.MethodSelectorTest" />
-      <class name="test.methodselectors.BeanShellTest" />
-    </classes>
-  </test>
-
-  <test name="Test order invocation">
-    <classes>
-      <class name="test.interleavedorder.InterleavedInvocationTest" />
-    </classes>
-  </test>
-
-  <test name="DataProvider">
-    <classes>
-      <class name="test.dataprovider.Sample1Test" />
-      <class name="test.dataprovider.IterableTest" />
-      <class name="test.dataprovider.ConfigurationAndDataProvidersTest" />
-      <class name="test.dataprovider.BooleanTest" />
-      <class name="test.dataprovider.MethodTest"/>
-      <class name="test.dataprovider.StaticDataProviderSampleTest" />
-      <class name="test.dataprovider.UnnamedDataProviderTest" />
-      <class name="test.dataprovider.TestContextTest" />
-      <class name="test.dataprovider.FailingDataProviderTest" />
-      <class name="test.dataprovider.DataProviderAsTest" />
-      <class name="test.dataprovider.TestInstanceFactory" />
-      <class name="test.dataprovider.FailedDataProviderTest" />
-      <class name="test.dataprovider.InstanceDataProviderTest" />
-      <class name="test.dataprovider.FailingIterableDataProviderTest" />
-      <class name="test.dataprovider.ClassTest" />
-      <class name="test.dataprovider.InheritedDataProviderTest" />
-    </classes>
-  </test>
-	
-  <test name="UniqueSuite">
-    <classes>
-      <class name="test.uniquesuite.TestBefore1" />
-      <class name="test.uniquesuite.TestBefore2" />
-      <class name="test.uniquesuite.TestAfter" />
-    </classes>
-  </test>
-
-  <test name="InheritGroups">
-    <groups>
-      <run>
-        <include name="group1" />
-      </run>
-    </groups>
-    <classes>
-      <class name="test.configuration.ConfigurationInheritGroupsSampleTest" />
-    </classes>
-  </test>
-
-<!--
-  <test name="Distributed">
-    <classes>
-      <class name="test.distributed.DistributedTest" />
-    </classes>
-  </test>  
--->
-
-  <test name="Nested" >
-    <groups>
-      <run>
-        <include name="unittest" />
-      </run>        
-    </groups>
-
-	<packages>
-		<package name="test.nested.*"/>
-	</packages>
-  </test>
-
-  <test name="Hookable" >
-    <classes>
-      <class name="test.hook.HookSuccessTest" />
-      <class name="test.hook.HookFailureTest" />
-    </classes>
-  </test>
-  
-  <test name="BeforeGroups-AfterGroups-1" >
-    <classes>
-	    <class name="test.configuration.ConfigurationGroups1SampleTest" />
-	    <class name="test.configuration.ConfigurationGroups2SampleTest" />
-	    <class name="test.configuration.ConfigurationGroups3SampleTest" />
-	    <class name="test.configuration.ConfigurationGroups4SampleTest" />
-	    <class name="test.configuration.ConfigurationGroups5SampleTest" />
-	    <class name="test.configuration.ConfigurationGroups6SampleTest" />
-	    <class name="test.configuration.ConfigurationGroups7SampleTest" />
-    </classes>
-  </test>
-  
-  <test name="BeforeGroups-AfterGroups-2" >
-    <groups>
-      <run>
-        <include name="A" />
-        <include name="B" />
-      </run>
-    </groups>
-    <classes>
-	    <class name="test.configuration.ConfigurationGroups8SampleTest" />
-    </classes>
-  </test>
-  
-  <test name="JUnit">
-    <classes>
-      <class name="test.JUnitTest1" />
-      <class name="test.CommandLineTest"/>
-    </classes>
-  </test>
-    
-<!-- 
-  <test name="JUnitConverter">
-    <parameter name="source-directory" value="test/src/test/converter" />
-    <classes>
-      <class name="test.converter.JUnitConverterTest" />
-     </classes>
-  </test>
- -->
-
-  <!-- TestNG ant task related tests -->
-  <test name="Ant-ClassFileResolution" >
-    <classes>
-        <class name="test.ant.TestCommandLineArgs" />
-    </classes>
-  </test>
- 
-  <!-- Group ordering 1 --> 
-  <test name="Class Run">
-    <classes>
-      <class name="test.regression.groupsordering.A" />
-      <class name="test.regression.groupsordering.B" />
-    </classes>
-  </test>
-	
-  <!-- Group ordering 2 --> 
-  <test name="Groups Run">
-    <groups>
-      <run>
-        <include name="a" />
-      </run>
-    </groups>
-    <classes>
-      <class name="test.regression.groupsordering.A" />
-      <class name="test.regression.groupsordering.B" />
-    </classes>
-  </test>
-  
-  <test name="External group invocation">
-		<groups>
-			<run>
-				<include name="a" />
-			</run>
-		</groups>
-		<classes>
-			<class name="test.groupinvocation.GroupConfiguration" />
-			<class name="test.groupinvocation.DummyTest" />
-		</classes>
-  </test>
-	
-	<test name="SkipExceptions">
-		<classes>
-			<class name="test.skipex.SkippedExceptionTest" />
-		</classes>
-	</test>
-
-<!--
-  <test name="RetryAnalyzer">
-    <classes>
-      <class name="test.retryAnalyzer.RetryAnalyzerTest" />
-    </classes>
-  </test>
--->
-
-  <test name="MethodInterceptor">
-    <classes>
-      <class name="test.methodinterceptors.MethodInterceptorTest" />
-    </classes>
-  </test>
-  
-  <test name="Asserts">
-    <classes>
-      <class name="test.asserttests.AssertTest" />
-    </classes>
-  </test>
-  
-</suite>
diff --git a/test/testng_convert.xml b/test/testng_convert.xml
deleted file mode 100644
index 7eaf84c..0000000
--- a/test/testng_convert.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
-
-<suite name="JUnit Convert suite" verbose="1" parallel="false" thread-count="2" annotations="javadoc">
-   <parameter name="inputDir" value="./test/src/test/convert"/>
-   <test name="JUnit Convert">
-     <classes>
-       <class name="test.convert.JUnitConverterTest"/>
-     </classes>
-   </test>
-</suite>
diff --git a/testng-1.0.dtd.html b/testng-1.0.dtd.html
deleted file mode 100755
index fa04592..0000000
--- a/testng-1.0.dtd.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html>
-  <head>
-    <META HTTP-EQUIV=REFRESH CONTENT="0; URL=http://testng.org/testng-1.0.dtd.php">.
-  </head>
-
-<body />
diff --git a/testng-1.0.dtd.php b/testng-1.0.dtd.php
deleted file mode 100644
index bce8502..0000000
--- a/testng-1.0.dtd.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?
-
-print '<html><head><title>Generate title</title>
-
-        <link rel="stylesheet" href="testng.css" type="text/css" />
-        <link type="text/css" rel="stylesheet" href="http://beust.com/beust.css"  />
-        <script type="text/javascript" src="http://beust.com/prettify.js"></script>
-        <script type="text/javascript" src="banner.js"></script>
-
-      <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
-      <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
-      <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
-      <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
-      <script type="text/javascript">
-        SyntaxHighlighter.config.clipboardSwf = "scripts/clipboard.swf";
-        SyntaxHighlighter.defaults["gutter"] = false;
-        SyntaxHighlighter.all();
-      </script>
-
-        <style type="text/css">
-            /* Set the command-line table option column width. */
-            #command-line colgroup.option {
-                 width: 7em;
-            }
-        </style>
-</head>
-<body>
-
-<h1>
-<p align="center">
-DTD for TestNG
-</p>
-</h1>
-
-<pre class="brush: xml">
-'
-;
-
-print(htmlentities(file_get_contents("testng-1.0.dtd")));
-
-print "</pre>";
-
-?>
diff --git a/testng.iml b/testng.iml
deleted file mode 100644
index 39ae822..0000000
--- a/testng.iml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4" relativePaths="true" type="JAVA_MODULE">
-  <component name="ModuleRootManager" />
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/jdk15" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/test/src" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/3rdparty/junit.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/3rdparty/qdox-1.6.1.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/3rdparty/ant.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/3rdparty/backport-util-concurrent-2.2.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/3rdparty/bsh-2.0b4.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar:///usr/local/jdk1.6.0_01/lib/tools.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
-    <orderEntryProperties />
-  </component>
-</module>
-
diff --git a/testng.ipr b/testng.ipr
deleted file mode 100644
index 0fe791e..0000000
--- a/testng.ipr
+++ /dev/null
@@ -1,330 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4" relativePaths="true">
-  <component name="AntConfiguration">
-    <defaultAnt bundledAnt="true" />
-  </component>
-  <component name="BuildJarProjectSettings">
-    <option name="BUILD_JARS_ON_MAKE" value="false" />
-  </component>
-  <component name="CodeStyleProjectProfileManger">
-    <option name="PROJECT_PROFILE" />
-    <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
-  </component>
-  <component name="CodeStyleSettingsManager">
-    <option name="PER_PROJECT_SETTINGS" />
-    <option name="USE_PER_PROJECT_SETTINGS" value="false" />
-  </component>
-  <component name="CompilerConfiguration">
-    <option name="DEFAULT_COMPILER" value="Javac" />
-    <option name="DEPLOY_AFTER_MAKE" value="0" />
-    <resourceExtensions>
-      <entry name=".+\.(properties|xml|html|dtd|tld)" />
-      <entry name=".+\.(gif|png|jpeg|jpg)" />
-    </resourceExtensions>
-    <wildcardResourcePatterns>
-      <entry name="?*.properties" />
-      <entry name="?*.xml" />
-      <entry name="?*.gif" />
-      <entry name="?*.png" />
-      <entry name="?*.jpeg" />
-      <entry name="?*.jpg" />
-      <entry name="?*.html" />
-      <entry name="?*.dtd" />
-      <entry name="?*.tld" />
-      <entry name="?*.properties" />
-      <entry name="?*.xml" />
-      <entry name="?*.html" />
-      <entry name="?*.dtd" />
-      <entry name="?*.tld" />
-      <entry name="?*.gif" />
-      <entry name="?*.png" />
-      <entry name="?*.jpeg" />
-      <entry name="?*.jpg" />
-    </wildcardResourcePatterns>
-  </component>
-  <component name="DataSourceManagerImpl" />
-  <component name="DependenciesAnalyzeManager">
-    <option name="myForwardDirection" value="false" />
-  </component>
-  <component name="DependencyValidationManager" />
-  <component name="EclipseCompilerSettings">
-    <option name="DEBUGGING_INFO" value="true" />
-    <option name="GENERATE_NO_WARNINGS" value="true" />
-    <option name="DEPRECATION" value="false" />
-    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
-    <option name="MAXIMUM_HEAP_SIZE" value="128" />
-  </component>
-  <component name="EclipseEmbeddedCompilerSettings">
-    <option name="DEBUGGING_INFO" value="true" />
-    <option name="GENERATE_NO_WARNINGS" value="true" />
-    <option name="DEPRECATION" value="false" />
-    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
-    <option name="MAXIMUM_HEAP_SIZE" value="128" />
-  </component>
-  <component name="EntryPointsManager">
-    <entry_points />
-  </component>
-  <component name="ExportToHTMLSettings">
-    <option name="PRINT_LINE_NUMBERS" value="false" />
-    <option name="OPEN_IN_BROWSER" value="false" />
-    <option name="OUTPUT_DIRECTORY" />
-  </component>
-  <component name="GUI Designer component loader factory" />
-  <component name="HandyEdit.TapestrySupport" tapestryProject="false" askEnableTapestry="false">
-    <locations pageRoot="" componentRoot="" applicationFile="" pagePropertiesRoot="" />
-    <packages page="" component="" />
-    <completion properties="true" methods="false" htmlAttributes="true" />
-    <ext extensionComponentSpec="jwc" extensionPageSpec="page" extensionScript="script" />
-  </component>
-  <component name="IdProvider" IDEtalkID="D0F72A6908483D7C8BCC5C9C6390E3DE" />
-  <component name="InspectionProjectProfileManager">
-    <option name="PROJECT_PROFILE" value="Project Default" />
-    <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
-    <scopes />
-    <profiles>
-      <profile version="1.0" is_locked="false">
-        <option name="myName" value="Project Default" />
-        <option name="myLocal" value="false" />
-        <used_levels>
-          <error>
-            <option name="myName" value="ERROR" />
-            <option name="myVal" value="200" />
-          </error>
-          <warning>
-            <option name="myName" value="WARNING" />
-            <option name="myVal" value="100" />
-          </warning>
-          <information>
-            <option name="myName" value="INFO" />
-            <option name="myVal" value="100" />
-          </information>
-          <server>
-            <option name="myName" value="SERVER PROBLEM" />
-            <option name="myVal" value="100" />
-          </server>
-        </used_levels>
-      </profile>
-    </profiles>
-  </component>
-  <component name="JavacSettings">
-    <option name="DEBUGGING_INFO" value="true" />
-    <option name="GENERATE_NO_WARNINGS" value="false" />
-    <option name="DEPRECATION" value="true" />
-    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
-    <option name="MAXIMUM_HEAP_SIZE" value="128" />
-  </component>
-  <component name="JavadocGenerationManager">
-    <option name="OUTPUT_DIRECTORY" />
-    <option name="OPTION_SCOPE" value="protected" />
-    <option name="OPTION_HIERARCHY" value="true" />
-    <option name="OPTION_NAVIGATOR" value="true" />
-    <option name="OPTION_INDEX" value="true" />
-    <option name="OPTION_SEPARATE_INDEX" value="true" />
-    <option name="OPTION_DOCUMENT_TAG_USE" value="false" />
-    <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
-    <option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
-    <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
-    <option name="OPTION_DEPRECATED_LIST" value="true" />
-    <option name="OTHER_OPTIONS" value="" />
-    <option name="HEAP_SIZE" />
-    <option name="LOCALE" />
-    <option name="OPEN_IN_BROWSER" value="true" />
-  </component>
-  <component name="JikesSettings">
-    <option name="JIKES_PATH" value="" />
-    <option name="DEBUGGING_INFO" value="true" />
-    <option name="DEPRECATION" value="true" />
-    <option name="GENERATE_NO_WARNINGS" value="false" />
-    <option name="IS_EMACS_ERRORS_MODE" value="true" />
-    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
-  </component>
-  <component name="LogConsolePreferences">
-    <option name="FILTER_ERRORS" value="false" />
-    <option name="FILTER_WARNINGS" value="false" />
-    <option name="FILTER_INFO" value="true" />
-    <option name="CUSTOM_FILTER" />
-  </component>
-  <component name="Maven Reloaded">
-    <option name="config">
-      <value>
-        <option name="pluginEnabled" value="false" />
-        <option name="updateClasspathsEnabled" value="true" />
-        <option name="sortDependenciesEnabled" value="false" />
-        <option name="removeDuplicateDependenciesEnabled" value="false" />
-        <option name="respondToPomChangesEnabled" value="true" />
-        <option name="manageSourceRootsEnabled" value="true" />
-        <option name="manageModuleInterdependenciesEnabled" value="true" />
-        <option name="downloadSourcesEnabled" value="false" />
-        <option name="downloadJavadocEnabled" value="false" />
-        <option name="generateSourcesEnabled" value="false" />
-        <option name="searchFilter" value="" />
-        <option name="disabledPoms">
-          <value>
-            <collection type="java.util.TreeSet" />
-          </value>
-        </option>
-        <option name="moduleInterDependencies">
-          <value>
-            <map type="java.util.TreeMap" />
-          </value>
-        </option>
-        <option name="logLevel" value="1" />
-      </value>
-    </option>
-  </component>
-  <component name="Palette2">
-    <group name="Swing">
-      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
-      </item>
-      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
-      </item>
-      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
-        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
-        <initial-values>
-          <property name="text" value="Button" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="RadioButton" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="CheckBox" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
-        <initial-values>
-          <property name="text" value="Label" />
-        </initial-values>
-      </item>
-      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
-          <preferred-size width="150" height="-1" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
-          <preferred-size width="150" height="50" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
-          <preferred-size width="200" height="200" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
-          <preferred-size width="200" height="200" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
-      </item>
-      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
-      </item>
-      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
-      </item>
-      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
-          <preferred-size width="-1" height="20" />
-        </default-constraints>
-      </item>
-      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
-        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
-      </item>
-      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
-        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
-      </item>
-    </group>
-  </component>
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/testng.iml" filepath="$PROJECT_DIR$/testng.iml" />
-    </modules>
-  </component>
-  <component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/z_build" />
-  </component>
-  <component name="ProjectRunConfigurationManager" />
-  <component name="RmicSettings">
-    <option name="IS_EANABLED" value="false" />
-    <option name="DEBUGGING_INFO" value="true" />
-    <option name="GENERATE_NO_WARNINGS" value="false" />
-    <option name="GENERATE_IIOP_STUBS" value="false" />
-    <option name="ADDITIONAL_OPTIONS_STRING" value="" />
-  </component>
-  <component name="StarteamVcsAdapter" />
-  <component name="VssVcs" />
-  <component name="XSLT-Support.FileAssociationsManager" />
-  <component name="com.intellij.jsf.UserDefinedFacesConfigs">
-    <option name="USER_DEFINED_CONFIGS">
-      <value>
-        <list size="0" />
-      </value>
-    </option>
-  </component>
-  <component name="libraryTable" />
-  <component name="uidesigner-configuration">
-    <option name="INSTRUMENT_CLASSES" value="true" />
-    <option name="COPY_FORMS_RUNTIME_TO_OUTPUT" value="true" />
-    <option name="DEFAULT_LAYOUT_MANAGER" value="GridLayoutManager" />
-  </component>
-  <UsedPathMacros />
-</project>
-
diff --git a/update-beust.com b/update-beust.com
deleted file mode 100755
index e4ba600..0000000
--- a/update-beust.com
+++ /dev/null
@@ -1,13 +0,0 @@
-v=5.12
-ev=5.12.0.6
-
-set -x
-
-scp testng-${v}.zip testng-eclipse-${ev}.zip ${U}@beust.com:w/testng
-scp -r javadocs doc/*.html doc/*.css src/main/testng-1.0.dtd ${U}@beust.com:w/testng
-#scp dtd/* ${U}@beust.com:w/dtd
-#(cd ~/java/beust.com; scp -r . ${U}@beust.com:w/eclipse)
-
-
-# scp testng-eclipse-${ev}.zip doc/download.html ${U}@beust.com:w/testng
-
diff --git a/upload-beta b/upload-beta
deleted file mode 100755
index 17e377c..0000000
--- a/upload-beta
+++ /dev/null
@@ -1 +0,0 @@
-scp `ls -tr *beta.zip|tail -1` cedric at beust.com:w/testng
diff --git a/www/index.html b/www/index.html
deleted file mode 100644
index 40bd357..0000000
--- a/www/index.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-  <head>
-    <title>Default Project Content</title>
-  </head>
-  <body>
-    This is the default project content.
-  </body>
-</html>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/testng.git



More information about the pkg-java-commits mailing list