def METHOD_NAME(self, method_name, *args, **kwargs):
    """trace the execution of the method with the given name and will
    patch the first arg.
    """
    method = getattr(self.__wrapped__, method_name)
    with self._span(method_name) as span:
        if span and args:
            span.set_tag_str(memcached.QUERY, "%s %s" % (method_name, args[0]))
        if method_name == "get":
            result = method(*args, **kwargs)
            span.set_metric(db.ROWCOUNT, 1 if result else 0)
            return result
        elif method_name == "gets":
            result = method(*args, **kwargs)
            # returns a tuple object that may be (None, None)
            span.set_metric(db.ROWCOUNT, 1 if isinstance(result, Iterable) and len(result) > 0 and result[0] else 0)
            return result
        else:
            return method(*args, **kwargs)