In some cases the method InternalVersionHistoryImpl.fixLegacy() may trigger a ConcurrentModificationException. The exception is caused by the iterator on the nameCache.keySet(). It only happens when the root version points to a successor version which has a same name sibling. In this case the legacyResolveSuccessors() will trigger a reload(), which in turn calls init() and then clears the nameCache. A version history does not actually allow same name sibling child nodes, but one of the repository instance I have access to does show this kind of structure.