static S ai_patternSwitch(S from, S to, S s) { L tok = javaTokPlusBracketsC_unquote(s); L tok1 = javaTokC(from), tok2 = javaTokC(to); S op = getOperator(s); if (neq(from, op)) fail("Different operator: " + renderStructs(+from, +to, +op, +s)); L operands = ai_operands(from, s); int iOperand = 0; new L out; for i over tok2: { S t = tok1.get(i); if (eq(get(i), "*")) out.add(operands.get(iOperand++)); else out.add(t); } ret joinWithSpace(out); }