human
Complete this python program:
def loadfile(method=True, writable=False, create=False):
assistant
#Here is the Python program you requested.

    """A decorator for functions taking a `filething` as a first argument.
    Passes a FileThing instance as the first argument to the wrapped function.
    Args:
    method (bool): If the wrapped functions is a method
    writable (bool): If a filename is passed opens the file readwrite, if
    passed a file object verifies that it is writable.
    create (bool): If passed a filename that does not exist will create
    a new empty file.
    """
    def convert_file_args(args, kwargs):
        filething = (args[0] if args else None)
        filename = kwargs.pop('filename', None)
        fileobj = kwargs.pop('fileobj', None)
        return (filething, filename, fileobj, args[1:], kwargs)
    def wrap(func):
        @wraps(func)
        def wrapper(self, *args, **kwargs):
            (filething, filename, fileobj, args, kwargs) = convert_file_args(args, kwargs)
            with _openfile(self, filething, filename, fileobj, writable, create) as h:
                return func(self, h, *args, **kwargs)
        @wraps(func)
        def wrapper_func(*args, **kwargs):
            (filething, filename, fileobj, args, kwargs) = convert_file_args(args, kwargs)
            with _openfile(None, filething, filename, fileobj, writable, create) as h:
                return func(h, *args, **kwargs)
        return (wrapper if method else wrapper_func)
    return wrap