<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_parser(self, *args, **kwargs):
 """each time a subparser action is used to create a new parser object we must save the original args & kwargs. In a later phase of configman, we'll need to reproduce the subparsers exactly without resorting to copying. We save the args & kwargs in the 'foreign_data' section of the configman option that corresponds with the subparser action."""

        command_name = args[0]
        new_kwargs = kwargs.copy()
        new_kwargs['configman_subparsers_option'] = self._configman_option
        new_kwargs['subparser_name'] = command_name
        subparsers = self._configman_option.foreign_data.argparse.subparsers
        a_subparser = super(ConfigmanSubParsersAction, self).add_parser(
            *args,
            **new_kwargs
        )
        subparsers[command_name] = DotDict({
            "args": args,
            "kwargs": new_kwargs,
            "subparser": a_subparser
        })
        return a_subparser