'Modify an arg so we can check if it was set by the user.
Changes the parameters given to argparse when adding an argument
so we can properly detect if the value was set by the user.
:param dict kwargs: various argparse settings for this argument
:returns: a modified versions of kwargs
:rtype: dict'

def modify_kwargs_for_default_detection(self, **kwargs):

    action = kwargs.get('action', None)
    if (action not in EXIT_ACTIONS):
        kwargs['action'] = ('store_true' if (action in ZERO_ARG_ACTIONS) else 'store')
        kwargs['default'] = _Default()
        for param in ARGPARSE_PARAMS_TO_REMOVE:
            kwargs.pop(param, None)
    return kwargs
