docs: def _generate_neuron_files_from_neuroml(network, verbose=False, dir_for_mod_files = None):
      """
      Generate NEURON hoc/mod files from the NeuroML files which are marked as 
      included in the NeuroMLlite description; also compiles the mod files
      """
  
      print_v("-------------   Generating NEURON files from NeuroML for %s (default dir: %s)..." % (network.id, dir_for_mod_files))
      nml_src_files = []
  
      from neuroml import NeuroMLDocument
      import neuroml.writers as writers
      temp_nml_doc = NeuroMLDocument(id="temp")
      
      dirs_for_mod_files = []
      if dir_for_mod_files!=None:
          dirs_for_mod_files.append(os.path.abspath(dir_for_mod_files))
  
      for c in network.cells:
          if c.neuroml2_source_file:
              nml_src_files.append(c.neuroml2_source_file)
              dir_for_mod = os.path.dirname(os.path.abspath(c.neuroml2_source_file))
              if not dir_for_mod in dirs_for_mod_files: dirs_for_mod_files.append(dir_for_mod)
                  
      for s in network.synapses:
          if s.neuroml2_source_file:
              nml_src_files.append(s.neuroml2_source_file)
              dir_for_mod = os.path.dirname(os.path.abspath(s.neuroml2_source_file))
              if not dir_for_mod in dirs_for_mod_files: dirs_for_mod_files.append(dir_for_mod)
  
      for i in network.input_sources:
          if i.neuroml2_source_file:
              nml_src_files.append(i.neuroml2_source_file)
              dir_for_mod = os.path.dirname(os.path.abspath(i.neuroml2_source_file))
              if not dir_for_mod in dirs_for_mod_files: dirs_for_mod_files.append(dir_for_mod)
                  
      temp_nml_doc = _extract_pynn_components_to_neuroml(network)
        
      summary = temp_nml_doc.summary()
      
      if 'IF_' in summary: 
          import tempfile
          temp_nml_file = tempfile.NamedTemporaryFile(delete=False, suffix='.nml', dir=dir_for_mod_files)
          print_v("Writing temporary NML file to: %s, summary: "%temp_nml_file.name)
          print_v(summary)
  
          writers.NeuroMLWriter.write(temp_nml_doc, temp_nml_file.name)
          nml_src_files.append(temp_nml_file.name)
  
      for f in nml_src_files:
          from pyneuroml import pynml
          print_v("Generating/compiling hoc/mod files for: %s"%f)
          pynml.run_lems_with_jneuroml_neuron(f, 
                                              nogui=True, 
                                              only_generate_scripts=True,
                                              compile_mods=True,
                                              verbose=False)
  
      for dir_for_mod_files in dirs_for_mod_files:
          if not dir_for_mod_files in locations_mods_loaded_from:
              print_v("Generated NEURON code; loading mechanisms from %s (cwd: %s; already loaded: %s)" % (dir_for_mod_files,os.getcwd(),locations_mods_loaded_from))
              try:
  
                  from neuron import load_mechanisms
                  if os.getcwd()==dir_for_mod_files:
                      print_v("That's current dir => importing neuron module loads mods here...")
                  else:
                      load_mechanisms(dir_for_mod_files)
                  locations_mods_loaded_from.append(dir_for_mod_files)
              except:
                  print_v("Failed to load mod file mechanisms...")
          else:
              print_v("Already loaded mechanisms from %s (all loaded: %s)" % (dir_for_mod_files,locations_mods_loaded_from))