code: def process_loaded_configs(self, values):
          
          unresolved_value_keys = self._process_config_values([], values, [])
          if len(unresolved_value_keys) > 0:
              msg = "Unresolved values for: {}".format(unresolved_value_keys)
              # Even though we will fail, there might be a situation when we want to 
              # do something with the list of missing values, so pass it to a handler.
              self.on_process_loaded_configs_failure(values, unresolved_value_keys)
              if self.ignore_errors:
                  # If we're ignoring errors, at least log it
                  logging.warn(msg)
              else:
                  # end program
                  raise LookupError(msg)
  
          # All the config values were checked and everything looks good, 
          # let's inform post handler for any additional work.
          self.on_process_loaded_configs_complete(values)
          
          return values
docs: Takes the loaded config values (from YAML files) and performs the
          following clean up steps:
          
          1. remove all value keys that are not uppercase
          2. resolve any keys with missing values
  
          Note: resolving missing values does not fail fast, we will collect
          all missing values and report it to a post handler, then finally fail.
  
          @param values dictionary of raw, newly loaded config values