public void apply(final RippleList arg,
final Sink<RippleList> solutions,
final ModelConnection mc) throws RippleException {
RippleList stack = arg;
RippleValue falseProg = stack.getFirst();
stack = stack.getRest();
RippleValue trueProg = stack.getFirst();
stack = stack.getRest();
RippleValue criterion = stack.getFirst();
stack = stack.getRest();
StackMapping inner = new IfteInner(stack, trueProg, falseProg);
RippleList newStack = stack.push(criterion).push(Operator.OP)
.push(new Operator(inner));