This was brought up in D98222. The recently added matchSimpleRecurrence doesn't actually match a recurrence (oops). It matches something which is nearly a recurrence, but allows one additional free variable.
This patch splits the concept into a true recurrence matcher and a "near" recurrence matcher, and tries to clarify some comments. I'm not particularly a fan of the "near" wording, but I haven't found anything better just yet. Suggestions welcome.
clang-format: please reformat the code