Config object uses a special dictionary.

Configuration is applied in the constructor.  Afterward, the contents
of a specific Config instance is read-only.  This ensures that after a
configuration instance is passed to a class that uses it, there are no
concerns about later accidental changes to that instance affecting the
operation of the class, and also ensures that each passing of the
configuration instance doens't have to copy all the data every time.

When passing around a configuration object, the internal data does not
get copied if it is the only thing assigned

    c1 = Config({...})
    c2 = Config(c1)

In this example, c2 doesn't copy the data from the c1.  Since it is read
only with no worry of changing, it simply sets the internal dictionary
to point to the same dictionary in c1.  However, if there is more to
merge, such as:

    c1 = Config({...})
    c2 = Config(c1, {...})

then c2 will copy the data from c1.