docs: def pickle_sequence(objects):
      """
      Convert an iterable of objects into a list of pickled objects.
      If the iterable contains copies, the pickling will be done only once.
      If the iterable contains objects already pickled, they will not be
      pickled again.
  
      :param objects: a sequence of objects to pickle
      """
      cache = {}
      out = []
      for obj in objects:
          obj_id = id(obj)
          if obj_id not in cache:
              if isinstance(obj, Pickled):  # already pickled
                  cache[obj_id] = obj
              else:  # pickle the object
                  cache[obj_id] = Pickled(obj)
          out.append(cache[obj_id])
      return out