code: public function toSelect(array &$optgroups=[], $level=1, $root=true)
    {
      $options = [];
      foreach($this->items as $item){
        $options[] = $item->toSelect();
      }
      
      if ( $root === true ){
        $text = $this->text;
      }
      else {
        $text = '|'.str_repeat('-', $level).' '.$this->text;
      }
      
      $optgroups[] = [
        'text' => $text,
        'options' => $options,
      ];
      
      foreach($this->groups as $group){
        $group->toSelect($optgroups, $level+1, false);
      }
    }
docs: Export group infos for an optgrouped select
  
  @return   void