def by_target
      targets.
        map { |t| [t.object, @matches[t].map { |m| m.candidate.object }] }.
        to_h.
        freeze
    end
def by_target
      targets.
        map { |t| [t.object, @matches[t].map { |m| m.candidate.object }] }.
        to_h.
        freeze
    end
Returns a hash where the keys are the targets in the match, and the
 values are an ordered list of candidates for each target (if any).
 Targets are included even if no candidates could be matched there.

 @return [Hash<MatchyMatchy::Target, Array<MatchyMatchy::Candidate>>]