code: def _process_dependencies(self, anexec, contents, mode="insert"):
          
          #At this point we don't necessarily know which module the executables are
          #in, so we just extract the names. Once all the modules in the library
          #have been parsed, we can do the associations at that level for linking.
          for dmatch in self.RE_DEPEND.finditer(contents):
              isSubroutine = dmatch.group("sub") is not None
              if "!" in dmatch.group("exec"):
                  execline = self._depend_exec_clean(dmatch.group("exec"))
              else:
                  execline = "(" + dmatch.group("exec").split("!")[0].replace(",", ", ") + ")"
  
              if not "::" in execline:
                  try:
                      dependent = self.nester.parseString(execline).asList()[0]
                  except:
                      msg.err("parsing executable dependency call {}".format(anexec.name))
                      msg.gen("\t" + execline)
              
                  #Sometimes the parameter passed to a subroutine or function is 
                  #itself a function call. These are always the first elements in
                  #their nested lists.
                  self._process_dependlist(dependent, anexec, isSubroutine, mode)
docs: Extracts a list of subroutines and functions that are called from
          within this executable.
  
          :arg mode: specifies whether the matches should be added, removed
            or merged into the specified executable.