One major extension point of the API is the execution context. By using a custom context factory, you can use custom context classes, which can be very powerful in combination with a custom visitor.

If we remove this interface, we need to tie `ContextRefresherVisitor` to `ExecutionContext` (the implementation, not the interface). That means that any custom context needs to extend `ExecutionContext` (then we could remove the interfaces just as well) or we need to provide an API for removing visitors (I don't want that). A last solution would be to move `pushNode()` and `popNode()` to `ExecutionContextInterface`, but that's a bad solution, because users of this interface should definitely *not* access these methods.

So yes, we need it.