code: def cached_object(self, path, compute_fn):
          
          if path in self._memory_cache:
              return self._memory_cache[path]
  
          if exists(path) and not self.is_empty(path):
              obj = load_pickle(path)
          else:
              obj = compute_fn()
              dump_pickle(obj, path)
          self._memory_cache[path] = obj
          return obj
docs: If `cached_object` has already been called for a value of `path` in this
          running Python instance, then it should have a cached value in the
           _memory_cache; return that value.
  
          If this function was never called before with a particular value of
          `path`, then call compute_fn, and pickle it to `path`.
  
          If `path` already exists, unpickle it and store that value in
          _memory_cache.