code: protected function getOptions()
  	{
  		$arrOptions = array();
  		$blnHasGroups = false;
  
  		// Add empty option if there are none
  		if (empty($this->arrOptions) || !\is_array($this->arrOptions))
  		{
  			$this->arrOptions = array(array('value' => '', 'label' => '-'));
  		}
  
  		// Generate options
  		foreach ($this->arrOptions as $arrOption)
  		{
  			if ($arrOption['group'])
  			{
  				if ($blnHasGroups)
  				{
  					$arrOptions[] = array
  					(
  						'type' => 'group_end'
  					);
  				}
  
  				$arrOptions[] = array
  				(
  					'type'  => 'group_start',
  					'label' => StringUtil::specialchars($arrOption['label'])
  				);
  
  				$blnHasGroups = true;
  			}
  			else
  			{
  				$arrOptions[] = array_replace
  				(
  					$arrOption,
  					array
  					(
  						'type'     => 'option',
  						'value'    => $arrOption['value'],
  						'selected' => $this->isSelected($arrOption),
  						'label'    => $arrOption['label'],
  					)
  				);
  			}
  		}
  
  		if ($blnHasGroups)
  		{
  			$arrOptions[] = array
  			(
  				'type' => 'group_end'
  			);
  		}
  
  		return $arrOptions;
  	}
docs: Generate the options
  
  @return array The options array