private static Set<Integer> getFragmentOuterBound(@NotNull LinkedHashSet<Integer> fragmentInstructions, Instruction @NotNull [] flow) {
    final Set<Integer> result = new HashSet<>();
    for (Integer num : fragmentInstructions) {
      for (Instruction successor : flow[num].allSuccessors()) {
        if (!fragmentInstructions.contains(successor.num())) {
          result.add(num);
        }
      }
    }
    return result;
  }
private static Set<Integer> getFragmentOuterBound(@NotNull LinkedHashSet<Integer> fragmentInstructions, Instruction @NotNull [] flow)