def METHOD_NAME(
    self,
    expected_output: Optional[List[str]],
    stdin: Optional[str] = None,
    options: Optional[List[str]] = None,
    retries: int = 30,
    assert_loaded_saved_state: bool = False,
) -> Tuple[str, str]:
    if options is None:
        options = []
    time.sleep(2)  # wait for Hack to catch up with file system changes
    root = self.repo_dir + os.path.sep
    (output, err, retcode) = self.proc_call(
        [
            hh_client,
            "check",
            "--retries",
            "120",
            "--no-load",
            "--error-format",
            "raw",
            "--config",
            "max_workers=2",
            self.repo_dir,
        ]
        + list(map(lambda x: x.format(root=root), options)),
        stdin=stdin,
    )
    if (retcode == 6 or retcode == 7) and retries > 0:
        # 6 = "No_server_running_should_retry" or "Server_hung_up_should_retry"
        # 7 = "Out_of_time" or "Out_of_retries"
        return self.METHOD_NAME(expected_output, stdin, options, retries - 1)
    if retcode == 7:
        raise unittest.SkipTest("Hack server exit code 7 - out of time/retries")
    self.assertIn(retcode, [0, 2])
    if expected_output is not None:
        self.assertCountEqual(
            map(lambda x: x.format(root=root), expected_output), output.splitlines()
        )
    return output, err