The codebase is badly lacking a read-write collection utility that promotes proper use through its API.
RWCollection cannot be manipulated directly, but through views that also hold a lock. It is possible to have several read views at once, but the collection can only be read from using them. It is possible to only hold one write view at once, and the collection can be modified using it.