'Creates a new configuration option based on this one.
Note that it is not normally possible to just instantiate the
config object because it will have an empty set of type
descriptors (i.e. no config options will be defined). Config
options are normally defined at import time, and then they get
added to the _CONFIG global in this module.
To obtain a new configuration object, inheriting the regular
config options, this method must be called from the global _CONFIG
object, to make a copy.
Returns:
A new empty config object. which has the same parameter definitions as
this one.'

def MakeNewConfig(self):

    result = self.__class__()
    result.type_infos = self.type_infos
    result.defaults = self.defaults
    result.context = self.context
    result.valid_contexts = self.valid_contexts
    return result
