code: def __call__(self, *args):
      try:
          return self.cache[args]
      except KeyError:
          v = self.function(*args)
          self.cache[args] = v
          return v
  
imports: import bjam
  import re
  import types
  from itertools import groupby
label_desc: Use image node_id 2 for calling the cached obj's underlying member method code with example usage: obj.__call__() and returns: self, v