protected function buildSql(array $settings)/*# : string */
    {
        $result = $this->getType(); // type
        $settings['join'] = $settings['seperator'] . $settings['indent'];

        $result .= $this->buildBeforeAfter('AFTER', 'TYPE', $settings); // hint
        foreach ($this->getConfigs() as $pos => $prefix) {
            // before
            $result .= $this->buildBeforeAfter('BEFORE', $pos, $settings);

            $method = 'build' . ucfirst(strtolower($pos));
            $result .= $this->{$method}($prefix, $settings);

            // after
            $result .= $this->buildBeforeAfter('AFTER', $pos, $settings);
        }

        $result .= $this->buildBeforeAfter('AFTER', 'STMT', $settings);
        return $result;
    }