protected function buildTableRow($row, $keys, $rowKey)
    {
        $str = '';
        $values = $this->debug->methodTable->keyValues($row, $keys, $objInfo);
        $parsed = $this->debug->utilities->parseTag($this->dump($rowKey));
        $str .= '<tr>';
        $str .= $this->debug->utilities->buildTag(
            'th',
            array(
                'class' => 't_key text-right '.$parsed['attribs']['class'],
                'scope' => 'row',
            ),
            $parsed['innerhtml']
        );
        if ($objInfo['row']) {
            $str .= $this->markupClassname($objInfo['row']['className'], 'td', array(
                'title' => $objInfo['row']['phpDoc']['summary'] ?: null,
            ));
            $this->tableInfo['haveObjRow'] = true;
        } else {
            $str .= '<td class="t_classname"></td>';
        }
        foreach ($values as $v) {
            $str .= $this->dump($v, true, 'td');
        }
        $str .= '</tr>'."\n";
        $str = \str_replace(' title=""', '', $str);
        foreach (\array_keys($this->tableInfo['totals']) as $k) {
            $this->tableInfo['totals'][$k] += $values[$k];
        }
        foreach ($objInfo['cols'] as $k2 => $classname) {
            if ($this->tableInfo['colClasses'][$k2] === false) {
                // column values not of the same type
                continue;
            }
            if ($this->tableInfo['colClasses'][$k2] === null) {
                $this->tableInfo['colClasses'][$k2] = $classname;
            }
            if ($this->tableInfo['colClasses'][$k2] !== $classname) {
                $this->tableInfo['colClasses'][$k2] = false;
            }
        }
        return $str;
    }