code: def _process_dependlist(self, dependlist, anexec, isSubroutine, mode="insert"):
          
          for i in range(len(dependlist)):
              #Since we are looping over all the elements and some will
              #be lists of parameters, we need to skip any items that are lists.
              if isinstance(dependlist[i], list):
                  continue
  
              key = dependlist[i].lower()
              if len(dependlist) > i + 1:
                  has_params = isinstance(dependlist[i + 1], list)
              else:
                  has_params = False
  
              #Clean the dependency key to make sure we are only considering valid
              #executable symbols.
              cleanmatch = self.RE_DEPCLEAN.match(key + "(")
              if not cleanmatch:
                  continue
              else:
                  key = cleanmatch.group("key")
  
              #We need to handle if and do constructs etc. separately
              if key not in ["then", ",", "", "elseif"] and has_params \
                 and not "=" in key and not ">" in key:
                  if key in ["if", "do"]:
                      self._process_dependlist(dependlist[i + 1], anexec, False, mode)
                  else:
                      #This must be valid call to an executable, add it to the list
                      #with its parameters and then process its parameters list
                      #to see if there are more nested executables
                      if mode == "insert":
                          self._add_dependency(key, dependlist, i, isSubroutine, anexec)
                      elif mode == "delete":
                          #Try and find a dependency already in the executable that 
                          #has the same call signature; then remove it.
                          self._remove_dependency(dependlist, i, isSubroutine, anexec)
  
                      self._process_dependlist(dependlist[i + 1], anexec, False, mode)
docs: Processes a list of nested dependencies recursively.