The key issue that I was pround of - on the efficiency stakes - was that it checked for *all* possible combinations of keywords - even those which did not exist on the same line ever. And that it went through the entire file again for every keyword-pair, i.e. processed the entire file keyword-factorial times. Now that's what I call thorough.
The sand/and thing is a genuine, unintended bug though. :)
All the best, andy.
(BTW, 'NB see parent node' was intended as a nod/wink - perhaps kinda unclear though).