}
return getLeft().call(argTypes, argValues, keyArgValues);
}
catch (MatchFailed e) {
List<AbstractFunction> candidates = Arrays.<AbstractFunction>asList((AbstractFunction) getLeft(), (AbstractFunction) getRight());
throw new ArgumentsMismatch("+ composition", candidates, argTypes, ctx.getCurrentAST());
}
catch(Failure f2) {
throw new Failure("Both functions in the '+' composition have failed:\n "
+ getLeft().toString() + ",\n" + getRight().toString());
}