Require destinations when they are needed and do not fetch all of them in advance

Fixes #5266.
shall be something `kidsOrNames = kids[m]; break;` -- no need for recursion