public function containsExactly()
{
$this->isNotNull();
$elements = func_get_args();
$found = 0;
$min = min(sizeof($this->actual), sizeof($elements));
for ($i = 0; $i < $min; $i++) {
if ($this->actual[$i] == $elements[$i]) {
$found++;
}
}
$elementsString = Objects::toString($elements);
AssertAdapter::assertFalse(sizeof($elements) != $found || sizeof($this->actual) != $found, "Elements from expected {$elementsString} were not found in actual {$this->actualString} or have different order");
return $this;
}