@Nullable
    private Data.Block createBlock(int[] starts, int[] ends) {
      LineRange[] regions = new LineRange[myCount];

      for (int i = 0; i < myCount; i++) {
        if (ends[i] - starts[i] < 2) continue;
        regions[i] = new LineRange(starts[i], ends[i]);
      }
      boolean hasFolding = ContainerUtil.or(regions, Objects::nonNull);
      if (!hasFolding) return null;

      return new Data.Block(regions);
    }
@Nullable
    private Data.Block createBlock(int[] starts, int[] ends)