docs: def package_contents(self):
          'Returns a dictionary of file information'
  
          if self.contents_cache:
              return self.contents_cache
  
          # Get a list of ZipInfo objects.
          files = self.zf.infolist()
          out_files = {}
  
          # Iterate through each file in the XPI.
          for file_ in files:
  
              file_doc = {'name': file_.filename,
                          'size': file_.file_size,
                          'name_lower': file_.filename.lower()}
  
              file_doc['extension'] = file_doc['name_lower'].split('.')[-1]
  
              out_files[file_.filename] = file_doc
  
          self.contents_cache = out_files
          return out_files