/**
  * Checks the feasibility of empty rides between missions, this does not
  * consider dependancies with neighbouring shifts (left/right).
  *
  * @param RideNodeList $rideNodeList
  * @param RideNode $feasibleNode
  * @return string
  */
 private function checkEmptyRidesInNodeList(RideNodeList $rideNodeList, RideNode $feasibleNode)
 {
     if ($rideNodeList->getCounter() > 1) {
         if ($feasibleNode === $rideNodeList->getFirstNode()) {
             // position = left (first node)
             $feasibleLeft = true;
             // default
             $gapRight = $feasibleNode->nextNode->startMinute - $feasibleNode->endMinute;
             $feasibleRight = $this->isFeasibleEmptyRide($gapRight, $feasibleNode->targetAddress, $feasibleNode->nextNode->startAddress);
         } elseif ($feasibleNode === $rideNodeList->getLastNode()) {
             // position = right (last node)
             $gapLeft = $feasibleNode->startMinute - $feasibleNode->previousNode->endMinute;
             $feasibleLeft = $this->isFeasibleEmptyRide($gapLeft, $feasibleNode->previousNode->targetAddress, $feasibleNode->startAddress);
             $feasibleRight = true;
             // default
         } else {
             // position = between two nodes
             $gapRight = $feasibleNode->nextNode->startMinute - $feasibleNode->endMinute;
             $feasibleRight = $this->isFeasibleEmptyRide($gapRight, $feasibleNode->targetAddress, $feasibleNode->nextNode->startAddress);
             $gapLeft = $feasibleNode->startMinute - $feasibleNode->previousNode->endMinute;
             $feasibleLeft = $this->isFeasibleEmptyRide($gapLeft, $feasibleNode->previousNode->targetAddress, $feasibleNode->startAddress);
         }
         return $feasibleLeft && $feasibleRight ? RideDTO::YES : RideDTO::MAYBE;
     }
     return RideDTO::YES;
     // ride node list is empty, no missions
 }