docs: def LoadConfig(config_obj,
                 config_file=None,
                 config_fd=None,
                 secondary_configs=None,
                 contexts=None,
                 reset=False,
                 parser=ConfigFileParser):
    """Initialize a ConfigManager with the specified options.
  
    Args:
      config_obj: The ConfigManager object to use and update. If None, one will be
        created.
      config_file: Filename to read the config from.
      config_fd: A file-like object to read config data from.
      secondary_configs: A list of secondary config URLs to load.
      contexts: Add these contexts to the config object.
      reset: Completely wipe previous config before doing the load.
      parser: Specify which parser to use.
  
    Returns:
      The resulting config object. The one passed in, unless None was specified.
    """
    if config_obj is None or reset:
      # Create a new config object.
      config_obj = _CONFIG.MakeNewConfig()
  
    # Initialize the config with a filename or file like object.
    if config_file is not None:
      config_obj.Initialize(filename=config_file, must_exist=True, parser=parser)
    elif config_fd is not None:
      config_obj.Initialize(fd=config_fd, parser=parser)
  
    # Load all secondary files.
    if secondary_configs:
      for config_file in secondary_configs:
        config_obj.LoadSecondaryConfig(config_file)
  
    if contexts:
      for context in contexts:
        config_obj.AddContext(context)
  
    return config_obj