private List<MutationAnalysisUnit> buildMutationTests(
final CoverageDatabase coverageData, final MutationEngine engine, EngineArguments args) {
final MutationConfig mutationConfig = new MutationConfig(engine, coverage()
.getLaunchOptions());
final ClassByteArraySource bas = fallbackToClassLoader(new ClassPathByteArraySource(
this.data.getClassPath()));
final TestPrioritiser testPrioritiser = this.settings.getTestPrioritiser()
.makeTestPrioritiser(this.data.getFreeFormProperties(), this.code,
coverageData);
final MutationInterceptor interceptor = this.settings.getInterceptor()
.createInterceptor(this.data, bas);
final MutationSource source = new MutationSource(mutationConfig, testPrioritiser, bas, interceptor);
final MutationAnalyser analyser = new IncrementalAnalyser(
new DefaultCodeHistory(this.code, history()), coverageData);
final WorkerFactory wf = new WorkerFactory(this.baseDir, coverage()
.getConfiguration(), mutationConfig, args,
new PercentAndConstantTimeoutStrategy(this.data.getTimeoutFactor(),
this.data.getTimeoutConstant()), this.data.isVerbose(), this.data.isFullMutationMatrix(),
this.data.getClassPath().getLocalClassPath());
final MutationGrouper grouper = this.settings.getMutationGrouper().makeFactory(
this.data.getFreeFormProperties(), this.code,
this.data.getNumberOfThreads(), this.data.getMutationUnitSize());
final MutationTestBuilder builder = new MutationTestBuilder(wf, analyser,
source, grouper);
return builder.createMutationTestUnits(this.code.getCodeUnderTestNames());
}