case 3:
if (isRest) {
assigner = hasBlock ? new Pre3Rest1Post0BlockAssigner(pre.get(0), pre.get(1), pre.get(2), rest, block) :
new Pre3Rest1Post0Assigner(pre.get(0), pre.get(1), pre.get(2), rest);
} else if (hasBlock) {
assigner = new Pre3Rest0Post0BlockAssigner(pre.get(0), pre.get(1), pre.get(2), block);
} else {
assigner = new Pre3Rest0Post0Assigner(pre.get(0), pre.get(1), pre.get(2));
}
break;
default: