private void AppendSymbolsWithNameAndArity( ArrayBuilder<Symbol> results, string name, int arity, Binder binder, NamespaceOrTypeSymbol container, LookupOptions options) { Debug.Assert(results != null); // Don't need to de-dup since AllMethodsOnArityZero can't be set at this point (not exposed in CommonLookupOptions). Debug.Assert((options & LookupOptions.AllMethodsOnArityZero) == 0); var lookupResult = LookupResult.GetInstance(); HashSet<DiagnosticInfo> useSiteDiagnostics = null; binder.LookupSymbolsSimpleName( lookupResult, container, name, arity, basesBeingResolved: null, options: options & ~LookupOptions.IncludeExtensionMethods, diagnose: false, useSiteDiagnostics: ref useSiteDiagnostics); if (lookupResult.IsMultiViable) { if (lookupResult.Symbols.Any(t => t.Kind == SymbolKind.NamedType || t.Kind == SymbolKind.Namespace || t.Kind == SymbolKind.ErrorType)) { // binder.ResultSymbol is defined only for type/namespace lookups bool wasError; var diagnostics = DiagnosticBag.GetInstance(); // client code never expects a null diagnostic bag. Symbol singleSymbol = binder.ResultSymbol(lookupResult, name, arity, this.Root, diagnostics, true, out wasError, container, options); diagnostics.Free(); if (!wasError) { results.Add(singleSymbol); } else { results.AddRange(lookupResult.Symbols); } } else { results.AddRange(lookupResult.Symbols); } } lookupResult.Free(); }