docs: public List<AntiCsrfToken> getTokensFromResponse(HttpMessage msg, Source source) {
  		List<AntiCsrfToken> list = new ArrayList<>();
  		List<Element> formElements = source.getAllElements(HTMLElementName.FORM);
  
  		if (formElements != null && formElements.size() > 0) {
  			// Loop through all of the FORM tags
  			log.debug("Found " + formElements.size() + " forms");
  			int formIndex = 0;
  			
  			for (Element formElement : formElements) {
  				List<Element> inputElements = formElement.getAllElements(HTMLElementName.INPUT);
  				
  				if (inputElements != null && inputElements.size() > 0) {
  					// Loop through all of the INPUT elements
  					log.debug("Found " + inputElements.size() + " inputs");
  					for (Element inputElement : inputElements) {
  						String value = inputElement.getAttributeValue("VALUE");
  						if (value == null) {
  							continue;
  						}
  
  						String attId = inputElement.getAttributeValue("ID");
  						boolean found = false;
  						if (attId != null) {
  							for (String tokenName : this.getAntiCsrfTokenNames()) {
  								if (tokenName.equalsIgnoreCase(attId)) {
  									list.add(new AntiCsrfToken(msg, attId, value, formIndex));
  									found = true;
  									break;
  								}
  							}
  						}
  						if (!found) {
  							String name = inputElement.getAttributeValue("NAME");
  							if (name != null) {
  								for (String tokenName : this.getAntiCsrfTokenNames()) {
  									if (tokenName.equalsIgnoreCase(name)) {
  										list.add(new AntiCsrfToken(msg, name, value, formIndex));
  										break;
  									}
  								}
  							}
  						}
  					}
  				}
  				formIndex++;
  			}
  		}
  		return list;
  	}