public function getMatchers()
{
return ['haveKeys' => function ($subject, $keys) {
return count(array_intersect_key(array_flip($keys), $subject)) === count($keys);
}, 'haveFirstValue' => function ($subject, $key, $value) {
$subject = is_array($subject) ? reset($subject) : $subject->first();
$subject = is_array($subject) ? $subject[$key] : $subject->get($key);
return $subject === $value;
}, 'havePlaceKeyAndValue' => function ($subject, $place, $key, $value) {
$subject = is_array($subject) ? $subject[$place] : $subject->toArray()[$place];
$subject = is_array($subject) ? $subject[$key] : $subject->get($key);
return $subject === $value;
}];
}