code: @Value.Derived
    public OffsetGroupRange referenceBounds() {
      // we enforce in check that regions is not empty and we do not access this method in check()
      return OffsetGroupRange.from(
          characterRegions().iterator().next().referenceStartOffsetInclusive(),
          getLast(characterRegions()).referenceEndOffsetInclusive());
    }
docs: The offsets in the reference string that {@link #content()} corresponds to.  This is roughly
  the "convex hull" of these reference string offsets. That is, there will be content string
  characters corresponding to the start and end reference string offsets of these bounds, but
  there may be intermediate reference string offsets with no corresponding content string
  position.