Being picky... can this be `DeprecationFormatter`, and then we extend it as `FileDeprecationFormatter` and `IODeprecationFormatter` as `Base` is a horrible name