'Registers an option with the configuration system.
Args:
descriptor: A TypeInfoObject instance describing the option.
constant: If this is set, the option is treated as a constant - it can be
read at any time (before parsing the configuration) and it\'s an
error to try to override it in a config file.
Raises:
RuntimeError: The descriptor\'s name must contain a . to denote the section
name, otherwise we raise.
AlreadyInitializedError: If the config has already been read it\'s too late
to define new options.'

def AddOption(self, descriptor, constant=False):

    if self.initialized:
        raise AlreadyInitializedError(('Config    was    already    initialized    when    defining    %s' % descriptor.name))
    descriptor.section = descriptor.name.split('.')[0]
    if (descriptor.name in self.type_infos):
        logging.warning('Config    Option    %s    multiply    defined!', descriptor.name)
    self.type_infos.Append(descriptor)
    if constant:
        self.constants.add(descriptor.name)
    self.defaults[descriptor.name] = descriptor.GetDefault()
    self.FlushCache()
