parallelOpenStreamsAndWait(primaryStream, secondayStream);
Iterator<IdAndVersion> primaryIterator = primaryStream.iterator();
Iterator<IdAndVersion> secondaryIterator = secondayStream.iterator();
IdAndVersion primaryItem = next(primaryIterator);
IdAndVersion secondaryItem = next(secondaryIterator);
while (primaryItem != null && secondaryItem != null) {
if (primaryItem.equals(secondaryItem)) {
primaryItem = verifiedNext(primaryIterator, primaryItem);
secondaryItem = next(secondaryIterator);
} else if (primaryItem.getId().equals(secondaryItem.getId())) {
idAndVersionStreamVerifierListener.onVersionMisMatch(primaryItem, secondaryItem);
primaryItem = verifiedNext(primaryIterator, primaryItem);
secondaryItem = next(secondaryIterator);
} else if (primaryItem.compareTo(secondaryItem) < 0) {
idAndVersionStreamVerifierListener.onMissingInSecondaryStream(primaryItem);