The Issue
Currently, accessing and mutating a block graph from multiple threads is likely to cause a ConcurrentModificationException or just give inconsistent data. The SimpleBlockGraph, SimpleBlockGraphController, and UnloadingRegionBasedStorage all expect to be used from a single thread only.
Potential Fix
It would likely not be too hard to add in some synchronization primitives, to allow for efficient use from multiple threads. This may be something like a RWLock for each internal collection.