def _get_nailgun_client(self, jvm_options, classpath, stdout, stderr, stdin):
    'This (somewhat unfortunately) is the main entrypoint to this class via the Runner.\n\n        It handles creation of the running nailgun server as well as creation of the client.\n        '
    classpath = (self._nailgun_classpath + classpath)
    new_fingerprint = self._fingerprint(jvm_options, classpath, self._distribution.version)
    with self._NAILGUN_SPAWN_LOCK:
        (running, updated) = self._check_nailgun_state(new_fingerprint)
        if (running and updated):
            logger.debug('Found running nailgun server that needs updating, killing {server}'.format(server=self._identity))
            self.terminate()
        if ((not running) or (running and updated)):
            return self._spawn_nailgun_server(new_fingerprint, jvm_options, classpath, stdout, stderr, stdin)
    return self._create_ngclient(port=self.socket, stdout=stdout, stderr=stderr, stdin=stdin)
This (somewhat unfortunately) is the main entrypoint to this class via the Runner.

It handles creation of the running nailgun server as well as creation of the client.
def _get_nailgun_client(self, jvm_options, classpath, stdout, stderr, stdin):
    'This (somewhat unfortunately) is the main entrypoint to this class via the Runner.\n\n        It handles creation of the running nailgun server as well as creation of the client.\n        '
    classpath = (self._nailgun_classpath + classpath)
    new_fingerprint = self._fingerprint(jvm_options, classpath, self._distribution.version)
    with self._NAILGUN_SPAWN_LOCK:
        (running, updated) = self._check_nailgun_state(new_fingerprint)
        if (running and updated):
            logger.debug('Found running nailgun server that needs updating, killing {server}'.format(server=self._identity))
            self.terminate()
        if ((not running) or (running and updated)):
            return self._spawn_nailgun_server(new_fingerprint, jvm_options, classpath, stdout, stderr, stdin)
    return self._create_ngclient(port=self.socket, stdout=stdout, stderr=stderr, stdin=stdin)