docs: def split_args(self, arg_dict):
          """
          given a dictionary of arguments, split them into
          args and kwargs
  
          note: this destroys the arg_dict passed. if you need it,
          create a copy first.
          """
          pos_args = []
          for arg in self.args:
              pos_args.append(arg_dict[arg.name])
              del arg_dict[arg.name]
          return pos_args, arg_dict