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();
boolean b = mc.toBoolean(stack.getFirst());
stack = stack.getRest();
RippleValue result = b ? trueProg : falseProg;
solutions.put(
stack.push(result).push(Operator.OP));
}