You are correct. However, the problem only ever occurs if the same instance of an object is added to the lifecycle at the same time by two different threads. The map itself is synchronized and an identitymap backed set. 

I can change the code but I am confident that this is a theoretical race, not a practial one.