private void firePageFinishedEvent(final ReportEvent event)
{
final boolean deepTraversing = event.isDeepTraversing();
final int activeLevel = getProcessingLevel();
final ExpressionRuntime runtime = getRuntime();
final int runlevelCount = getRunLevelCount();
for (int levelIdx = 0; levelIdx < runlevelCount; levelIdx++)
{
final LevelStorage levelData = getRunLevel(levelIdx);
final int level = levelData.getLevelNumber();
if (level < activeLevel)
{
break;
}
final Iterator<Expression> expressions = levelData.getActiveExpressions();
while (expressions.hasNext())
{
final Expression expression = expressions.next();
if (deepTraversing && expression.isDeepTraversing() == false)
{
continue;
}
final ExpressionRuntime oldRuntime = expression.getRuntime();
expression.setRuntime(runtime);
try
{
if (expression instanceof PageEventListener)
{