Ejemplo n.º 1
0
 private static Instruction copyInstruction(
     @NotNull Instruction instruction, @NotNull Map<Label, Label> originalToCopy) {
   if (instruction instanceof AbstractJumpInstruction) {
     Label originalTarget = ((AbstractJumpInstruction) instruction).getTargetLabel();
     if (originalToCopy.containsKey(originalTarget)) {
       return ((AbstractJumpInstruction) instruction).copy(originalToCopy.get(originalTarget));
     }
   }
   if (instruction instanceof NondeterministicJumpInstruction) {
     List<Label> originalTargets =
         ((NondeterministicJumpInstruction) instruction).getTargetLabels();
     List<Label> copyTargets = copyLabels(originalTargets, originalToCopy);
     return ((NondeterministicJumpInstruction) instruction).copy(copyTargets);
   }
   return ((InstructionImpl) instruction).copy();
 }