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)
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.