'Adds an argument to be parsed.
Accepts either a single instance of Argument or arguments to be passed
into :class:`Argument`\'s constructor.
See :class:`Argument`\'s constructor for documentation on the
available options.'

def add_argument(self, *args, **kwargs):

    if ((len(args) == 1) and isinstance(args[0], self.argument_class)):
        self.args.append(args[0])
    else:
        self.args.append(self.argument_class(*args, **kwargs))
    if (self.trim and (self.argument_class is Argument)):
        self.args[(-1)].trim = kwargs.get('trim', self.trim)
    return self
