public void visitNode(AstNode astNode) {
if (astNode.is(EcmaScriptGrammar.LABELLED_STATEMENT)) {
String label = astNode.getFirstChild(EcmaScriptTokenType.IDENTIFIER).getTokenValue();
jumpTargets.push(new JumpTarget(label));
} else if (astNode.is(EcmaScriptGrammar.BREAK_STATEMENT, EcmaScriptGrammar.CONTINUE_STATEMENT)) {
AstNode labelNode = astNode.getFirstChild(EcmaScriptTokenType.IDENTIFIER);
String label = labelNode == null ? null : labelNode.getTokenValue();
for (int i = jumpTargets.size() - 1; i >= 0; i--) {
JumpTarget jumpTarget = jumpTargets.get(i);
jumpTarget.jumps++;
if (Objects.equal(label, jumpTarget.label)) {
break;