Returns a new thread-safe interner which retains a strong reference to each instance it has
interned, thus preventing these instances from being garbage-collected. If this retention is
acceptable, this implementation may perform better than newWeakInterner(). Note that
unlike java.lang.String.intern(), using this interner does not consume memory in the permanent
generation.

Returns a new thread-safe interner which retains a weak reference to each instance it has
interned, and so does not prevent these instances from being garbage-collected. This most
likely does not perform as well as newStrongInterner(), but is the best alternative
when the memory usage of that implementation is unacceptable. Note that unlike java.lang.String.intern(), using this interner does not consume memory in the permanent generation.