code: def loadfile(method=True, writable=False, create=False):
      
  
      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
docs: 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.