As written, if filter#shouldRun throws an exception, the contents of fFilteredChildren would depend on how far we'd gotten before the exception was thrown.  I think I'd prefer if we could promise that if an exception is thrown, no modification is made.