
![image](https://user-images.githubusercontent.com/12162539/50417924-d6cc2b80-0863-11e9-860f-bf9d132db570.png)

if (isLastRow
                    && border.has(Border.BORDER_OUTER_BOTTOM)) {
                tableSB.append(drawSeparationLine(widthCacheArray)).append("\n");
            }
        }
        return tableSB.toString();
    }
    private String drawRow(int[] widthCacheArray, int rowIndex) {
        final StringBuilder rowSB = new StringBuilder();
        final Scanner[] scannerArray = new Scanner[getColumnCount()];
        try {
            boolean hasNextLine;
            do {
                hasNextLine = false;
                final StringBuilder segmentSB = new StringBuilder();
                for (int colIndex = 0; colIndex < getColumnCount(); colIndex++) {
                    final int width = widthCacheArray[colIndex];
                    final boolean isFirstColOfRow = colIndex == 0;
                    final boolean isLastColOfRow = colIndex == widthCacheArray.length - 1;
                    final String borderChar;
                    if (isFirstColOfRow
                            && border.has(Border.BORDER_OUTER_LEFT)) {
                        borderChar = "|";
                    } else if (!isFirstColOfRow
                            && border.has(Border.BORDER_INNER_V)) {
                        borderChar = "|";
                    } else {
                        borderChar = EMPTY;
                    }
                    if (null == scannerArray[colIndex]) {