Comment on not supporting snapshot concurrent mutation.
Func markReclaimable().
Calls to markReclaimable().
Added freeLock to protect freeNodes.
Reclaiming nodes when refcount hits 0.
Func reclaimNodes() doesn't make even more garbage.
Check for empty before markReclaimable().
Extra casting unneeded.
More reclaimable nodes.
Reuse input item for less garbage.
Use a free list for rootNodeLoc.