This approach isn't very effective when contexts are frequently changing, and it is hard to guess in advance which contexts are going to be in-use.
The Sponge version has proven that this whole system isn't really necessary.
Contexts for 'allow all' and 'global' are still pre-processed, however this should be significantly less work for the server. (even if it is being done async)
- Remove usage of Java 8 streams from frequently called methods
- Use LinkedLists where appropriate to improve Iterator#remove speed
- Cache immutable multimap conversion
- Rename some methods to make the intended use/behaviour clearer