Job job = createJob();
job.validate().throwOrInform(getLog());
SourceLoader sourceLoader = createSourceLoader(job);
List<CoverageParser> parsers = createCoverageParsers(sourceLoader);
JsonWriter writer = createJsonWriter(job);
CoverallsClient client = createCoverallsClient();
List<Logger> reporters = new ArrayList<Logger>();
reporters.add(new JobLogger(job));
SourceCallback sourceCallback = createSourceCallbackChain(writer, reporters);
reporters.add(new DryRunLogger(job.isDryRun(), writer.getCoverallsFile()));