@Override public JoinHash get() { // We need to create new JoinFilterFunction per each thread using it, since those functions // are not thread safe... Optional<JoinFilterFunction> filterFunction = filterFunctionFactory.map(factory -> factory.create(session.toConnectorSession(), addresses, pages)); return new JoinHash( pagesHash, filterFunction, positionLinks.map(links -> { List<JoinFilterFunction> searchFunctions = searchFunctionFactories.stream() .map(factory -> factory.create(session.toConnectorSession(), addresses, pages)) .collect(toImmutableList()); return links.create(searchFunctions); })); } }