void LoadSecondaryCacheFromAssemblies() { foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { if (cachedAssemblies.Contains(assembly)) { continue; } cachedAssemblies.Add(assembly); if (NoSwiftRuntimeReferences(assembly)) { continue; } foreach (var t in assembly.GetTypes()) { string swiftTypeName; if (SwiftTypeNameAttribute.TryGetSwiftName(t, out swiftTypeName)) { if (t.IsInterface) { var handle = SwiftProtocolTypeAttribute.DescriptorHandleForType(t); if (handle != IntPtr.Zero) { protocolDescriptorCache.Add(handle, t); } } else { secondaryCache.Add(swiftTypeName, t); } } } } }