private function canBeMovedDown(Registration $registration) { $result = false; if ($registration->isValidForRace()) { $maxStarters = $registration->getSection()->getRace()->getMaxStarterPerSection(); if ($registration->getLane() < $maxStarters) { $result = true; } else { // last lane or even higher number than allowed $next = $this->getNextPossibleSection($registration, function ($x, $y) { return $x > $y; }); if (!is_null($next)) { $result = true; } } } return $result; }