protected static function builtInSingleChoose(array $parameters)
    {
        static::checkRequiredParameters($parameters, ['id', 'options']);
        $options = (array)$parameters['options'];
        $parameters[0] = $id = $parameters['id'];
        $expand = isset($parameters['expand']) ? $parameters['expand'] : 'auto';
        unset($parameters['options'], $parameters['expand']);

        // Expand select into radio buttons
        if ($expand === true || ($expand == 'auto' && count($options) < 5)) {
            $html = [];
            $i = 0;
            $radioParams = $parameters;
            $labelOn = isset($radioParams['labelOn']) ? $radioParams['labelOn'] : 'right';
            $prefix = isset($radioParams['prefix']) ? $radioParams['prefix'] : '';
            $suffix = isset($radioParams['suffix']) ? $radioParams['suffix'] : '';
            unset($radioParams['expand'], $radioParams['labelOn'], $radioParams['prefix'], $radioParams['suffix']);
            unset($radioParams['options'], $radioParams['useEmpty'], $radioParams['emptyText']);
            $selected = isset($parameters['value']) ? (string)$parameters['value'] : '';
            foreach ($options as $value => $label) {
                $radioParams['id'] = $radioId = $id . '_' . $i;
                $radioParams['value'] = $value;
                if ((string)$value === $selected) {
                    $radioParams['checked'] = 'checked';
                } else {
                    $radioParams['checked'] = null;
                }
                $radio = Tag::radioField($radioParams);
                if ($labelOn == 'right') {
                    $radio .= PHP_EOL . $label;
                } else {
                    $radio = $label . PHP_EOL . $radio;
                }
                $radio = static::label(['for' => $radioId], $radio);
                ++$i;
                $html[] = $prefix . $radio . $suffix;
            }
            return implode(PHP_EOL, $html);
        }
        return Tag::select($parameters, $options);
    }