@observe<EOL><INDENT>def run_matcher(self, subject, *expected, **kw):<DEDENT>
<EOL>self.expected = expected<EOL>_args = (subject,)<EOL>if self.kind == OperatorTypes.MATCHER:<EOL><INDENT>_args += expected<EOL><DEDENT>try:<EOL><INDENT>result = self.match(*_args, **kw)<EOL><DEDENT>except Exception as error:<EOL><INDENT>return self._make_error(error=error)<EOL><DEDENT>reasons = []<EOL>if isinstance(result, tuple):<EOL><INDENT>result, reasons = result<EOL><DEDENT>if result is False and self.ctx.negate:<EOL><INDENT>return True<EOL><DEDENT>if result is True and not self.ctx.negate:<EOL><INDENT>return True<EOL><DEDENT>return self._make_error(reasons=reasons)<EOL>
Runs the operator matcher test function.