Sorry, to be barging in from nowhere, but this is a slightly incorrect use of `CHM`. What you need to do is something like this:
```java
RubySymbol existingSymbol = symbolsTable.putIfAbsent(name, symbol);
return existingSymbol == null ? symbol : existingSymbol;
```
Otherwise multiple threads might concurrently call `createSymbol` with the same `String name`, create a bunch of `RubySymbol`s, store them in `symbolsTable` (overwriting each other) and then `return` them to rubyland.