code: def DecompressMessageList(cls, packed_message_list):
      
      compression = packed_message_list.compression
      if compression == rdf_flows.PackedMessageList.CompressionType.UNCOMPRESSED:
        data = packed_message_list.message_list
  
      elif (compression ==
            rdf_flows.PackedMessageList.CompressionType.ZCOMPRESSION):
        try:
          data = zlib.decompress(packed_message_list.message_list)
        except zlib.error as e:
          raise DecodingError("Failed to decompress: %s" % e)
      else:
        raise DecodingError("Compression scheme not supported")
  
      try:
        result = rdf_flows.MessageList.FromSerializedString(data)
      except rdfvalue.DecodeError:
        raise DecodingError("RDFValue parsing failed.")
  
      return result
docs: Decompress the message data from packed_message_list.
  
      Args:
        packed_message_list: A PackedMessageList rdfvalue with some data in it.
  
      Returns:
        a MessageList rdfvalue.
  
      Raises:
        DecodingError: If decompression fails.