code: def ExpandWindowsPath(cls, path, environment_variables):
      
      if environment_variables is None:
        environment_variables = []
  
      lookup_table = {}
      if environment_variables:
        for environment_variable in environment_variables:
          attribute_name = environment_variable.name.upper()
          attribute_value = environment_variable.value
          if not isinstance(attribute_value, py2to3.STRING_TYPES):
            continue
  
          lookup_table[attribute_name] = attribute_value
  
      path_segments = path.split('\\')
      # Make a copy of path_segments since this loop can change it.
      for index, path_segment in enumerate(list(path_segments)):
        if (len(path_segment) <= 2 or not path_segment.startswith('%') or
            not path_segment.endswith('%')):
          continue
  
        path_segment_upper_case = path_segment.upper()
        if path_segment_upper_case.startswith('%%ENVIRON_'):
          lookup_key = path_segment_upper_case[10:-2]
        else:
          lookup_key = path_segment_upper_case[1:-1]
        path_segment = lookup_table.get(lookup_key, path_segment)
        path_segment = path_segment.split('\\')
  
        expanded_path_segments = list(path_segments[:index])
        expanded_path_segments.extend(path_segment)
        expanded_path_segments.extend(path_segments[index + 1:])
  
        path_segments = expanded_path_segments
  
      if cls._IsWindowsDrivePathSegment(path_segments[0]):
        path_segments[0] = ''
  
      return '\\'.join(path_segments)
docs: Expands a Windows path containing environment variables.
  
      Args:
        path (str): Windows path with environment variables.
        environment_variables (list[EnvironmentVariableArtifact]): environment
            variables.
  
      Returns:
        str: expanded Windows path.