function __construct(array $shiftObjs)
 {
     $this->drivers = array();
     /** @var Shift $shift */
     foreach ($shiftObjs as $shift) {
         /** @var DrivingAssertion $drivingAssertion */
         foreach ($shift->getDrivingAssertions() as $drivingAssertion) {
             /** @var Driver $driver */
             $driver = $drivingAssertion->getDriver();
             $id = $driver->getId();
             if (array_key_exists($id, $this->drivers)) {
                 /** @var DispositionResourcesDTO $dto */
                 $dto = $this->drivers[$id];
             } else {
                 $dto = new DispositionResourcesDTO($driver);
             }
             $dto->addShift($shift);
             $dto->addDrivingAssertion($drivingAssertion);
             $this->drivers[$id] = $dto;
         }
     }
     shuffle($this->drivers);
     // randomize sort order of drivers array
 }