I started working on that and I wrote the following specs:

```ruby
context "deprecations" do
  it "prints a specific message when the target is a collection" do
    replacement_message = "the rspec-collection_matchers gem " +
                          "or replace your expectation with something like " +
                          "`expect([1, 2, 3].size).to eq(3)`"
    expect(RSpec).to receive(:deprecate).with("`have`", :replacement => replacement_message)

    expect([1, 2, 3]).to have(3).items
  end

  it "prints a specific message when the target owns a collection" do
    class BagOfWords
      attr_reader :words

      def initialize(words)
        @words = words
      end
    end

    replacement_message = "the rspec-collection_matchers gem " +
                          "or replace your expectation with something like " +
                          "`expect(your_collection.words).to eq(3)`"
    expect(RSpec).to receive(:deprecate).with("`have`", :replacement => replacement_message)

    bag = BagOfWords.new(%w(foo bar baz))
    expect(bag).to have(3).words
  end
end
```

I was able to make those specs green but I'm having problems when the expectation is in the negative form, like:

```
expect(bag).to_not have(3).words
```

Since the matcher instance doesn't have a reference to the `ExpectationHandler` that called it, it can't know if the expectation is in the positive (`expect(...).to`) or negative (`expect(...).to_not`) form, so it can't know if the hint in the deprecation message should be `expect(your_collection.words).to eq(3)` or `expect(your_collection.words).to_not eq(3)` for example.

Do you have any suggestion on how to solve that problem?