The class is not newable, but callers have no choice but to instantiate it, which several extensions (+ core) are doing. It should be a proper service instead.
The general plan for this is to have:
- A command object (UndeletePage) for actual deletion, moving undeleteAsUser() and dependencies there, similar to DeletePage
- A lookup service (ArchivedRevisionLookup) with the remaining stuff, similar to RevisionLookup and perhaps sharing a common interface with it