class RSpec::Matchers::DSL::Matcher

def add_deprecation_warning_to(method_name, msg, replacement, extra_call_site_msg, condition)

def add_deprecation_warning_to(method_name, msg, replacement, extra_call_site_msg, condition)
  return if @deprecated_methods.include?(method_name)
  @deprecated_methods << method_name
  aliased_name = aliased_name_for(method_name)
  singleton_class.__send__(:alias_method, aliased_name, method_name)
  singleton_class.class_eval(<<-EOS, __FILE__, __LINE__ + 1)
    def #{method_name}(*a, &b)
      ::RSpec.deprecate(#{msg.inspect},
        :replacement => #{replacement.inspect},
        :call_site => CallerFilter.first_non_rspec_line + " and #{extra_call_site_msg} at #{CallerFilter.first_non_rspec_line}"
      ) #{condition} @define_block_executed
      __send__(#{aliased_name.inspect}, *a, &b)
    end
  EOS
end