void (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); } } }