private void addNonAlignedTimeSeriesToBatchStatement(
      final CreateTimeSeriesStatement statement,
      final InternalCreateMultiTimeSeriesStatement internalCreateMultiTimeSeriesStatement) {
    final MeasurementGroup group =
        internalCreateMultiTimeSeriesStatement
            .getDeviceMap()
            .computeIfAbsent(
                statement.getPath().getDevicePath(),
                devicePath -> new Pair<>(false, new MeasurementGroup()))
            .getRight();
    if (group.addMeasurement(
        statement.getPath().getMeasurement(),
        statement.getDataType(),
        statement.getEncoding(),
        statement.getCompressor())) {
      group.addAttributes(statement.getAttributes());
      group.addTags(statement.getTags());
      group.addProps(statement.getProps());
      group.addAlias(statement.getAlias());
    }
  }
This visitor will convert {@link Statement}s to batch and is stateful, and can only be used in a
single thread. It only guarantees the correctness when is used by the schema snapshot and shall
not be used for other purposes.

<p>When the visitor is called, it shall encounter no:

<p>1. {@link StatementNode}s other than {@link Statement}s

<p>2. TimeSeries with identical path.

<p>3. Alter to the timeSeries and templates in batch.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeTreeStatementToBatchVisitor.java