Is this enough to fix `ConcurrentModifcationException`? The `addChild` method also needs to `synchronize (childLocations)` when iterating over them. Also, the addChild should do `contender.equals(child)` rather than `==`.

The getChildren() returning the `childLocationsReadOnly` is unsafe as well. If something tries to iterate over the result or to copy the returned collection (which requires iterating) then it can cause a `ConcurrentModifcationException`. I think just return `ImmutableList.copyOf(childLocations)` until it proves to be a performance problem.