def METHOD_NAME(*args, **kwargs):
    target = self.get_target(*args, **kwargs)
    with target(*dec_args, **dec_kwargs) as obj:
        # insert our object into args
        if kw_name and kw_name not in kwargs:
            kwargs[kw_name] = obj
        elif kw_name and kw_name in kwargs:
            raise TypeError(
                "{}() got multiple values for"
                " argument '{}'".format(func.__name__, kw_name)
            )
        else:
            args = args + (obj,)
        return func(*args, **kwargs)