Is this really needed? I guess its purpose is to speed up findByTag, that has now cost O(1) but I don't think this operation will be executed so often. Why don't just search the children?