BTW, withDefaultValue isn't lazy in its argument so that code makes every local/block share the same index set. But there is a withDefault that takes a function argument so I can create a fresh set on each miss.