private static bool TryGetBuilderMember <TSymbol>( SyntheticBoundNodeFactory F, WellKnownMember?member, NamedTypeSymbol builderType, bool customBuilder, out TSymbol symbol ) where TSymbol : Symbol { if (!member.HasValue) { symbol = null; return(true); } WellKnownMember memberValue = member.Value; if (customBuilder) { var descriptor = WellKnownMembers.GetDescriptor(memberValue); var sym = CSharpCompilation.GetRuntimeMember( builderType.OriginalDefinition, descriptor, F.Compilation.WellKnownMemberSignatureComparer, accessWithinOpt: null ); if ((object)sym != null) { sym = sym.SymbolAsMember(builderType); } symbol = sym as TSymbol; } else { symbol = F.WellKnownMember(memberValue, isOptional: true) as TSymbol; if ((object)symbol != null) { symbol = (TSymbol)symbol.SymbolAsMember(builderType); } } if ((object)symbol == null) { var descriptor = WellKnownMembers.GetDescriptor(memberValue); var diagnostic = new CSDiagnostic( new CSDiagnosticInfo( ErrorCode.ERR_MissingPredefinedMember, ( customBuilder ? (object)builderType : descriptor.DeclaringTypeMetadataName ), descriptor.Name ), F.Syntax.Location ); F.Diagnostics.Add(diagnostic); return(false); } return(true); }