Hi,
I looked at this and I think the following could be a good way out.
since you are pooling from an arrayList, remove the gameobject that was returned by the action and perform this action the number of times you need.
I do that quite often, use a duplicated arrayList if you don't want to loose the original list.
what I think should be done here instead could be an action that sorts an arraylist based on distance from a point. what do you think? I feel that doing a custom action to return a number of closest gameobject is not really the best way to go here.
as for tags, I added this in my todo on trello, but again I woudl suggest you work on a copy of the array and remove beforhand all the gameobjects you don't want, basically this action assumes your arrayList is already filled with valid gameobjects, tho I understand the need for flexibility to filter further within the action. So I'll add it soon when I will have my next session on arrayMaker update.
Bye,
Jean