} else if (varNode instanceof MultipleAsgnNode) {
MultipleAsgnNode masgn = (MultipleAsgnNode) varNode;
int preCount = masgn.getPreCount();
boolean isRest = masgn.getRest() != null;
Node rest = masgn.getRest();
ListNode pre = masgn.getPre();
noargblock = false;
switch(preCount) {
case 0: // Not sure if this is actually possible, but better safe than sorry
if (isRest) {
assigner = hasBlock ? new Pre0Rest1Post0BlockAssigner(rest, block) :
new Pre0Rest1Post0Assigner(rest);
} else if (hasBlock) {
assigner = new Pre0Rest0Post0BlockAssigner(block);
} else {
noargblock = true;
assigner = new Pre0Rest0Post0Assigner();
}
break;
case 1:
if (isRest) {
assigner = hasBlock ? new Pre1Rest1Post0BlockAssigner(pre.get(0), rest, block) :
new Pre1Rest1Post0Assigner(pre.get(0), rest);
} else if (hasBlock) {
assigner = new Pre1Rest0Post0BlockAssigner(pre.get(0), block);
} else {
assigner = new Pre1Rest0Post0Assigner(pre.get(0));
}
break;
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:
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:
if (isRest) {
assigner = hasBlock ? new PreManyRest1Post0BlockAssigner(pre, preCount, rest, block) :