This is designed to have less runtime cost than the LRUCache. Mostly because we don't have to do any recording work on *access* only on update or delete. As such, we subclass dict directly, because experiments show that it performed the best. Unfortunately, even though we don't have a custom __getitem__ implementation, it is still approx 2x slower than using a raw dict.