RippleValue first = arg.getFirst();
//System.out.println( " first.isActive() = " + first.isActive() );
//System.out.println(" first = " + stack.getFirst());
if (null != first.getMapping()) {
RippleList rest = arg.getRest();
//System.out.println(" rest = " + rest);
final StackMapping f = first.getMapping();
//System.out.println(" f = " + f);
//System.out.println(" f.arity() = " + f.arity());
// Nullary functions don't need their argument stacks reduced.
// They shouldn't even care if the stack is empty.
if (f.arity() == 0) {
f.apply(rest, this, mc);
}
// Functions with positive arity do require the stack to be
// reduced, to one level per argument.
else {
// We simply ignore stacks which can't be reduced to
// something with a passive item on top.
if (rest.isNil()) {
// sink.put( stack );
} else {
final Sink<RippleList> thisEval = this;
Sink<RippleList> argSink = new Sink<RippleList>() {
public void put(final RippleList arg) throws RippleException {