private MemberQuery IdentifySymbol(SymbolInfo symbol) { // Try to get the Symbol successfully resolved to (if any) ISymbol resolvedSymbol = symbol.Symbol; // If the symbol wasn't uniquely resolved, get the first possible candidate if (resolvedSymbol == null && symbol.CandidateSymbols.Length > 0) { resolvedSymbol = symbol.CandidateSymbols[0]; } // Construct a member query for the full namespace, name, and signature of the member referenced if (resolvedSymbol != null) { StringBuilder symbolName = new StringBuilder(); symbolName.Append(resolvedSymbol.FullNamespace()); if (resolvedSymbol.ContainingType != null) { if (symbolName.Length > 0) { symbolName.Append("."); } symbolName.Append(resolvedSymbol.ContainingType.AdjustedName()); } if (symbolName.Length > 0) { symbolName.Append("."); } symbolName.Append(resolvedSymbol.AdjustedName()); MemberQuery query = new MemberQuery(symbolName.ToString(), true, true); query.Parameters = resolvedSymbol.MinimalParameters(); // Make query case sensitive, because we know we got exact casing from Roslyn query.IgnoreCase = false; return(query); } return(null); }