private List<Block> buildBlocks() {
    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;
  }
private List<Block> buildBlocks()