Since `AdvancedCallableResolver` was introduced midway through the release of Slim 4, we will need to unify the two interfaces in Slim 5 and break everything moving forward. We will also need to ensure that the `CallableResolverInterface::resolve()` method throws a named exception instead of `RuntimeException` so downstream implementers can effectively control the execution flow.