code: protected AppenderatorDriverAddResult append(
        final InputRow row,
        final String sequenceName,
        @Nullable final Supplier<Committer> committerSupplier,
        final boolean skipSegmentLineageCheck,
        final boolean allowIncrementalPersists
    ) throws IOException
    {
      Preconditions.checkNotNull(row, "row");
      Preconditions.checkNotNull(sequenceName, "sequenceName");
  
      final SegmentIdWithShardSpec identifier = getSegment(row, sequenceName, skipSegmentLineageCheck);
  
      if (identifier != null) {
        try {
          final Appenderator.AppenderatorAddResult result = appenderator.add(
              identifier,
              row,
              committerSupplier == null ? null : wrapCommitterSupplier(committerSupplier),
              allowIncrementalPersists
          );
          return AppenderatorDriverAddResult.ok(
              identifier,
              result.getNumRowsInSegment(),
              appenderator.getTotalRowCount(),
              result.isPersistRequired(),
              result.getParseException()
          );
        }
        catch (SegmentNotWritableException e) {
          throw new ISE(e, "WTF?! Segment[%s] not writable when it should have been.", identifier);
        }
      } else {
        return AppenderatorDriverAddResult.fail();
      }
    }
docs: Add a row. Must not be called concurrently from multiple threads.
  
  @param row                      the row to add
  @param sequenceName             sequenceName for this row's segment
  @param committerSupplier        supplier of a committer associated with all data that has been added, including this row
  if {@param allowIncrementalPersists} is set to false then this will not be used
  @param skipSegmentLineageCheck  if true, perform lineage validation using previousSegmentId for this sequence.
  Should be set to false if replica tasks would index events in same order
  @param allowIncrementalPersists whether to allow persist to happen when maxRowsInMemory or intermediate persist period
  threshold is hit
  
  @return {@link AppenderatorDriverAddResult}
  
  @throws IOException if there is an I/O error while allocating or writing to a segment