class RSpec::Matchers::BuiltIn::ContainExactly

def pairings_maximizer

def pairings_maximizer
  @pairings_maximizer ||= begin
    expected_matches = Hash[Array.new(expected.size) { |i| [i, []] }]
    actual_matches   = Hash[Array.new(actual.size)   { |i| [i, []] }]
    expected.each_with_index do |e, ei|
      actual.each_with_index do |a, ai|
        next unless values_match?(e, a)
        expected_matches[ei] << ai
        actual_matches[ai] << ei
      end
    end
    PairingsMaximizer.new(expected_matches, actual_matches)
  end
end