docs: def canonic(self, file_name):
          """ returns canonical version of a file name.
          A canonical file name is an absolute, lowercase normalized path 
          to a given file.
          """
          if file_name == "<" + file_name[1:-1] + ">":
              return file_name
          c_file_name = self.file_name_cache.get(file_name)
          if not c_file_name:
              c_file_name = os.path.abspath(file_name)
              c_file_name = os.path.normcase(c_file_name)
              self.file_name_cache[file_name] = c_file_name
          return c_file_name