docs: def _getkey(self, args, kwargs):
          """Get hash key from args and kwargs.
  
          args and kwargs must be hashable.
  
          :param tuple args: called vargs.
          :param dict kwargs: called keywords.
          :return: hash(tuple(args) + tuple((key, val) for key in sorted(kwargs)).
          :rtype: int."""
  
          values = list(args)
  
          keys = sorted(list(kwargs))
  
          for key in keys:
              values.append((key, kwargs[key]))
  
          result = hash(tuple(values))
  
          return result