case 2:
if (isRest) {
assigner = hasBlock ? new Pre2Rest1Post0BlockAssigner(pre.get(0), pre.get(1), rest, block) :
new Pre2Rest1Post0Assigner(pre.get(0), pre.get(1), rest);
} else if (hasBlock) {
assigner = new Pre2Rest0Post0BlockAssigner(pre.get(0), pre.get(1), block);
} else {
assigner = new Pre2Rest0Post0Assigner(pre.get(0), pre.get(1));
}
break;
case 3: