Refactoring: introduce DocyCompiler interface, DI on that, and write tests for Main.run