code: def _collect_classes(m):
      
      from f311 import filetypes as ft
      from f311 import explorer as ex
  
      def _extend(classes, newclasses):
          """Filters out classes already present in list.
  
          This shouldn't be necessary, but collaborators may accidentally import already loaded
          classes into the datatypes namespace"""
          classes.extend([class_ for class_ in newclasses if class_ not in classes])
          # classes.extend(newclasses)
  
      file_classes = [class_ for class_ in a99.get_classes_in_module(m, ft.DataFile) if class_.flag_collect]
  
      # Classes to consider when attempts to load a text file (see load_any_file())
      _extend(_classes_txt, [class_ for class_ in file_classes if class_.flag_txt])
  
      # Classes to consider when attempts to load a binary file (see load_any_file())
      _extend(_classes_bin, [class_ for class_ in file_classes if not class_.flag_txt])
      # Adds Classes to consider when attempts to load a spectrum file (see load_spectrum())
      _extend(_classes_sp, [class_ for class_ in file_classes if issubclass(class_, ft.FileSpectrum)])
      # All kwown File* classes
      _extend(_classes_file, file_classes)
      # All kwnown Vis* classes
  
      _extend(_classes_vis, a99.get_classes_in_module(m, ex.Vis))
  
      global _classes_file_superclass
      _classes_file_superclass = [cls.__bases__[0] for cls in _classes_file]
docs: Adds entries to _classes_*
  
      Args:
          m: module object that must contain the following sub-modules: datatypes, vis