code: def get_paths_for_attribute_set(self, keys):
          
          if not isinstance(keys, (list, set)):
              keys = [keys]
  
          has_all_keys = lambda name, structure: \
                  all(map(lambda k: k in structure, keys))
          return self.find_path(has_all_keys, on_targets=True)
docs: Given a list/set of keys (or one key), returns the parts that have
          all of the keys in the list.
  
          Because on_targets=True, this DOES NOT WORK WITH TOP LEVEL PROPERTIES,
          only those of targets.
  
          These paths are not pointers to the objects themselves, but tuples of
          attribute names that allow us to (attempt) to look up that object in any
          belief state.