result = ScenarioResult.Pending;
stepOutputs = Collections.emptyList();
} else {
stepOutputs = new ArrayList<StepOutput>(steps.size());
for (final Step step : steps) {
final StepOutput stepOutput;
if (ScenarioResult.Success.equals(result)) {
stepOutput = stepExecutor.apply(step, stepHooks);
final StepResult stepResult = stepOutput.getResult();
if (stepResult instanceof StepResult.Error) {
result = ScenarioResult.Error;
} else if (stepResult instanceof StepResult.Failure) {
result = ScenarioResult.Failure;
} else if (stepResult instanceof StepResult.Pending) {