final StepDescriptor desc = step.getDescriptor();
shell.setVariable("steps", new GroovyObjectSupport() {
@Override public Object invokeMethod(String name, Object args) {
if (name.equals(desc.getFunctionName())) {
try {
return desc.newInstance(DSL.parseArgs(desc, args).namedArgs);
} catch (RuntimeException x) {
throw x;
} catch (Exception x) {
throw new RuntimeException(x);
}