A thread-safe version of
Map in which all operations that change the
Map are implemented by making a new copy of the underlying Map.
While the creation of a new Map can be expensive, this class is designed for
cases in which the primary function is to read data from the Map, not to
modify the Map.