<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def verify_method(target, method_name, class_level=False):
 """Verifies that the provided method exists on the target object. :param Target target: A ``Target`` object containing the object with the method to double. :param str method_name: The name of the method to double. :raise: ``VerifyingDoubleError`` if the attribute doesn't exist, if it's not a callable object, and in the case where the target is a class, that the attribute isn't an instance method. """


    attr = target.get_attr(method_name)

    if not attr:
        raise VerifyingDoubleError(method_name, target.doubled_obj).no_matching_method()

    if attr.kind == 'data' and not isbuiltin(attr.object) and not is_callable(attr.object):
        raise VerifyingDoubleError(method_name, target.doubled_obj).not_callable()

    if class_level and attr.kind == 'method' and method_name != '__new__':
        raise VerifyingDoubleError(method_name, target.doubled_obj).requires_instance()