def METHOD_NAME(*exclusive_params):
    """Provide decorator.
    The decorator raises an exception if more than one
    of the specified parameters has been supplied and is not None
    Usage:
    @mutually_exclusive_parameters('a', 'b')
    def foo(a=None, b=None, c=None):
        pass
    """
    def _mutually_exclusive_parameters(func):
        """Provide a decorator."""
        signature_params = _get_arg_spec(func, exclusive_params)
        def wrapped(function, *args, **kwargs):
            """Provide a wrapped function (whose docstring will get replaced)."""
            supplied_args = _get_supplied_args(signature_params, args, kwargs)
            clashes = [
                argument for argument in supplied_args if argument in exclusive_params
            ]
            if len(clashes) > 1:
                raise InvalidParameterError(
                    "These parameters are mutually exclusive: {arg}.".format(
                        arg=", ".join(clashes),
                    ),
                )
            return function(*args, **kwargs)
        return decorator(wrapped, func)
    return _mutually_exclusive_parameters