docs: def liftover(self, intersecting_region):
      """
      Lift a region that overlaps the genomic occurrence of the retrotransposon
      to consensus sequence co-ordinates. This method will behave differently
      depending on whether this retrotransposon occurrance contains a full
      alignment or not. If it does, the alignment is used to do the liftover and
      an exact result is provided. If it does not, the coordinates are used to
      do the liftover, padding either the genomic region or consensus sequence
      (whichever is shorter) with equally spaced gaps to make the size of both
      match.
  
      :param intersecting_region: a region that intersects this occurrence.
      :return: list of GenomicInterval objects. This is a list because a genomic
               deletion of part of the retrotransposon can fragment the
               intersecting region and result in more than one returned interval.
      """
  
      # a little sanity check here to make sure intersecting_region really does..
      if not self.intersects(intersecting_region):
        raise RetrotransposonError("trying to lift " + str(intersecting_region) +
                                   " from genomic to transposon coordinates " +
                                   "in " + str(self) + ", but it doesn't " +
                                   "intersect!")
  
      if self.pairwise_alignment is not None:
        return self.pairwise_alignment.liftover(self.chrom, self.repeat_name(),
                                                intersecting_region.start,
                                                intersecting_region.end,
                                                trim=True)
      return self.liftover_coordinates(intersecting_region)