This makes it reusable across various tooling and reduces the amount of boilerplate needed. Differential Revision: https://reviews.llvm.org/D144818