code: protected void append(Appendable appendable, ColumnState state, CellBuffer cellBuffer) throws IOException {
  
      boolean doIndentThisLine = false;
      int width = state.getWidth();
      if (state.isComplete()) {
        cellBuffer.reset(width);
      } else {
        TextColumnInfo columnInfo = state.getColumnInfo();
        if (width >= TextColumnInfo.MINIMUM_WIDTH_FOR_INDENT_AND_HYPHEN) {
          if (state.indent) {
            doIndentThisLine = true;
            width = width - columnInfo.getIndent().length();
            // omit specific characters at beginning of this line...
            String text = state.getText();
            while (isIn(text.charAt(state.textIndex), columnInfo.getOmitChars())) {
              state.textIndex++;
              if (state.textIndex >= state.currentSegment.endIndex) {
                boolean todo = state.proceedTextSegment();
                if (!todo) {
                  break;
                }
              }
            }
          }
          state.indent = true;
        }
        // clear to reuse...
        cellBuffer.reset(width);
        // fill up buffer with cells payload...
        appendCellBuffer(state, cellBuffer);
      }
      // append payload with indent and alignment...
      appendWithAlignment(appendable, state, doIndentThisLine, cellBuffer);
    }
docs: This method appends the text of a single cell (line of a single column).
  
  @param appendable is the {@link Appendable} where to append the text to.
  @param state the {@link ColumnState} of the current column where to fill a single cell.
  @param cellBuffer is the {@link CellBuffer} for the payload of the current cell.
  @throws IOException if caused by the {@link Appendable}.