https://github.com/ojhunt requested changes to this pull request. The general design of this PR seems reasonable but there are a bunch of changes that I think will make it cleaner and more readable https://github.com/llvm/llvm-project/pull/170619