public function select(
        $name,
        $list = [],
        $selected = [],
        array $selectAttributes = [],
        array $optionsAttributes = [],
        array $spanAttributes = [],
        $selectOnly = false
    ) {
        // Forces the ID attribute
        $selectAttributes['id'] = $name.'-ms';
        if (!isset($selectAttributes['class'])) {
            $selectAttributes['class'] = 'multiselect';
        }

        // We will concatenate the span html unless $selectOnly is passed as false
        $spanHtml = $selectOnly ? '' : $this->span($name, $list, $selected, $spanAttributes);

        // Here, we generate the list of options
        $html = [];
        if (isset($selectAttributes['placeholder'])) {
            $html[] = $this->option($selectAttributes['placeholder'], '');
            unset($selectAttributes['placeholder']);
        } else {
            $html[] = $this->option('&nbsp;', '');
        }
        foreach ($list as $value => $display) {
            $optionAttributes = isset($optionsAttributes[$value]) ? $optionsAttributes[$value] : [];
            $html[] = $this->option($display, $value, $optionAttributes);
        }
        $list = implode('', $html);

        $selectAttributes = $this->attributes($selectAttributes);

        return $this->toHtmlString($spanHtml."<select{$selectAttributes}>{$list}</select>");
    }