About the synchronized: I access the shadowTransactionInfoMap as the other global maps in StateConsumerImpl (e.g. transfersBySource, transfersBySegment, etc.)

I insert the check because that entry should not be overridden . In fact, before every put for a given sender we should have a remove called in "removeTransfer" method.