Boolean match = new Boolean(expression.match(context));
// update the context mapping from this last visit
// did we visit some args(<name>) nodes ?
if (!context.m_exprIndexToTargetIndex.isEmpty()) {
TIntIntHashMap sourceToTargetArgIndexes = new TIntIntHashMap();
int index = 0;
for (Iterator it = m_expressionInfo.getArgumentNames().iterator(); it.hasNext(); index++) {
String adviceParamName = (String) it.next();
//look for adviceParamName in the expression name and get its index
int exprArgIndex = ArgsIndexVisitor.getExprArgIndex(m_expression, adviceParamName);
if (exprArgIndex < 0) {
//param of advice not found in pc signature - f.e. "joinPoint"
continue;
}
int adviceArgIndex = m_expressionInfo.getArgumentIndex(adviceParamName);
int targetArgIndex = context.m_exprIndexToTargetIndex.get(exprArgIndex);
// System.out.println(" transitive arg" + adviceArgIndex + " " + adviceParamName + " -> " + exprArgIndex
// + " -> " + targetArgIndex);
sourceToTargetArgIndexes.put(adviceArgIndex, targetArgIndex);
}
context.m_exprIndexToTargetIndex = sourceToTargetArgIndexes;
//debug:
// if (m_expressionInfo.m_isAdviceBindingWithArgs) {