code: def __liftover_coordinates_size_match(self, intersecting_region):
      
      # should always pass, but check anyway...
      consensus_match_length = self.consensus_end - self.consensus_start
      assert(consensus_match_length - len(self) == 0)
  
      if self.consensus_match_strand is '+':
        s = max(intersecting_region.start - self.start, 0) +\
            self.consensus_start
        e = min(max(intersecting_region.end - self.start, 0) +
                self.consensus_start, self.consensus_len)
        g = GenomicInterval(self.repeat_name(), s, e, intersecting_region.name,
                            intersecting_region.score, self.strand)
        return g
      elif self.consensus_match_strand is '-':
        e = (self.consensus_end -
             max(intersecting_region.start - self.start, 0))
        s = (self.consensus_end -
             min(max(intersecting_region.end - self.start, 0), len(self)))
        g = GenomicInterval(self.repeat_name(), s, e, intersecting_region.name,
                            intersecting_region.score, self.strand)
        return g
      else:
        raise RetrotransposonError("couldn't determine strand of " +
                                   "retrotransposon occurrance " + str(self))
docs: Lift a region that overlaps the genomic occurrence of the retrotransposon
      to consensus sequence coordinates using just the coordinates (not the full)
      alignment, when they have the same length. This is an internal helper
      method. The above length constraint must be true, otherwise an assertion
      is failed.
  
      :param intersect_region: a region that intersects this occurrence.
      :return: GenomicInterval representing the region after lifting to consensus
      :note: no checks are made for whether the interval really intersects!!