private static IEnumerable<SymbolDetails> GetSymbolDetails(KeyValuePair<ISymbol, SyntaxNode> x, SemanticModel model)
{
var containingType = ResolveContainingType(x.Value, model);
yield return new SymbolDetails(x.Key, new ReferenceLocation(x.Value.GetLocation(), containingType, model));
var namedType = x.Key as INamedTypeSymbol;
if (namedType != null && namedType.ConstructedFrom != null && namedType.ConstructedFrom != x.Key)
{
yield return new SymbolDetails(namedType.ConstructedFrom, new ReferenceLocation(x.Value.GetLocation(), containingType, model));
}
var namedMethod = x.Key as IMethodSymbol;
if (namedMethod != null && namedMethod.ConstructedFrom != null && namedMethod.ConstructedFrom != x.Key)
{
yield return new SymbolDetails(namedMethod, new ReferenceLocation(x.Value.GetLocation(), ResolveContainingType(x.Value, model), model));
}
}