code: def update(self, *sources, follow_symlinks: bool=False,
                 maximum_depth: int=20):
          for source in sources:
              if isinstance(source, self.klass):
                  self.path_map[source.this.name.value] = source
                  self.class_cache[source.this.name.value] = source
                  continue
              source = str(source)
              if source.lower().endswith(('.zip', '.jar')):
                  zf = ZipFile(source, 'r')
                  self.path_map.update(zip(zf.namelist(), repeat(zf)))
              elif os.path.isdir(source):
                  walker = _walk(
                      source,
                      follow_links=follow_symlinks,
                      maximum_depth=maximum_depth
                  )
                  for root, dirs, files in walker:
                      for file_ in files:
                          path_full = os.path.join(root, file_)
                          path_suffix = os.path.relpath(path_full, source)
                          self.path_map[path_suffix] = path_full