docs: def examine(self):
          """Check if there are changes, if true, run the given task."""
          if self._changes:
              return self._changes.pop()
  
          # clean filepath
          self.filepath = None
          delays = set([0])
          for path in self._tasks:
              item = self._tasks[path]
              if self.is_changed(path, item['ignore']):
                  func = item['func']
                  func and func()
                  delay = item['delay']
                  if delay:
                      delays.add(delay)
  
          if 'forever' in delays:
              delay = 'forever'
          else:
              delay = max(delays)
          return self.filepath, delay