Enhancement request: anyone need a "faster merge for special occasions"?

Would anyone be interested in component that does a "faster merge for special occasions" (a merge that assumes ordered data entering) that was raised in another post (https://community.accelrys.com/message/7841#7841)?

The current merge does not release records until they have all been received, when it can work out which ones belong together.  There are a number of occasions when data is ordered such that sequential records can be merged in sets before all the data arrives.  This would presumably be an advantage over a regular merge in terms of memory (or requirement for caching to disc).  Records would also appear to flow through more rapidly, though that would presumably be cosmetic.

The data might be ordered because, e.g., (1) it's been sorted already, (2) it's resulted from some un-merging process, or (3) it is fundamentally sequential, e.g. from a file.

1.  You've unmerged your data or created multiple streams to do some separate manipulations and want to bring it back to separate records.  This is likely when you want to operate on the molecule in different ways.  It might also happen when one of the streams is otherwise destructive to data.  These situations can likely be handled with a run-to-completion subprotocol or caching-and-joining; however, if the amount of processing is small, the overhead of the run-to-completion will impact run time.

2.  An alternative to pivoting.

3.  File readers where data is on multiple lines.  E.g. tagged file formats like ISI, PubMed, .ini files.

In addition to the properties from the Merge component, properties like the following could be useful in defining behavior:

MergeUsing - property (or properties?) used to indicate merging

MergeWhen:

  - property changes

  - property becomes null

  - property becomes non-null

MergeTiming:

  - before change (the records prior to the change are merged)

  - on change (the records including the change are merged)

FlushLastRecords - True/False (what to do with the last set of records, which may not have a following signal to merge them)

RetainMergeUsingProperty - True/False (in most cases this will be a flag and unneeded later)

KeepMolecule:

  - first

  - last

  - original