Fix leaking empty concurrent hashmaps

Documenting what the parameters are for would make this a lot easier to follow. I sat here for several minutes comparing this new code to what it replaces to make sure I really understood it. Just a minor point