private static void Handle(SyntaxNodeAnalysisContext context) { if (!context.IsExcludedFromAnalysis() && ShouldCheck(context) is { } expression) { if (Disposable.IsCreation(expression, context.SemanticModel, context.CancellationToken).IsEither(Result.Yes, Result.AssumeYes) && Disposable.Ignores(expression, context.SemanticModel, context.CancellationToken)) { context.ReportDiagnostic(Diagnostic.Create(Descriptors.IDISP004DoNotIgnoreCreated, context.Node.GetLocation())); } if (context.Node is ObjectCreationExpressionSyntax objectCreation && context.SemanticModel.TryGetType(objectCreation, context.CancellationToken, out var type) && type.IsAssignableTo(KnownSymbol.HttpClient, context.Compilation) && !IsStaticFieldInitializer(objectCreation) && !IsStaticPropertyInitializer(objectCreation) && !IsStaticCtor(context.ContainingSymbol)) { context.ReportDiagnostic(Diagnostic.Create(Descriptors.IDISP014UseSingleInstanceOfHttpClient, objectCreation.GetLocation())); } } }