https://patrickaudley.com/code/project/lrucache
