docs: def Process(self, path):
      """Processes a given path.
  
      Args:
        path: Path (as a string) to post-process.
  
      Returns:
        A list of paths with environment variables replaced with their
        values. If the mapping had a list of values for a particular variable,
        instead of just one value, then all possible replacements will be
        returned.
      """
      path = re.sub(self.SYSTEMROOT_RE, r"%systemroot%", path, count=1)
      path = re.sub(self.SYSTEM32_RE, r"%systemroot%\\system32", path, count=1)
  
      matches_iter = self.WIN_ENVIRON_REGEX.finditer(path)
      var_names = set(m.group(1).lower() for m in matches_iter)
  
      results = [path]
      for var_name in var_names:
        try:
          var_regex, var_value = self.vars_map[var_name]
        except KeyError:
          continue
  
        if isinstance(var_value, string_types):
          replacements = [var_value]
        else:
          replacements = var_value
  
        processed_results = []
        for result in results:
          for repl in replacements:
            # Using lambda here, as otherwise Python interprets \\f as a
            # backreference (same applies to \\0 and \\1). When using a
            # function as a replacement argument, backreferences are ignored.
            # pylint: disable=cell-var-from-loop
            processed_results.append(var_regex.sub(lambda _: repl, result))
        results = processed_results
  
      return results