Instead of setting a flag and throwing when calling execute twice we should just reset the state. It’s possible that throwing will help users identify that they are using resolvers incorrectly, but we think that the likelihood of it catching this problem is outweighed by the simpler reset approach.
We also want to remove the ProtectedExecute method.
We also want to remove the ProtectedExecute method.