/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esper.metrics.instrumentation;
import com.espertech.esper.client.EPStatementState;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.collection.MultiKey;
import com.espertech.esper.collection.Pair;
import com.espertech.esper.collection.UniformPair;
import com.espertech.esper.core.context.util.AgentInstanceContext;
import com.espertech.esper.core.context.util.ContextDescriptor;
import com.espertech.esper.core.context.util.EPStatementAgentInstanceHandle;
import com.espertech.esper.core.service.EPStatementHandle;
import com.espertech.esper.core.service.InternalEventRouterEntry;
import com.espertech.esper.epl.agg.access.AggregationState;
import com.espertech.esper.epl.agg.aggregator.AggregationMethod;
import com.espertech.esper.epl.core.OrderByElement;
import com.espertech.esper.epl.expression.baseagg.ExprAggregateNode;
import com.espertech.esper.epl.expression.baseagg.ExprAggregateNodeBase;
import com.espertech.esper.epl.expression.core.*;
import com.espertech.esper.epl.expression.dot.ExprDotEval;
import com.espertech.esper.epl.expression.dot.ExprDotNode;
import com.espertech.esper.epl.expression.funcs.*;
import com.espertech.esper.epl.expression.ops.*;
import com.espertech.esper.epl.expression.prev.ExprPreviousNode;
import com.espertech.esper.epl.expression.prior.ExprPriorNode;
import com.espertech.esper.epl.expression.subquery.ExprSubselectNode;
import com.espertech.esper.epl.expression.time.ExprTimePeriodImpl;
import com.espertech.esper.epl.expression.time.ExprTimestampNode;
import com.espertech.esper.epl.join.exec.base.JoinExecTableLookupStrategy;
import com.espertech.esper.epl.join.table.EventTable;
import com.espertech.esper.epl.lookup.SubordTableLookupStrategy;
import com.espertech.esper.epl.lookup.SubordWMatchExprLookupStrategyType;
import com.espertech.esper.epl.named.NamedWindowConsumerView;
import com.espertech.esper.epl.named.NamedWindowDeltaData;
import com.espertech.esper.epl.rettype.EPType;
import com.espertech.esper.epl.spec.ExpressionDeclItem;
import com.espertech.esper.epl.spec.OnTriggerType;
import com.espertech.esper.epl.updatehelper.EventBeanUpdateItem;
import com.espertech.esper.filter.*;
import com.espertech.esper.pattern.*;
import com.espertech.esper.rowregex.RegexNFAState;
import com.espertech.esper.rowregex.RegexNFAStateEntry;
import com.espertech.esper.rowregex.RegexPartitionState;
import com.espertech.esper.schedule.ScheduleHandle;
import com.espertech.esper.type.BitWiseOpEnum;
import com.espertech.esper.view.View;
import java.lang.reflect.Method;
import java.util.*;
public interface Instrumentation {
void qStimulantEvent(EventBean eventBean, String engineURI);
void aStimulantEvent();
void qStimulantTime(long currentTime, String engineURI);
void aStimulantTime();
void qEvent(EventBean eventBean, String engineURI, boolean providedBySendEvent);
void aEvent();
void qEventCP(EventBean theEvent, EPStatementAgentInstanceHandle handle, long engineTime);
void aEventCP();
void qTime(long engineTime, String engineURI);
void aTime();
void qTimeCP(EPStatementAgentInstanceHandle handle, long engineTime);
void aTimeCP();
void qNamedWindowDispatch(String engineURI);
void aNamedWindowDispatch();
void qNamedWindowCPSingle(String engineURI, List<NamedWindowConsumerView> value, EventBean[] newData, EventBean[] oldData, EPStatementAgentInstanceHandle handle, long time);
void aNamedWindowCPSingle();
void qNamedWindowCPMulti(String engineURI, Map<NamedWindowConsumerView, NamedWindowDeltaData> deltaPerConsumer, EPStatementAgentInstanceHandle handle, long time);
void aNamedWindowCPMulti();
void qRegEx(EventBean newEvent, RegexPartitionState partitionState);
void aRegEx(RegexPartitionState partitionState, List<RegexNFAStateEntry> endStates, List<RegexNFAStateEntry> terminationStates);
void qRegExState(RegexNFAStateEntry currentState, LinkedHashMap<String, Pair<Integer, Boolean>> variableStreams, int[] multimatchStreamNumToVariable);
void aRegExState(List<RegexNFAStateEntry> next, LinkedHashMap<String, Pair<Integer, Boolean>> variableStreams, int[] multimatchStreamNumToVariable);
void qRegExStateStart(RegexNFAState startState, LinkedHashMap<String, Pair<Integer, Boolean>> variableStreams, int[] multimatchStreamNumToVariable);
void aRegExStateStart(List<RegexNFAStateEntry> nextStates, LinkedHashMap<String, Pair<Integer, Boolean>> variableStreams, int[] multimatchStreamNumToVariable);
void qRegExPartition(ExprNode[] partitionExpressionNodes);
void aRegExPartition(boolean exists, RegexPartitionState state);
void qRegIntervalValue(ExprNode exprNode);
void aRegIntervalValue(long result);
void qRegIntervalState(RegexNFAStateEntry endState, LinkedHashMap<String, Pair<Integer, Boolean>> variableStreams, int[] multimatchStreamNumToVariable, long engineTime);
void aRegIntervalState(boolean scheduled);
void qRegOut(EventBean[] outBeans);
void aRegOut();
void qRegMeasure(RegexNFAStateEntry endState, LinkedHashMap<String, Pair<Integer, Boolean>> variableStreams, int[] multimatchStreamNumToVariable);
void aRegMeasure(EventBean outBean);
void qRegExScheduledEval();
void aRegExScheduledEval();
void qExprBool(ExprNode exprNode, EventBean[] eventsPerStream);
void aExprBool(Boolean result);
void qExprValue(ExprNode exprNode, EventBean[] eventsPerStream);
void aExprValue(Object result);
void qExprEquals(ExprNode exprNode);
void aExprEquals(Boolean result);
void qExprAnd(ExprNode exprNode);
void aExprAnd(Boolean result);
void qExprLike(ExprNode exprNode);
void aExprLike(Boolean result);
void qExprBitwise(ExprNode exprNode, BitWiseOpEnum bitWiseOpEnum);
void aExprBitwise(Object result);
void qExprMath(ExprMathNode exprMathNode, String op);
void aExprMath(Object result);
void qExprRegexp(ExprRegexpNode exprRegexpNode);
void aExprRegexp(Boolean result);
void qExprIdent(String fullUnresolvedName);
void aExprIdent(Object result);
void qExprTypeof();
void aExprTypeof(String typeName);
void qExprOr(ExprOrNode exprOrNode);
void aExprOr(Boolean result);
void qExprIn(ExprInNodeImpl exprInNode);
void aExprIn(Boolean result);
void qExprCoalesce(ExprCoalesceNode exprCoalesceNode);
void aExprCoalesce(Object value);
void qExprConcat(ExprConcatNode exprConcatNode);
void aExprConcat(String result);
void qaExprConst(Object result);
void qaExprTimestamp(ExprTimestampNode exprTimestampNode, long value);
void qExprBetween(ExprBetweenNodeImpl exprBetweenNode);
void aExprBetween(Boolean result);
void qExprCast(ExprCastNode exprCastNode);
void aExprCast(Object result);
void qExprCase(ExprCaseNode exprCaseNode);
void aExprCase(Object result);
void qExprArray(ExprArrayNode exprArrayNode);
void aExprArray(Object result);
void qExprEqualsAnyOrAll(ExprEqualsAllAnyNode exprEqualsAllAnyNode);
void aExprEqualsAnyOrAll(Boolean result);
void qExprMinMaxRow(ExprMinMaxRowNode exprMinMaxRowNode);
void aExprMinMaxRow(Object result);
void qExprNew(ExprNewStructNode exprNewNode);
void aExprNew(Map<String, Object> props);
void qExprNot(ExprNotNode exprNotNode);
void aExprNot(Boolean result);
void qExprPropExists(ExprPropertyExistsNode exprPropertyExistsNode);
void aExprPropExists(boolean exists);
void qExprRelOpAnyOrAll(ExprRelationalOpAllAnyNode exprRelationalOpAllAnyNode, String op);
void aExprRelOpAnyOrAll(Boolean result);
void qExprRelOp(ExprRelationalOpNodeImpl exprRelationalOpNode, String op);
void aExprRelOp(Boolean result);
void qExprStreamUnd(ExprStreamUnderlyingNodeImpl exprStreamUnderlyingNode);
void aExprStreamUnd(Object result);
void qExprStreamUndSelectClause(ExprStreamUnderlyingNode undNode);
void aExprStreamUndSelectClause(EventBean event);
void qExprIs(ExprEqualsNodeImpl exprNode);
void aExprIs(boolean result);
void qExprVariable(ExprVariableNode exprVariableNode);
void aExprVariable(Object value);
void qExprTimePeriod(ExprTimePeriodImpl exprTimePeriod);
void aExprTimePeriod(Object result);
void qExprInstanceof(ExprInstanceofNode exprInstanceofNode);
void aExprInstanceof(Boolean result);
void qExprContextProp(ExprContextPropertyNode exprContextPropertyNode);
void aExprContextProp(Object result);
void qExprPlugInSingleRow(Method method);
void aExprPlugInSingleRow(Object result);
void qaExprAggValue(ExprAggregateNodeBase exprAggregateNodeBase, Object value);
void qExprSubselect(ExprSubselectNode exprSubselectNode);
void aExprSubselect(Object result);
void qExprDot(ExprDotNode exprDotNode);
void aExprDot(Object result);
void qExprDotChain(EPType targetTypeInfo, Object target, ExprDotEval[] evalUnpacking);
void aExprDotChain();
void qExprDotChainElement(int num, ExprDotEval methodEval);
void aExprDotChainElement(EPType typeInfo, Object result);
void qaExprIStream(ExprIStreamNode exprIStreamNode, boolean newData);
void qExprDeclared(ExpressionDeclItem parent);
void aExprDeclared(Object value);
void qExprPrev(ExprPreviousNode exprPreviousNode, boolean newData);
void aExprPrev(Object result);
void qExprPrior(ExprPriorNode exprPriorNode);
void aExprPrior(Object result);
void qExprStreamUndMethod(ExprDotNode exprDotEvalStreamMethod);
void aExprStreamUndMethod(Object result);
void qExprStreamEventMethod(ExprDotNode exprDotNode);
void aExprStreamEventMethod(Object result);
void qExprTableSubproperty(ExprNode exprNode, String tableName, String subpropName);
void aExprTableSubproperty(Object result);
void qExprTableTop(ExprNode exprNode, String tableName);
void aExprTableTop(Object result);
void qExprTableSubpropAccessor(ExprNode exprNode, String tableName, String subpropName, ExprAggregateNode aggregationExpression);
void aExprTableSubpropAccessor(Object result);
void qScheduleAdd(long currentTime, long afterMSec, ScheduleHandle handle, long slot);
void aScheduleAdd();
void qScheduleRemove(ScheduleHandle handle, long slot);
void aScheduleRemove();
void qScheduleEval(long currentTime);
void aScheduleEval(Collection<ScheduleHandle> handles);
void qPatternAndEvaluateTrue(EvalAndNode evalAndNode, MatchedEventMap passUp);
void aPatternAndEvaluateTrue(boolean quitted);
void qPatternAndQuit(EvalAndNode evalAndNode);
void aPatternAndQuit();
void qPatternAndEvaluateFalse(EvalAndNode evalAndNode);
void aPatternAndEvaluateFalse();
void qPatternAndStart(EvalAndNode evalAndNode, MatchedEventMap beginState);
void aPatternAndStart();
void qPatternFollowedByEvaluateTrue(EvalFollowedByNode evalFollowedByNode, MatchedEventMap matchEvent, Integer index);
void aPatternFollowedByEvaluateTrue(boolean quitted);
void qPatternFollowedByQuit(EvalFollowedByNode evalFollowedByNode);
void aPatternFollowedByQuit();
void qPatternFollowedByEvalFalse(EvalFollowedByNode evalFollowedByNode);
void aPatternFollowedByEvalFalse();
void qPatternFollowedByStart(EvalFollowedByNode evalFollowedByNode, MatchedEventMap beginState);
void aPatternFollowedByStart();
void qPatternOrEvaluateTrue(EvalOrNode evalOrNode, MatchedEventMap matchEvent);
void aPatternOrEvaluateTrue(boolean quitted);
void qPatternOrEvalFalse(EvalOrNode evalOrNode);
void aPatternOrEvalFalse();
void qPatternOrQuit(EvalOrNode evalOrNode);
void aPatternOrQuit();
void aPatternOrStart();
void qPatternOrStart(EvalOrNode evalOrNode, MatchedEventMap beginState);
void qPatternFilterMatch(EvalFilterNode filterNode, EventBean theEvent);
void aPatternFilterMatch(boolean quitted);
void qPatternFilterStart(EvalFilterNode evalFilterNode, MatchedEventMap beginState);
void aPatternFilterStart();
void qPatternFilterQuit(EvalFilterNode evalFilterNode, MatchedEventMap beginState);
void aPatternFilterQuit();
void qPatternRootEvaluateTrue(MatchedEventMap matchEvent);
void aPatternRootEvaluateTrue(boolean quitted);
void qPatternRootStart(MatchedEventMap root);
void aPatternRootStart();
void qPatternRootQuit();
void aPatternRootQuit();
void qPatternRootEvalFalse();
void aPatternRootEvalFalse();
void qPatternEveryEvaluateTrue(EvalEveryNode evalEveryNode, MatchedEventMap matchEvent);
void aPatternEveryEvaluateTrue();
void qPatternEveryStart(EvalEveryNode evalEveryNode, MatchedEventMap beginState);
void aPatternEveryStart();
void qPatternEveryEvalFalse(EvalEveryNode evalEveryNode);
void aPatternEveryEvalFalse();
void qPatternEveryQuit(EvalEveryNode evalEveryNode);
void aPatternEveryQuit();
void qPatternEveryDistinctEvaluateTrue(EvalEveryDistinctNode everyDistinctNode, MatchedEventMap matchEvent);
void aPatternEveryDistinctEvaluateTrue(Set<Object> keysFromNodeNoExpire, LinkedHashMap<Object, Long> keysFromNodeExpire, Object matchEventKey, boolean haveSeenThis);
void qPatternEveryDistinctQuit(EvalEveryDistinctNode everyNode);
void aPatternEveryDistinctQuit();
void qPatternEveryDistinctEvalFalse(EvalEveryDistinctNode everyNode);
void aPatternEveryDistinctEvalFalse();
void qPatternEveryDistinctStart(EvalEveryDistinctNode everyNode, MatchedEventMap beginState);
void aPatternEveryDistinctStart();
void qPatternGuardEvaluateTrue(EvalGuardNode evalGuardNode, MatchedEventMap matchEvent);
void aPatternGuardEvaluateTrue(boolean quitted);
void qPatternGuardStart(EvalGuardNode evalGuardNode, MatchedEventMap beginState);
void aPatternGuardStart();
void qPatternGuardQuit(EvalGuardNode evalGuardNode);
void aPatternGuardQuit();
void qPatternGuardGuardQuit(EvalGuardNode evalGuardNode);
void aPatternGuardGuardQuit();
void qPatternGuardScheduledEval();
void aPatternGuardScheduledEval();
void qPatternMatchUntilEvaluateTrue(EvalMatchUntilNode evalMatchUntilNode, MatchedEventMap matchEvent, boolean matchFromUntil);
void aPatternMatchUntilEvaluateTrue(boolean quitted);
void qPatternMatchUntilStart(EvalMatchUntilNode evalMatchUntilNode, MatchedEventMap beginState);
void aPatternMatchUntilStart();
void qPatternMatchUntilEvalFalse(EvalMatchUntilNode evalMatchUntilNode, boolean matchFromUntil);
void aPatternMatchUntilEvalFalse();
void qPatternMatchUntilQuit(EvalMatchUntilNode evalMatchUntilNode);
void aPatternMatchUntilQuit();
void qPatternNotEvaluateTrue(EvalNotNode evalNotNode, MatchedEventMap matchEvent);
void aPatternNotEvaluateTrue(boolean quitted);
void aPatternNotQuit();
void qPatternNotQuit(EvalNotNode evalNotNode);
void qPatternNotStart(EvalNotNode evalNotNode, MatchedEventMap beginState);
void aPatternNotStart();
void qPatternNotEvalFalse(EvalNotNode evalNotNode);
void aPatternNotEvalFalse();
void qPatternObserverEvaluateTrue(EvalObserverNode evalObserverNode, MatchedEventMap matchEvent);
void aPatternObserverEvaluateTrue();
void qPatternObserverStart(EvalObserverNode evalObserverNode, MatchedEventMap beginState);
void aPatternObserverStart();
void qPatternObserverQuit(EvalObserverNode evalObserverNode);
void aPatternObserverQuit();
void qPatternObserverScheduledEval();
void aPatternObserverScheduledEval();
void qContextPartitionAllocate(AgentInstanceContext agentInstanceContext);
void aContextPartitionAllocate();
void qContextPartitionDestroy(AgentInstanceContext agentInstanceContext);
void aContextPartitionDestroy();
void qContextScheduledEval(ContextDescriptor contextDescriptor);
void aContextScheduledEval();
void qOutputProcessNonBuffered(EventBean[] newData, EventBean[] oldData);
void aOutputProcessNonBuffered();
void qOutputProcessNonBufferedJoin(Set<MultiKey<EventBean>> newEvents, Set<MultiKey<EventBean>> oldEvents);
void aOutputProcessNonBufferedJoin();
void qOutputProcessWCondition(EventBean[] newData, EventBean[] oldData);
void aOutputProcessWCondition(boolean buffered);
void qOutputProcessWConditionJoin(Set<MultiKey<EventBean>> newEvents, Set<MultiKey<EventBean>> oldEvents);
void aOutputProcessWConditionJoin(boolean buffered);
void qOutputRateConditionUpdate(int newDataLength, int oldDataLength);
void aOutputRateConditionUpdate();
void qOutputRateConditionOutputNow();
void aOutputRateConditionOutputNow(boolean generate);
void qOutputRateConditionScheduledEval();
void aOutputRateConditionScheduledEval();
void qResultSetProcessSimple();
void aResultSetProcessSimple(EventBean[] selectNewEvents, EventBean[] selectOldEvents);
void qResultSetProcessUngroupedFullyAgg();
void aResultSetProcessUngroupedFullyAgg(EventBean[] selectNewEvents, EventBean[] selectOldEvents);
void qResultSetProcessUngroupedNonfullyAgg();
void aResultSetProcessUngroupedNonfullyAgg(EventBean[] selectNewEvents, EventBean[] selectOldEvents);
void qResultSetProcessGroupedRowPerGroup();
void aResultSetProcessGroupedRowPerGroup(EventBean[] selectNewEvents, EventBean[] selectOldEvents);
void qResultSetProcessGroupedRowPerEvent();
void aResultSetProcessGroupedRowPerEvent(EventBean[] selectNewEvents, EventBean[] selectOldEvents);
void qResultSetProcessComputeGroupKeys(boolean enter, ExprNode[] groupKeyNodeExpressions, EventBean[] eventsPerStream);
void aResultSetProcessComputeGroupKeys(boolean enter, Object groupKeysPerEvent);
void qAggregationUngroupedApplyEnterLeave(boolean enter, int numAggregators, int numAccessStates);
void aAggregationUngroupedApplyEnterLeave(boolean enter);
void qAggregationGroupedApplyEnterLeave(boolean enter, int numAggregators, int numAccessStates, Object groupKey);
void aAggregationGroupedApplyEnterLeave(boolean enter);
void qAggregationGroupedRollupEvalParam(boolean enter, int length);
void aAggregationGroupedRollupEvalParam(Object result);
void qAggNoAccessEnterLeave(boolean enter, int index, AggregationMethod aggregationMethod, ExprNode aggExpr);
void aAggNoAccessEnterLeave(boolean enter, int index, AggregationMethod aggregationMethod);
void qAggAccessEnterLeave(boolean enter, int index, AggregationState state, ExprNode aggExpr);
void aAggAccessEnterLeave(boolean enter, int index, AggregationState state);
void qSelectClause(EventBean[] eventsPerStream, boolean newData, boolean synthesize, ExprEvaluatorContext exprEvaluatorContext);
void aSelectClause(boolean newData, EventBean event, Object[] subscriberParameters);
void qViewProcessIRStream(View view, String viewName, EventBean[] newData, EventBean[] oldData);
void aViewProcessIRStream();
void qViewScheduledEval(View view, String viewName);
void aViewScheduledEval();
void qViewIndicate(View view, String viewName, EventBean[] newData, EventBean[] oldData);
void aViewIndicate();
void qSubselectAggregation(ExprNode optionalFilterExprNode);
void aSubselectAggregation();
void qFilterActivationSubselect(String eventTypeName, ExprSubselectNode subselectNode);
void aFilterActivationSubselect();
void qFilterActivationStream(String eventTypeName, int streamNumber);
void aFilterActivationStream();
void qFilterActivationNamedWindowInsert(String namedWindowName);
void aFilterActivationNamedWindowInsert();
void qFilterActivationOnTrigger(String eventTypeName);
void aFilterActivationOnTrigger();
void qRouteBetweenStmt(EventBean theEvent, EPStatementHandle epStatementHandle, boolean addToFront);
void aRouteBetweenStmt();
void qIndexAddRemove(EventTable eventTable, EventBean[] newData, EventBean[] oldData);
void aIndexAddRemove();
void qIndexAdd(EventTable eventTable, EventBean[] addEvents);
void aIndexAdd();
void qIndexRemove(EventTable eventTable, EventBean[] removeEvents);
void aIndexRemove();
void qIndexSubordLookup(SubordTableLookupStrategy subordTableLookupStrategy, EventTable optionalEventIndex, int[] keyStreamNums);
void aIndexSubordLookup(Collection<EventBean> events, Object keys);
void qIndexJoinLookup(JoinExecTableLookupStrategy strategy, EventTable index);
void aIndexJoinLookup(Set<EventBean> result, Object keys);
void qFilter(EventBean theEvent);
void aFilter(Collection<FilterHandle> matches);
void qFilterHandleSetIndexes(List<FilterParamIndexBase> indizes);
void aFilterHandleSetIndexes();
void qaFilterHandleSetCallbacks(Set<FilterHandle> callbackSet);
void qFilterReverseIndex(FilterParamIndexLookupableBase filterParamIndex, Object propertyValue);
void aFilterReverseIndex(Boolean match);
void qFilterBoolean(FilterParamIndexBooleanExpr filterParamIndexBooleanExpr);
void aFilterBoolean();
void qFilterBooleanExpr(int num, Map.Entry<ExprNodeAdapterBase, EventEvaluator> evals);
void aFilterBooleanExpr(boolean result);
void qFilterAdd(FilterValueSet filterValueSet, FilterHandle filterCallback);
void aFilterAdd();
void qFilterRemove(FilterHandle filterCallback, EventTypeIndexBuilderValueIndexesPair pair);
void aFilterRemove();
void qWhereClauseFilter(ExprNode exprNode, EventBean[] newData, EventBean[] oldData);
void aWhereClauseFilter(EventBean[] filteredNewData, EventBean[] filteredOldData);
void qWhereClauseFilterEval(int num, EventBean event, boolean newData);
void aWhereClauseFilterEval(Boolean pass);
void qWhereClauseIR(EventBean[] filteredNewData, EventBean[] filteredOldData);
void aWhereClauseIR();
void qHavingClauseNonJoin(EventBean theEvent);
void aHavingClauseNonJoin(Boolean pass);
void qHavingClauseJoin(EventBean[] eventsPerStream);
void aHavingClauseJoin(Boolean pass);
void qOrderBy(EventBean[] evalEventsPerStream, OrderByElement[] orderBy);
void aOrderBy(Object values);
void qJoinDispatch(EventBean[][] newDataPerStream, EventBean[][] oldDataPerStream);
void aJoinDispatch();
void qJoinExexStrategy();
void aJoinExecStrategy(UniformPair<Set<MultiKey<EventBean>>> joinSet);
void qJoinExecFilter();
void aJoinExecFilter(Set<MultiKey<EventBean>> newEvents, Set<MultiKey<EventBean>> oldEvents);
void qJoinExecProcess(UniformPair<Set<MultiKey<EventBean>>> joinSet);
void aJoinExecProcess();
void qJoinCompositionStreamToWin();
void aJoinCompositionStreamToWin(Set<MultiKey<EventBean>> newResults);
void qJoinCompositionWinToWin();
void aJoinCompositionWinToWin(Set<MultiKey<EventBean>> newResults, Set<MultiKey<EventBean>> oldResults);
void qJoinCompositionHistorical();
void aJoinCompositionHistorical(Set<MultiKey<EventBean>> newResults, Set<MultiKey<EventBean>> oldResults);
void qJoinCompositionStepUpdIndex(int stream, EventBean[] added, EventBean[] removed);
void aJoinCompositionStepUpdIndex();
void qJoinCompositionQueryStrategy(boolean insert, int streamNum, EventBean[] events);
void aJoinCompositionQueryStrategy();
void qInfraTriggeredLookup(SubordWMatchExprLookupStrategyType lookupStrategy);
void aInfraTriggeredLookup(EventBean[] result);
void qInfraOnAction(OnTriggerType triggerType, EventBean[] triggerEvents, EventBean[] matchingEvents);
void aInfraOnAction();
void qInfraUpdate(EventBean beforeUpdate, EventBean[] eventsPerStream, int length, boolean copy);
void aInfraUpdate(EventBean afterUpdate);
void qInfraUpdateRHSExpr(int index, EventBeanUpdateItem updateItem);
void aInfraUpdateRHSExpr(Object result);
void qInfraMergeWhenThens(boolean matched, EventBean triggerEvent, int numWhenThens);
void aInfraMergeWhenThens(boolean matched);
void qInfraMergeWhenThenItem(boolean matched, int count);
void aInfraMergeWhenThenItem(boolean matched, boolean actionsApplied);
void qInfraMergeWhenThenActions(int numActions);
void aInfraMergeWhenThenActions();
void qInfraMergeWhenThenActionItem(int count, String actionName);
void aInfraMergeWhenThenActionItem(boolean applies);
void qEngineManagementStmtCompileStart(String engineURI, int statementId, String statementName, String epl, long engineTime);
void aEngineManagementStmtCompileStart(boolean success, String message);
void qaEngineManagementStmtStarted(String engineURI, int statementId, String statementName, String epl, long engineTime);
void qEngineManagementStmtStop(EPStatementState targetState, String engineURI, int statementId, String statementName, String epl, long engineTime);
void aEngineManagementStmtStop();
void qaStatementResultExecute(UniformPair<EventBean[]> events, int statementId, String statementName, int agentInstanceId, long threadId);
void qSplitStream(boolean all, EventBean theEvent, ExprEvaluator[] whereClauses);
void aSplitStream(boolean all, boolean handled);
void qSplitStreamWhere(int index);
void aSplitStreamWhere(Boolean pass);
void qSplitStreamRoute(int index);
void aSplitStreamRoute();
void qUpdateIStream(InternalEventRouterEntry[] entries);
void aUpdateIStream(EventBean finalEvent, boolean haveCloned);
void qUpdateIStreamApply(int index, InternalEventRouterEntry entry);
void aUpdateIStreamApply(EventBean updated, boolean applied);
void qUpdateIStreamApplyWhere();
void aUpdateIStreamApplyWhere(Boolean result);
void qUpdateIStreamApplyAssignments(InternalEventRouterEntry entry);
void aUpdateIStreamApplyAssignments(Object[] values);
void qUpdateIStreamApplyAssignmentItem(int index);
void aUpdateIStreamApplyAssignmentItem(Object value);
void qHistoricalScheduledEval();
void aHistoricalScheduledEval();
void qTableAddEvent(EventBean theEvent);
void aTableAddEvent();
void qTableDeleteEvent(EventBean theEvent);
void aTableDeleteEvent();
void qaTableUpdatedEvent(EventBean theEvent);
void qaTableUpdatedEventWKeyBefore(EventBean theEvent);
void qaTableUpdatedEventWKeyAfter(EventBean theEvent);
}