code: def changed(self, symbol, checked = None):
          
          #Initialize the dictionary if we are the first executable to call this.
          myname = "{}.{}".format(self.module.name, self.name).lower()
          if checked is None:
              checked = []
  
          if myname not in checked:
              matches = self._get_assignments_in(self._parameters, symbol)
              if (matches is not None and
                  (isinstance(matches, bool) and matches == True) or
                  (isinstance(matches, list) and len(matches) > 0)):
                  return myname
              else:
                  #Make sure we don't check any executable twice.
                  checked.append(myname)
                  #We need to check the dependencies of this executable and
                  #see if any of them modify the parameter.
                  for dependlist in self.dependencies:
                      for dependency in self.dependencies[dependlist]:
                          if dependency.operator:
                              continue
  
                          if symbol in dependency.argnames:
                              pindex = dependency.argnames.index(symbol)
                              iexec = dependency.target
                              if iexec is not None:
                                  pname = iexec.ordered_parameters[pindex].name.lower()
                                  if iexec.changed(pname, checked) != "":
                                      return iexec.full_name
                              else:
                                  checked.append(dependency.external_name)
                          else:
                              checked.append(dependency.external_name)
          else:
              return None
docs: Returns true if the specified symbol has it's value changed
          by this executable or *any* of its dependencies.