private static void Handle(SyntaxNodeAnalysisContext context) { if (!context.IsExcludedFromAnalysis() && context.Node is InvocationExpressionSyntax invocation && DisposeCall.IsMatchAny(invocation, context.SemanticModel, context.CancellationToken) && !invocation.TryFirstAncestorOrSelf <AnonymousFunctionExpressionSyntax>(out _) && DisposeCall.TryGetDisposedRootMember(invocation, context.SemanticModel, context.CancellationToken, out var root)) { if (Disposable.IsCachedOrInjectedOnly(root, invocation, context.SemanticModel, context.CancellationToken)) { context.ReportDiagnostic(Diagnostic.Create(Descriptors.IDISP007DoNotDisposeInjected, invocation.FirstAncestorOrSelf <StatementSyntax>()?.GetLocation() ?? invocation.GetLocation())); } if (invocation.Expression is MemberAccessExpressionSyntax { Expression : IdentifierNameSyntax _ } &&