In our case, our government forces our BPO(Business Process Outsourcing) companies to return the employees to the office because of the economy. There are small businesses and infrastructure that are invested near office hubs. So, if people stops going to the office those small businesses will shut down.
If the company won't comply, the tax perks will be remove.
This is what we use on our manufacturing execution system (MES) to our manufacturing clients. Maintenance is what keeps us alive. Its easier to earn money thru maintenance existing clients than finding a new client.
New features that are added outside the scope of the current version will have a new contract. new contract means outside of maintenance and will have to pay more.
UnreachableException has no special behaviour at all [0]. It's just a standardized 'tag' around regular Exception.
The only advantage of using a standard tag is that it will be recognized by other programmers, and maybe some supporting tooling might choose to give it special treatment.
E.g. a code analyzer could warn you if you raise a NotImplementedException (forgot to finish a feature?), but accept an UnreachableException as valid.
If you want to add a custom name (for easier grepping maybe?) or stuff some extra data in the exception, you can still inherit from UnreachableException.