fixes #26 made lock recovery more efficient by caching and batching

I've found that when I actually take the time to write some class-level javadocs, it helps me make a more focused "unit" of code. The problem comes when the problem/requirements shift and then remembering to update the javadocs before you're left with useless cruft from X months/years ago :)