final ModelConnection mc) throws RippleException {
RippleList stack = arg;
RippleList ops = mc.list();
while (true) {
RippleValue first = stack.getFirst();
if (stack.isNil() || null == first.getMapping()) {
if (ops.isNil()) {
outputSink.put(stack);
return;
} else {
Closure c = new Closure(ops.getFirst().getMapping(), first);
stack = stack.getRest().push(new Operator(c));
ops = ops.getRest();
}
} else {
StackMapping f = first.getMapping();
if (0 == f.arity()) {
try {
if (ops.isNil()) {
f.apply(stack.getRest(), outputSink, mc);