public function generate_class_definition()
    {
        $this->tpl_replacements['class_definition']      = '';
        $this->tpl_replacements['class_definition_list'] = '';
        if ($this->is_final == true) {
            $this->tpl_replacements['class_definition'] .= 'final ';
        }

        if ($this->is_abstract == true) {
            $this->tpl_replacements['class_definition'] .= 'abstract ';
        }

        $this->tpl_replacements['class_definition'] .= 'class ' . ucfirst(strtolower($this->class_name));
        $this->tpl_replacements['class_definition_list'] .= 'class ' . ucfirst(strtolower($this->class_name)) . 'List';

        if (empty($this->extend_class) && empty($this->implement_interface)) return true;

        if (!empty($this->extend_class)) {
            $this->tpl_replacements['class_definition'] .= ' extends ' . ucfirst(strtolower($this->extend_class));
            $this->tpl_replacements['class_definition_list'] .= ' extends ' . ucfirst(strtolower($this->extend_class)) . 'List';
        }

        if (!empty($this->implement_interface)) {
            $this->tpl_replacements['class_definition'] .= ' implements ' . implode(',', $this->implement_interface);
            $this->tpl_replacements['class_definition_list'] .= ' implements ' . implode('List,', $this->implement_interface) . 'List';
        }

        return true;
    }