public State run(Step step) {
if ( step instanceof ParametrisedStep ){
((ParametrisedStep)step).describeTo(reporter.get());
}
UUIDExceptionWrapper storyFailureIfItHappened = storyFailure.get();
StepResult result = step.perform(storyFailureIfItHappened);
result.describeTo(reporter.get());
UUIDExceptionWrapper stepFailure = result.getFailure();
if (stepFailure == null) {
return this;
}
storyFailure.set(mostImportantOf(storyFailureIfItHappened, stepFailure));