MethodExecutors are built by the resolvers and can be cached by the infrastructure to
repeat an operation quickly without going back to the resolvers. For example, the
particular method to run on an object may be discovered by the reflection method
resolver - it will then build a MethodExecutor that executes that method and the
MethodExecutor can be reused without needing to go back to the resolver to discover
the method again.
They can become stale, and in that case should throw an AccessException:
This will cause the infrastructure to go back to the resolvers to ask for a new one.