<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def getlist(self, key: 'Entity') -> Sequence[object]: r"""Return all values associated to the given ``key`` property in sequence. :param key: The property entity. :type key: :class:`Entity` :return: A sequence of all values associated to the given ``key`` property. It can be empty if nothing is associated to the property. :rtype: :class:`~typing.Sequence`\ [:class:`object`] """

        if not (isinstance(key, type(self)) and
                key.type is EntityType.property):
            return []
        claims_map = self.attributes.get('claims') or {}
        assert isinstance(claims_map, collections.abc.Mapping)
        claims = claims_map.get(key.id, [])
        claims.sort(key=lambda claim: claim['rank'],  # FIXME
                    reverse=True)
        logger = logging.getLogger(__name__ + '.Entity.getitem')
        if logger.isEnabledFor(logging.DEBUG):
            logger.debug('claim data: %s',
                         __import__('pprint').pformat(claims))
        decode = self.client.decode_datavalue
        return [decode(snak['datatype'], snak['datavalue'])
                for snak in (claim['mainsnak'] for claim in claims)]