docs: def liftover_coordinates(self, intersecting_region):
      """
      Lift a region that overlaps the genomic occurrence of the retrotransposon
      to consensus sequence co-ordinates. Use only the coordinates of the
      occurrence and the consensus match (i.e. ignore a full alignment, even
      if one is present). If the genomic size of the match is the same as the
      size of the match in the consensus sequence then it is assumed no indels
      are present in either sequence, otherwise indels are assumed to exist
      uniformly distributed along the sequences to make their lengths match.
  
      :param intersect_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!")
  
      consensus_match_length = self.consensus_end - self.consensus_start
      size_dif = consensus_match_length - len(self)
  
      if size_dif == 0:
        # put this in a list, even though we know we're getting only one
        # interval, to make the return type consistent
        return [self.__liftover_coordinates_size_match(intersecting_region)]
      else:
        return self.__liftover_coordinates_genomic_indels(intersecting_region)