if (predicates != null) {
for (int j = 0; j < predicates.length; j++) {
if (j != 0) {
context = new UnionContext(context, new EvalContext[]{context});
}
context = new PredicateContext(context, predicates[j]);
}
}
return firstMatch ? (Object) getSingleNodePointerForSteps(context)
: evalSteps(context);
}