docs: def get_instance(jar_filename=None, version=None,
                       download_if_missing=True, backend='jpype',
                       **extra_args):
          """This is the typical mechanism of constructing a
          StanfordDependencies instance. The backend parameter determines
          which backend to load (currently can be 'subprocess' or 'jpype').
  
          To determine which jar file is used, you must specify
          jar_filename, download_if_missing=True, and/or version.
          - If jar_filename is specified, that jar is used and the other two
            flags are ignored.
          - Otherwise, if download_if_missing, we will download a jar file
            from the Maven repository. This jar file will be the latest
            known version of CoreNLP unless the version flag is specified
            (e.g., version='3.4.1') in which case we'll attempt to download
            and use that version. Once downloaded, it will be stored in
            your home directory and not downloaded again.
          - If jar_filename and download_if_missing are not specified,
            version must be set to a version previously downloaded in the
            above step.
  
          All remaining keyword arguments are passes on to the
          StanfordDependencies backend constructor.
  
          If the above options are confusing, don't panic! You can leave
          them all blank -- get_instance() is designed to provide the best
          and latest available conversion settings by default."""
          StanfordDependencies._raise_on_bad_jar_filename(jar_filename)
          extra_args.update(jar_filename=jar_filename,
                            download_if_missing=download_if_missing,
                            version=version)
          if backend == 'jpype':
              try:
                  from .JPypeBackend import JPypeBackend
                  return JPypeBackend(**extra_args)
              except ImportError:
                  warnings.warn('Error importing JPypeBackend, '
                                'falling back to SubprocessBackend.')
                  backend = 'subprocess'
              except RuntimeError as r:
                  warnings.warn('RuntimeError with JPypeBackend (%s), '
                                'falling back to SubprocessBackend.' % r[0])
                  backend = 'subprocess'
              except TypeError as t:
                  warnings.warn('TypeError with JPypeBackend (%s), '
                                'falling back to SubprocessBackend.' % t[0])
                  backend = 'subprocess'
  
          if backend == 'subprocess':
              from .SubprocessBackend import SubprocessBackend
              return SubprocessBackend(**extra_args)
  
          raise ValueError("Unknown backend: %r (known backends: "
                           "'subprocess' and 'jpype')" % backend)