public function sortByPriority(GrumPHP $grumPHP)
{
$priorityQueue = new SplPriorityQueue();
$stableSortIndex = PHP_INT_MAX;
foreach ($this->getIterator() as $task) {
$metadata = $grumPHP->getTaskMetadata($task->getName());
$priorityQueue->insert($task, [$metadata['priority'], $stableSortIndex--]);
}
return new TasksCollection(array_values(iterator_to_array($priorityQueue)));
}