public static function drawRow(IO $io, BorderStyle $style, array $row, array $columnLengths, array $alignments, $cellFormat, Style $cellStyle = null, $paddingChar, $indentation = 0)
    {
        $totalLines = 0;

        // Split all cells into lines
        foreach ($row as $col => $cell) {
            $row[$col] = explode("\n", $cell);
            $totalLines = max($totalLines, count($row[$col]));
        }

        $nbColumns = count($row);
        $borderVLChar = $io->format($style->getLineVLChar(), $style->getStyle());
        $borderVCChar = $io->format($style->getLineVCChar(), $style->getStyle());
        $borderVRChar = $io->format($style->getLineVRChar(), $style->getStyle());

        for ($i = 0; $i < $totalLines; ++$i) {
            $line = str_repeat(' ', $indentation);
            $line .= $borderVLChar;

            foreach ($row as $col => &$remainingLines) {
                $cellLine = $remainingLines ? array_shift($remainingLines) : '';
                $totalPadLength = $columnLengths[$col] - StringUtil::getLength($cellLine, $io);
                $paddingLeft = '';
                $paddingRight = '';

                if ($totalPadLength > 0) {
                    $alignment = isset($alignments[$col]) ? $alignments[$col] : Alignment::LEFT;

                    switch ($alignment) {
                        case Alignment::LEFT:
                            $paddingRight = str_repeat($paddingChar, $totalPadLength);
                            break;
                        case Alignment::RIGHT:
                            $paddingLeft = str_repeat($paddingChar, $totalPadLength);
                            break;
                        case Alignment::CENTER:
                            $leftPadLength = floor($totalPadLength / 2);
                            $paddingLeft = str_repeat($paddingChar, $leftPadLength);
                            $paddingRight = str_repeat($paddingChar, $totalPadLength - $leftPadLength);
                            break;
                    }
                }

                $line .= $io->format(sprintf($cellFormat, $paddingLeft.$cellLine.$paddingRight), $cellStyle);
                $line .= $col < $nbColumns - 1 ? $borderVCChar : $borderVRChar;
            }

            // Remove trailing space
            $io->write(rtrim($line)."\n");
        }
    }