Fix visit_collection to handle NamedTuples
When a DoneAndNotDoneFutures (from wait()) is passed as a flow/task parameter,
visit_collection fails to reconstruct it because NamedTuples expect positional
args in __new__, not an iterable.
Use _make() to construct NamedTuples from iterables instead.