private void collectBlocksIntersectingRange(final List<? extends Block> list, final List<? super Block> result, final @NotNull TextRange range) {
    for (Block block : list) {
      final TextRange textRange = block.getTextRange();
      if (block instanceof InjectedLanguageBlockWrapper && block.getTextRange().equals(range)) {
        continue;
      }
      if (range.contains(textRange)) {
        result.add(new InjectedLanguageBlockWrapper(block, myOffset, range, null, myLanguage));
      }
      else if (textRange.intersectsStrict(range)) {
        collectBlocksIntersectingRange(block.getSubBlocks(), result, range);
      }
    }
  }
private void collectBlocksIntersectingRange(final List<? extends Block> list, final List<? super Block> result, final @NotNull TextRange range)