docs: def MakeNewConfig(self):
      """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.
      """
      result = self.__class__()
  
      # We do not need to copy here since these never change.
      result.type_infos = self.type_infos
      result.defaults = self.defaults
      result.context = self.context
      result.valid_contexts = self.valid_contexts
  
      return result