register();
}
public Object invokeWithArgs(Object[] args) throws Throwable {
IokeObject msg = ioke.newMessage("invoke");
Message invoke = (Message) IokeObject.data(msg);
List<Runtime.RescueInfo> pendingRescues = new ArrayList<Runtime.RescueInfo>();
IokeObject rr = IokeObject.as(((Message) IokeObject.data(ioke.mimic)).sendTo(ioke.mimic, ioke.ground, ioke.rescue), ioke.ground);
List<Object> conds = new ArrayList<Object>();
conds.add(lang.pendingCondition);
pendingRescues.add(new Runtime.RescueInfo(rr, conds, pendingRescues, ioke.getBindIndex()));
ioke.registerRescues(pendingRescues);
List<Runtime.RescueInfo> failureRescues = new ArrayList<Runtime.RescueInfo>();
IokeObject rr2 = IokeObject.as(((Message) IokeObject.data(ioke.mimic)).sendTo(ioke.mimic, ioke.ground, ioke.rescue), ioke.ground);
List<Object> failureConds = new ArrayList<Object>();
failureConds.add(lang.failedExpectationCondition);
failureRescues.add(new Runtime.RescueInfo(rr2, failureConds, failureRescues, ioke.getBindIndex()));
ioke.registerRescues(failureRescues);
try {
return invoke.sendTo(msg, iokeStepDefObject, iokeStepDefObject, multilineArg(args));
} catch (ControlFlow.Rescue e) {
if (e.getRescue().token == pendingRescues) {
throw lang.cucumberPending("TODO");
} else if (e.getRescue().token == failureRescues) {
throw lang.error("IokeException", ((Message) IokeObject.data(ioke.reportMessage)).sendTo(ioke.reportMessage, ioke.ground, e.getCondition()).toString());