Note: after we recurse the ParticleTree we swap the list of found particles (in args.particles) into the local copy of foundParticles.  This is very fast and saves us from doing a copy of a potentially big QVector.