private static object GetItemFromCache(IContext context, object scope, Multimap<IBinding, CacheEntry> entries)
{
foreach (CacheEntry entry in entries[context.Binding])
{
if (!ReferenceEquals(entry.Scope.Target, scope))
continue;
if (context.HasInferredGenericArguments)
{
var cachedArguments = entry.Context.GenericArguments;
var arguments = context.GenericArguments;
if (!cachedArguments.SequenceEqual(arguments))
continue;
}
return entry.Reference.Instance;
}
return null;
}