Only use m_Specific(a) where a is bound in a previous clause

Move generating match(..) to the GenContext, so it can distinguish

- arguments not previously seen
- arguments seen in a previous match
- arguments seen in the same match