docs: def set(self, key: CacheKey, value: Optional[CacheValue]) -> None:
          r"""Create or update a cache.
  
          :param key: A key string to create or update.
          :type key: :const:`CacheKey`
          :param value: A value to cache.  :const:`None` to remove cache.
          :type value: :class:`~typing.Optional`\ [:const:`CacheValue`]
  
          """
          raise NotImplementedError(
              'Concreate subclasses of {0.__module__}.{0.__qualname__} have to '
              'override .set() method'.format(CachePolicy)
          )