fn upsert_operator<G: Scope, FromTime, F, Fut, US>(
input: &Collection<G, (UpsertKey, Option<Result<Row, UpsertError>>, FromTime), Diff>,
key_indices: Vec<usize>,
resume_upper: Antichain<G::Timestamp>,
persist_input: Collection<G, Result<Row, DataflowError>, Diff>,
persist_token: Option<Vec<PressOnDropButton>>,
upsert_metrics: UpsertMetrics,
source_config: SourceExportCreationConfig,
state: F,
upsert_config: UpsertConfig,
storage_configuration: &StorageConfiguration,
prevent_snapshot_buffering: bool,
snapshot_buffering_max: Option<usize>,
) -> (Collection<G, Result<Row, DataflowError>, Diff>, Stream<G, (usize, HealthStatusUpdate)>, Stream<G, Infallible>, PressOnDropButton)