code: def __diff_set(self, level):
          
          t1_hashtable = self.__create_hashtable(level.t1, level)
          t2_hashtable = self.__create_hashtable(level.t2, level)
  
          t1_hashes = set(t1_hashtable.keys())
          t2_hashes = set(t2_hashtable.keys())
  
          hashes_added = t2_hashes - t1_hashes
          hashes_removed = t1_hashes - t2_hashes
  
          items_added = [t2_hashtable[i].item for i in hashes_added]
          items_removed = [t1_hashtable[i].item for i in hashes_removed]
  
          for item in items_added:
              change_level = level.branch_deeper(
                  notpresent, item, child_relationship_class=SetRelationship)
              self.__report_result('set_item_added', change_level)
  
          for item in items_removed:
              change_level = level.branch_deeper(
                  item, notpresent, child_relationship_class=SetRelationship)
              self.__report_result('set_item_removed', change_level)
docs: Difference of sets