`lru_cache` uses a plain dict internally so at first glance, this appears to break compatibility.

However, I don't understand how using an `OrderedDict` for the cache would change anything (from what I understand, the cache is never iterated over). Do you have some more insight on this?