You could use the good old GetBluePrintChain(BluePrintChainFilter filter) for this maybe? This gives you all child pages based on the current page you're processing.			

As a quick example:


    BluePrintChainFilter b = new BluePrintChainFilter(engine.GetSession());
    b.Direction = BluePrintChainDirection.Down;
    foreach(RepositoryLocalObject r in page.GetBluePrintChain(b))
    {
    	log.Debug(r.WebDavUrl);
    }