Significant reworking of the ParseError mechanism