code: def _comparison_generator(old_list, new_list, compare_fn):
      
      old_index = 0
      new_index = 0
      while old_index < len(old_list) and new_index < len(new_list):
          old_value = old_list[old_index]
          new_value = new_list[new_index]
  
          status = compare_fn(old_value, new_value)
          if status == 0:
              yield (old_value, new_value,)
              old_index += 1
              new_index += 1
          elif status == -1:
              yield (old_value, None,)
              old_index += 1
          else:
              yield (None, new_value,)
              new_index += 1
  
      # Catch leftovers. Only one of these while statements should run.
      while old_index < len(old_list):
          yield (old_list[old_index], None,)
          old_index += 1
      while new_index < len(new_list):
          yield (None, new_list[new_index],)
          new_index += 1
docs: :type old_list: sorted list
      :type new_list: sorted list
  
      :type compare_fn: function
      :param compare_fn:
          takes two arguments, A and B
          returns 0 if equal
          returns -1 if A is less than B
          else returns 1