@Override
    public List<Instruction> run(@NotNull List<Instruction> instructions) {
      List<Instruction> simplified = new ArrayList<>();
      for (Instruction instruction : instructions) {
        Check check = tryCast(instruction, Check.class);
        if (check != null && !check.hasElseBranch()) check.myInstructions = run(check.myInstructions);
        simplified.add(instruction);
        if (instruction instanceof Return || instruction instanceof Throw) return simplified;
      }
      return simplified;
    }
@Override
    public List<Instruction> run(@NotNull List<Instruction> instructions)