code: def _can_circularise(self, start_hit, end_hit):
          '''Returns true iff the two hits can be used to circularise the reference sequence of the hits'''
          if not(self._is_at_ref_start(start_hit) or self._is_at_ref_end(end_hit)):
              return False
  
          if self._is_at_qry_end(start_hit) \
            and self._is_at_qry_start(end_hit) \
            and start_hit.on_same_strand() \
            and end_hit.on_same_strand():
              return True
  
          if self._is_at_qry_start(start_hit) \
            and self._is_at_qry_end(end_hit) \
            and (not start_hit.on_same_strand()) \
            and (not end_hit.on_same_strand()):
              return True
  
          return Falsf _can_circularise(self, start_hit, end_hit):
          '''Returns true iff the two hits can be used to circularise the reference sequence of the hits'''
          if not(self._is_at_ref_start(start_hit) or self._is_at_ref_end(end_hit)):
              return False
  
          if self._is_at_qry_end(start_hit) \
            and self._is_at_qry_start(end_hit) \
            and start_hit.on_same_strand() \
            and end_hit.on_same_strand():
              return True
  
          if self._is_at_qry_start(start_hit) \
            and self._is_at_qry_end(end_hit) \
            and (not start_hit.on_same_strand()) \
            and (not end_hit.on_same_strand()):
              return True
  
          return False
docs: Returns true iff the two hits can be used to circularise the reference sequence of the hits