It probably makes more sense to synchronize on the `SharedJRubyEnvironment.class` instead of the sharedData since that value is exposed elsewhere, you potentially don't know who else may or may not be synchronizing on it externally and for what reason. Also, it seems strange to synchronize on a concurrent object.