protected function getCSSClassNames()
    {
        $classes = array();

        // instance specific class
        if ($this->id !== null && !$this->has_auto_id) {
            $column_class = str_replace('_', '-', $this->id);
            $classes[] = $column_class;
        }

        // base classes
        $classes = array_merge($classes, $this->getBaseCSSClassNames());

        // user-specified classes
        $classes = array_merge($classes, $this->classes);

        $first_renderer = $this->renderers->getFirst();
        if (
            $this->show_renderer_classes &&
            $first_renderer instanceof SwatCellRenderer
        ) {
            // renderer inheritance classes
            $classes = array_merge(
                $classes,
                $first_renderer->getInheritanceCSSClassNames()
            );

            // renderer base classes
            $classes = array_merge(
                $classes,
                $first_renderer->getBaseCSSClassNames()
            );

            // renderer data specific classes
            if ($this->renderers->mappingsApplied()) {
                $classes = array_merge(
                    $classes,
                    $first_renderer->getDataSpecificCSSClassNames()
                );
            }

            // renderer user-specified classes
            $classes = array_merge($classes, $first_renderer->classes);
        }

        return $classes;
    }