Referência de objeto obsoleto durante a navegação usando o Selenium

Eu tenho tentado um programa simples que navega e busca dados da nova página, volta ao histórico e abre outra página e busca dados e assim por diante até que todos os links tenham sido visitados e os dados sejam buscados.

Depois de obter resultados no site abaixo, estou tentando percorrer todos os links que recebo na primeira coluna e abrir esses links um a um e extrair o texto de cada uma dessas páginas. Mas o programa abaixo apenas visita o primeiro link e fornece StaleElementReferenceException, tentei usarActions mas não funcionou e não estou ciente sobreJavascriptExecutor. Eu também tentei soluções postadas em outras questões de SO, uma das quais era minhaaqui. Gostaria de corrigir o erro no código abaixo e em um código que funcione.

public class Selenium {

    private final static String CHROME_DRIVER = "C:\\Selenium\\chromedriver\\chromedriver.exe";
    private static WebDriver driver = null;
    private static WebDriverWait wait = null;

    private void setConnection() {
        try {
            System.setProperty("webdriver.chrome.driver", CHROME_DRIVER);
            driver = ChromeDriver.class.newInstance();
            wait = new WebDriverWait(driver, 5);
            driver.get("https://sanctionssearch.ofac.treas.gov");
            this.search();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void search() {
        try {
            driver.findElement(By.id("ctl00_MainContent_txtLastName")).sendKeys("Dawood");
            driver.findElement(By.id("ctl00_MainContent_btnSearch")).click();
            this.extractText();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void extractText() {
        try {
            List<WebElement> rows = driver.findElements(By.xpath("//*[@id='gvSearchResults']/tbody/tr"));
            List<WebElement> links = null;
            for (int i = 1; i <= rows.size(); i++) {

                links = driver.findElements(By.xpath("//*[@id='gvSearchResults']/tbody/tr/td[1]/a"));

                for (int j = 0; j < links.size(); j++) {
                    System.out.println(links.get(j).getText() + ", ");
                    links.get(j).click();
                    System.out.println("Afte click");
                    driver.findElement(By.id("ctl00_MainContent_btnBack")).click();
                    this.search();
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] ar) {
        Selenium object = new Selenium();
        object.setConnection();
    }

}

questionAnswers(3)

yourAnswerToTheQuestion