code: def set_cache_impl(self, cache_impl, maxsize, **kwargs):
          
          new_cache = self._get_cache_impl(cache_impl, maxsize, **kwargs)
          self._populate_new_cache(new_cache)
          self.cache = new_cache
docs: Change cache implementation. The contents of the old cache will
          be transferred to the new one.
  
          :param cache_impl: Name of cache implementation, must exist in AVAILABLE_CACHES