public AsciiBox boxSideBySide(AsciiBox box1, AsciiBox box2) {
        StringBuilder aggregateBox = new StringBuilder();
        int box1Width = box1.width();
        String[] box1Lines = box1.lines();
        int box2Width = box2.width();
        String[] box2Lines = box2.lines();
        int maxRows = Math.max(box1Lines.length, box2Lines.length);
        for (int row = 0; row < maxRows; row++) {
            boolean ranOutOfLines = false;
            if (row >= box1Lines.length) {
                ranOutOfLines = true;
                aggregateBox.append(StringUtils.repeat(" ", box1Width));
            } else {
                String split1Row = box1Lines[row];
                int padding = box1Width - split1Row.length();
                aggregateBox.append(split1Row).append(StringUtils.repeat(" ", padding));
            }
            if (row >= box2Lines.length) {
                if (ranOutOfLines) {
                    break;
                }
                aggregateBox.append(StringUtils.repeat(" ", box2Width));
            } else {
                String split2Row = box2Lines[row];
                int padding = box2Width - split2Row.length();
                aggregateBox.append(split2Row).append(StringUtils.repeat(" ", padding));
            }
            if (row < maxRows - 1) {
                // Only write newline if we are not the last line
                aggregateBox.append('\n');
            }
        }
        AsciiBox asciiBox = new AsciiBox(aggregateBox.toString());
        asciiBox.compressedBoxSet = combineCompressedBoxSets(box1, box2);
        return asciiBox;
    }
BoxSideBySide renders two boxes side by side

@param box1 left of box2
@param box2 right of box1
@return box1 left of box2
plc4j/spi/src/main/java/org/apache/plc4x/java/spi/utils/ascii/AsciiBoxWriter.java