class FeatureBackend {

    public ScriptValueMap handle(ScriptValueMap args, Scenario scenario) {
        context.vars.putAll(args);
        // This forces context to be refreshed by matching scenarios context variables
        isMatchingScenario(scenario);
        for (Step step : scenario.getSteps()) {
            Result result = Engine.executeStep(step, actions);
            if (result.isAborted()) {
                context.logger.debug("abort at {}:{}", featureName, step.getLine());
                break;
            }
            if (result.isFailed()) {
                String message = "server-side scenario failed - " + featureName + ":" + step.getLine();
                context.logger.error(message);
                throw new KarateException(message, result.getError());
            }
        }
        return context.vars;
    }

    public  FeatureBackend(Feature feature);
    public  FeatureBackend(Feature feature, Map<String, Object> arg);

}