List<Block> () { final List<Block> list = myOriginal.getSubBlocks(); if (list.isEmpty()) return AbstractBlock.EMPTY; if (myOffset == 0 && myRange == null) return list; final ArrayList<Block> result = new ArrayList<>(list.size()); if (myRange == null) { for (Block block : list) { result.add(new InjectedLanguageBlockWrapper(block, myOffset, null, null, myLanguage)); } } else { collectBlocksIntersectingRange(list, result, myRange); } return result; }