docs: def getpolicyid(self, fuzzy=True, language=None, windowsversion=None):
          """
          Return an identification string which can be used to find a policy.
  
          This string is a combination of the manifest's processorArchitecture, 
          major and minor version, name, publicKeyToken and language.
          
          Arguments:
          fuzzy (boolean)             - If False, insert the full version in 
                                        the id string. Default is True (omit).
          windowsversion              - If not specified (or None), default to 
          (tuple or list of integers)   sys.getwindowsversion().
          
          """
          if not self.name:
              logger.warn("Assembly metadata incomplete")
              return ""
          id = []
          if self.processorArchitecture:
              id.append(self.processorArchitecture)
          name = []
          name.append("policy")
          if self.version:
              name.append(str(self.version[0]))
              name.append(str(self.version[1]))
          name.append(self.name)
          id.append(".".join(name))
          if self.publicKeyToken:
              id.append(self.publicKeyToken)
          if self.version and (windowsversion or sys.getwindowsversion()) >= (6, ):
              # Vista and later
              if fuzzy:
                  id.append("*")
              else:
                  id.append(".".join([str(i) for i in self.version]))
          if not language:
              language = self.getlanguage(windowsversion=windowsversion)
          if language:
              id.append(language)
          id.append("*")
          id = "_".join(id)
          if self.version and (windowsversion or sys.getwindowsversion()) < (6, ):
              # Windows XP
              if fuzzy:
                  id = os.path.join(id, "*")
              else:
                  id = os.path.join(id, ".".join([str(i) for i in self.version]))
          return id