src/main/java/js/http/captcha/Captcha.java
@Remote
	public Challenge verifyResponse(int captchaIndex, String challengeResponse) throws IllegalArgumentException, IllegalStateException {
		Params.notNullOrEmpty(challengeResponse, "Challenge response");
		Challenge challenge = getChallenges().get(captchaIndex);
		if (challenge == null) {
			throw new IllegalStateException("Invalid challenge on session.");
		}
		return challenge.verifyResponse(challengeResponse) ? null : getChallenge(captchaIndex);
	}
@Remote
	public Challenge verifyResponse(int captchaIndex, String challengeResponse) throws IllegalArgumentException, IllegalStateException {
		Params.notNullOrEmpty(challengeResponse, "Challenge response");
		Challenge challenge = getChallenges().get(captchaIndex);
		if (challenge == null) {
			throw new IllegalStateException("Invalid challenge on session.");
		}
		return challenge.verifyResponse(challengeResponse) ? null : getChallenge(captchaIndex);
	}
Verify challenge response. If response is not correct returns a new challenge used by client to update user interface. It
is highly recommended to refresh challenge on wrong answer to prevent response guessing.
<p>
Instance index should be the same provided to {@link #getChallenge(int)}. This is critical and client should consider
this constrain. Anyway, using wrong CAPTCHA instance index is not a security breach; it always consider response as
invalid.

@param captchaIndex CAPTCHA instance index,
@param challengeResponse challenge response from client.
@return null if response is correct or a new challenge.
@throws IllegalArgumentException if given challenge response is null or empty.
@throws IllegalStateException if there is no challenge on session.