mainClause() dropped any clause merely containing 'that', 'before', 'who' etc, so a main clause with a nested relative clause lost to a comma-list fragment and the wrong verb was reported. Only drop a clause when the word comes before the clause's own verb, and parse the pattern once per call rather than once per clause. Fixes #1035