if (matchLastAndBreak(block, switchCode = AstCode.TableSwitch, caseLabels, switchArgument, fallLabel) ||
matchLastAndBreak(block, switchCode = AstCode.LookupSwitch, caseLabels, switchArgument, fallLabel)) {
final Expression switchExpression = (Expression) blockBody.get(blockBody.size() - 2);
final Collection<Range> switchRanges = switchExpression.getArguments().get(0).getRanges();
final Instruction switchInstruction = instructions.atOffset(switchRanges.get(switchRanges.size() - 1).getStart());
//
// Replace the switch code with a Switch node.
//
final Switch switchNode = new Switch();
switchNode.setCondition(switchArgument.get());
removeTail(blockBody, switchCode, AstCode.Goto);
blockBody.add(switchNode);
result.add(block);
//
// Replace the item so it isn't picked up as content.
//
removeOrThrow(scope, node);
//
// Pull in code of cases.
//
final Label[] labels = caseLabels.get();
final SwitchInfo switchInfo = switchInstruction.getOperand(0);
final int lowValue = switchInfo.getLowValue();
final int[] keys = switchInfo.getKeys();
final Label defaultLabel = labels[0];
final ControlFlowNode defaultTarget = labelsToNodes.get(defaultLabel);