docs: def intersection(self, other: "Interval") -> Optional["Interval"]:
          """
          Returns an :class:`Interval` representing the intersection of this and
          the ``other``, or ``None`` if they don't overlap.
          """
          if not self.contiguous(other):
              return None
          return Interval(
              max(self.start, other.start),
              min(self.end, other.end)
          )