docs: def _get_aggregate_args(self, item, key):
      """
        Get all arguments or mandatory arguments of the item.
  
        Item is a check or a condition, which means it can be dependent on
        more conditions, this climbs down all the way.
      """
      if not key in ('args', 'mandatoryArgs'):
        raise TypeError('key must be "args" or "mandatoryArgs", got {}').format(key)
      dependencies = list(getattr(item, key))
      if hasattr(item, 'conditions'):
        dependencies += [name for negated, name in map(is_negated, item.conditions)]
      args = set()
      while dependencies:
        name = dependencies.pop()
        if name in args:
          continue
        args.add(name)
        # if this is a condition, expand its dependencies
        c = self.conditions.get(name, None)
        if c is None:
          continue
        dependencies += [dependency for dependency in getattr(c, key)
                                                if dependency not in args]
      return args