The matcher needs to be cloned before calling `matches?` on it on the line below, because the matcher may memoize based on the `actual` value given to it, so we need to ensure that it's a fresh instance of the matcher for each item we match against.

Note that your tests are not written to properly catch this, so please get your test right first (e.g. it should fail in an expected way) before fixing the bug.