private static boolean splitExceptionRange(ExceptionRangeCFG range,
                                             Set<BasicBlock> setEntries,
                                             ControlFlowGraph graph,
                                             GenericDominatorEngine engine) {
    for (BasicBlock entry : setEntries) {
      List<BasicBlock> lstSubrangeBlocks = getReachableBlocksRestricted(entry, range, engine);
      if (!lstSubrangeBlocks.isEmpty() && lstSubrangeBlocks.size() < range.getProtectedRange().size()) {
        // add new range
        ExceptionRangeCFG subRange = new ExceptionRangeCFG(lstSubrangeBlocks, range.getHandler(), range.getExceptionTypes());
        graph.getExceptions().add(subRange);
        // shrink the original range
        range.getProtectedRange().removeAll(lstSubrangeBlocks);
        return true;
      }
      else {
        // should not happen
        DecompilerContext.getLogger().writeMessage("Inconsistency found while splitting protected range", IFernflowerLogger.Severity.WARN);
      }
    }

    return false;
  }
private static boolean splitExceptionRange(ExceptionRangeCFG range,
                                             Set<BasicBlock> setEntries,
                                             ControlFlowGraph graph,
                                             GenericDominatorEngine engine)