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)]
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`]