Deque<Integer> subexpressionIdStack = new ArrayDeque<Integer>(assignedTypeNumberStack);
ExprEvaluatorContext evaluatorContextStmt = new ExprEvaluatorContextStatement(context);
Stack<EvalFactoryNode> nodeStack = new Stack<EvalFactoryNode>();
recursiveCompile(evalFactoryNode, context, evaluatorContextStmt, eventTypeReferences, isInsertInto, tags, subexpressionIdStack, nodeStack);
Audit auditPattern = AuditEnum.PATTERN.getAudit(context.getAnnotations());
Audit auditPatternInstance = AuditEnum.PATTERNINSTANCES.getAudit(context.getAnnotations());
EvalFactoryNode compiledEvalFactoryNode = evalFactoryNode;
if (auditPattern != null || auditPatternInstance != null) {
EvalAuditInstanceCount instanceCount = new EvalAuditInstanceCount();
compiledEvalFactoryNode = recursiveAddAuditNode(null, auditPattern != null, auditPatternInstance != null, evalFactoryNode, evalNodeExpressions, instanceCount);
}