@lru_cache
The problem with `@lru_cache` on methods is that it also captures `self` and leaks it until the entry is evicted (if ever).