code: public function move(RunnerServiceContext $context, $ref)
      {
          QtiRunnerNavigation::checkTimedSectionExit(
              $context, 
              $context->getItemPositionInRoute($ref)
          );
          
          $catItemId = '';
          $pos = $context->getItemPositionInRoute(intval($ref), $catItemId);
          
          if ($context->isAdaptive()) {
              // Consider potential changes in the selected items.
              $context->selectAdaptiveNextItem();
          }
  
          $context->getTestSession()->jumpTo($pos);
  
          if ($catItemId !== '') {
              $context->persistCurrentCatItemId($catItemId);
          }
  
          return true;
      }
docs: Do the move
  @param RunnerServiceContext $context
  @param mixed $ref
  @return boolean
  @throws \common_Exception