docs: def find_spec(cls, fullname, path=None, target=None):
          """find the module on sys.path or 'path' based on sys.path_hooks and
          sys.path_importer_cache."""
          if path is None:
              path = sys.path
          spec = cls._get_spec(fullname, path, target)
          if spec is None:
              return None
          elif spec.loader is None:
              namespace_path = spec.submodule_search_locations
              if namespace_path:
                  # We found at least one namespace path.  Return a
                  #  spec which can create the namespace package.
                  spec.origin = 'namespace'
                  spec.submodule_search_locations = _NamespacePath(fullname, namespace_path, cls._get_spec)
                  return spec
              else:
                  return None
          else:
              return spec