options.addOption(new Option("reportFile", true, "required - file to write report output to"));
CommandLine cmdline = new DefaultParser().parse(options, args);
File annotationsDir = new File(cmdline.getOptionValue("annotationsDir"));
File callFile       = new File(cmdline.getOptionValue("callFile"));
Path outputFile     = Paths.get(cmdline.getOptionValue("reportFile"));
<BUG>Reporter report = new Reporter(annotationsDir, callFile, outputFile);
report.run();
}
public Reporter(@Nonnull File annotationsDir, @Nonnull File callFile, @Nonnull Path reportFile)  throws IOException {
Preconditions.checkNotNull(annotationsDir);</BUG>
Preconditions.checkArgument(annotationsDir.exists());

options.addOption(new Option("reportFile", true, "required - file to write report output to"));
CommandLine cmdline = new DefaultParser().parse(options, args);
File annotationsDir = new File(cmdline.getOptionValue("annotationsDir"));
File callFile       = new File(cmdline.getOptionValue("callFile"));
Path outputFile     = Paths.get(cmdline.getOptionValue("reportFile"));
new Reporter(annotationsDir)
.analyze(callFile)
.printMarkdown(outputFile);
}
public Reporter(@Nonnull File annotationsDir)  throws IOException {
Preconditions.checkNotNull(annotationsDir);
Preconditions.checkArgument(annotationsDir.exists());
