private final class FineSoFar implements State {
public void run(Step step) {
StepResult result = step.perform();
result.describeTo(reporter);
Throwable scenarioFailure = result.getFailure();
if (scenarioFailure != null) {
state = new SomethingHappened();
storyFailure = mostImportantOf(storyFailure, scenarioFailure);
currentStrategy = strategyFor(storyFailure);