docs: @Override
      public void preStateCrawling(CrawlerContext context,
                                   ImmutableList<CandidateElement> candidateElements, StateVertex state) {
          LOG.debug("preStateCrawling");
          List<CandidateElementPosition> newElements = Lists.newLinkedList();
          LOG.info("Prestate found new state {} with {} candidates", state.getName(),
                  candidateElements.size());
          for (CandidateElement element : candidateElements) {
              try {
                  WebElement webElement = getWebElement(context.getBrowser(), element);
                  if (webElement != null) {
                      newElements.add(findElement(webElement, element));
                  }
              } catch (WebDriverException e) {
                  LOG.info("Could not get position for {}", element, e);
              }
          }
  
          StateBuilder stateOut = outModelCache.addStateIfAbsent(state);
          stateOut.addCandidates(newElements);
          LOG.trace("preState finished, elements added to state");
      }