int notPcIndex = -1;
// handle 'call', with and without 'within*'
int nrOfChildren = node.jjtGetNumChildren();
for (int i = 0; i < nrOfChildren; i++) {
Node child = node.jjtGetChild(i);
if (child instanceof ASTNot) {
hasNotPc = true;
notPcIndex = i;
} else if (child instanceof ASTCall || child instanceof ASTHandler) {
hasCallOrHandlerPc = true;
} else if (child instanceof ASTWithin || child instanceof ASTWithinCode) {
hasWithinPc = true;
}
}
// check the child of the 'not' node
if (hasCallOrHandlerPc && hasNotPc) {
Node childChild = node.jjtGetChild(notPcIndex).jjtGetChild(0);
if (childChild instanceof ASTWithin || childChild instanceof ASTWithinCode) {
if (Boolean.TRUE.equals(childChild.jjtAccept(this, data))) {
return Boolean.FALSE;
} else {
return Boolean.TRUE;
}
}