code: def _build_evaluation_parameters(self, expectation_args, evaluation_parameters):
          
  
          evaluation_args = copy.deepcopy(expectation_args)
  
          # Iterate over arguments, and replace $PARAMETER-defined args with their
          # specified parameters.
          for key, value in evaluation_args.items():
              if isinstance(value, dict) and '$PARAMETER' in value:
                  # First, check to see whether an argument was supplied at runtime
                  # If it was, use that one, but remove it from the stored config
                  if "$PARAMETER." + value["$PARAMETER"] in value:
                      evaluation_args[key] = evaluation_args[key]["$PARAMETER." +
                                                                  value["$PARAMETER"]]
                      del expectation_args[key]["$PARAMETER." +
                                                value["$PARAMETER"]]
                  elif evaluation_parameters is not None and value["$PARAMETER"] in evaluation_parameters:
                      evaluation_args[key] = evaluation_parameters[value['$PARAMETER']]
                  else:
                      raise KeyError(
                          "No value found for $PARAMETER " + value["$PARAMETER"])
  
          return evaluation_args
docs: Build a dictionary of parameters to evaluate, using the provided evaluation_paramters,
          AND mutate expectation_args by removing any parameter values passed in as temporary values during
          exploratory work.