protected final function assertThatCalledWithValueAndKeyParametersOnceForEachElementInOrder(callable $traversableQuery, array $data, $returnValue = null)
{
reset($data);
$traversable = $traversableQuery(function ($value, $key) use(&$data, $returnValue) {
$this->assertSame(current($data), $value, 'value must match');
$this->assertSame(key($data), $key, 'key must match');
next($data);
return $returnValue;
});
$traversable->asArray();
}