docs: private void pauseAndTrainModal(List<FormInput> formInputs) {
  
  		/* If we are doing a training crawl, allow the user to edit remaining forms. */
  		WebDriver driver = browser.getWebDriver();
  		driver.manage().timeouts().setScriptTimeout(180, TimeUnit.SECONDS);
  
  		String js = "";
  
  		/* Inject the modal notification. */
  		js += "function addStyleString(str) {";
  		js += "	var node = document.createElement('style');";
  		js += "	node.innerHTML = str;";
  		js += "	document.body.appendChild(node);";
  		js += "}";
  
  		js += "function addHTMLString(str) {";
  		js += "	var modal = document.createElement('div');";
  		js += "	modal.setAttribute('id', 'myModal');";
  		js += "	modal.setAttribute('class', 'modal');";
  		js +=
  				" modal.setAttribute('style', 'display:none;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)');";
  		js += "	modal.innerHTML = str;";
  		js += "	document.body.appendChild(modal);";
  		js += "}";
  
  		js += "addHTMLString(\"" + MODAL_HTML + "\");";
  
  		js += "var modal = document.getElementById('myModal');";
  		js += "var span = document.getElementsByClassName('close')[0];";
  
  		js += "span.onclick = function() {";
  		js += "	modal.style.display = 'none';";
  		js += "};";
  
  		js += "window.onclick = function(event) {";
  		js += "	if (event.target == modal) {";
  		js += "		modal.style.display = 'none';";
  		js += "	}";
  		js += "};";
  
  		js += "modal.style.display = 'block';";
  
  		/* Inject the callback and continuation keys. */
  		js += "var callback = arguments[arguments.length - 1];";
  		js += "var title = document.title;";
  		js += "document.onkeydown = function(e) {";
  		js += "if(e.keyCode === 112) {";
  		js += "document.title = title;";
  		js += "setTimeout(callback, 1);";
  		js += "}";
  		js += "}";
  
  		JavascriptExecutor executor = (JavascriptExecutor) driver;
  		executor.executeAsyncScript(js);
  
  		/*
  		 * Save each FormInput element so the user does not have to enter them again.
  		 */
  		for (FormInput input : formInputs) {
  
  			/* Create the InputValue for this element. */
  			InputValue inputValue = getInputValue(input);
  
  			/* Read the value from the DOM. */
  			Set<InputValue> inputValues = new HashSet<>();
  			inputValues.add(inputValue);
  
  			/* The DOM value is the new input value. */
  			input.inputValues(inputValues);
  
  			/* Label the element as visited. */
  			visited.add(input.getIdentification());
  
  			/* Add this input value to the set. */
  			formInputValueHelper.addTrainingInput(input.getIdentification(), input);
  
  		}
  
  	}