This whole post-kludge, iterating afresh over the whole list, could be avoided by restructuring Select{Next,Last}ItemMatching(); see notes above.