code: def unpack_unordered_values(self, values):
          
  
          values = list(values) # To support iterators
          result = []
  
          # Try to unpack values more than one time to resolve cross references
          max_loop = 2
          while values and max_loop:
              next_values = []
              for value_data in values:
                  blob = self._begin()
                  try:
                      # try unpacking the value
                      value = self.unpack_data(value_data)
                      self._commit(blob)
                  except DelayPacking:
                      self._rollback(blob)
                      # If it is delayed keep it for later
                      next_values.append(value_data)
                      continue
                  result.append(value)
              values = next_values
              max_loop -= 1
  
          if values:
              # Not all items were resolved
              raise DelayPacking()
  
          return result
docs: Unpack an unordered list of values taking DelayPacking
          exceptions into account to resolve circular references .
          Used to unpack set values when order is not guaranteed by
          the serializer. See unpack_unordered_pairs().