Enhanced StringPool with the ability to remove strings from the pool
Strings can now be removed from the StringPool, thus avoiding the need to rebuild it entirely. On removal an existing intern (and the associated unique id) is marked "unused" and will be recycled upon a later interning. If all interns are removed from the pool, it resizes itself back to the initial empty state to minimize it's working memory footprint.
Enhanced StringPool with the ability to remove strings from the pool
Strings can now be removed from the StringPool, thus avoiding the need to
rebuild it entirely. On removal an existing intern (and the associated
unique id) is marked "unused" and will be recycled upon a later interning.
If all interns are removed from the pool, it resizes itself back to the
initial empty state to minimize it's working memory footprint.