public function listRequiredMethod()
    {
        if (!is_null($this->listRequiredMethod)) return $this->listRequiredMethod;

        $columns = $this->listColumns();
        $methodList = array();

        foreach ($columns as $name => $schema) {
            $this->methodGetter($methodList, $name);
            switch ($schema['type']) {
                case 'array':
                    $this->methodAdderRemover($methodList, $name);
                    break;
                case 'string':
                    $this->methodSetter($methodList, $name);
                    break;
                case 'entity':
                    if ($schema['relation']['multi']) {
                        $this->methodAdderRemover($methodList, $name);
                    } else {
                        $this->methodSetter($methodList, $name);
                    }
                    break;
            }
        }

        $this->listRequiredMethod = $methodList;

        return $methodList;
    }