static StObjMapInfo?LockedGetMapInfo(Assembly a, [AllowNull] ref IActivityMonitor monitor) { if (_alreadyHandled.TryGetValue(a, out var info)) { return(info); } LockedEnsureMonitor(ref monitor); var attr = a.GetCustomAttributesData().FirstOrDefault(m => m.AttributeType.Name == "SignatureAttribute" && m.AttributeType.Namespace == "CK.StObj"); if (attr != null) { using (monitor.OpenInfo($"Analyzing '{a.FullName}' assembly.")) { info = StObjMapInfo.Create(monitor, a, attr); if (info != null) { var sha1S = info.GeneratedSignature.ToString(); if (_alreadyHandled.TryGetValue(sha1S, out var exists)) { Debug.Assert(exists != null); monitor.Info($"StObjMap found with the same signature as an already existing one. Keeping the previous one."); info = exists; } else { _alreadyHandled.Add(sha1S, info); _availableMaps.Add(info); } } } _alreadyHandled.Add(a, info); } return(info); }