public void PrefetchSourceMessageIdsFromTargetMessageIds(EntryIdMap <List <byte[]> > destMessagesToTranslate) { this.prefetchedSourceEntryIdMap.Clear(); PropTag sourceEntryIDPtag = this.Merger.DestHierarchy.SourceEntryIDPtag; PropTag[] additionalPtagsToLoad = new PropTag[] { sourceEntryIDPtag }; foreach (KeyValuePair <byte[], List <byte[]> > keyValuePair in destMessagesToTranslate) { byte[] key = keyValuePair.Key; List <byte[]> value = keyValuePair.Value; foreach (byte[] key2 in value) { this.prefetchedSourceEntryIdMap[key2] = null; } using (IDestinationFolder folder = this.Merger.DestMailbox.GetFolder(key)) { if (folder == null) { MrsTracer.Service.Warning("Destination folder {0} disappeared", new object[] { TraceUtils.DumpEntryId(key) }); } else { List <MessageRec> list = folder.LookupMessages(PropTag.EntryId, value, additionalPtagsToLoad); foreach (MessageRec messageRec in list) { byte[] array = messageRec[sourceEntryIDPtag] as byte[]; if (array == null) { MrsTracer.Service.Warning("Destination message {0} doesn't have mapped source message", new object[] { TraceUtils.DumpEntryId(messageRec.EntryId) }); } else { this.prefetchedSourceEntryIdMap[messageRec.EntryId] = array; } } } } } }