private static void ReportDiagnostic( SyntaxNodeAnalysisContext context, MemberDeclarationSyntax memberDeclaration, SyntaxTokenList modifiers, SyntaxToken token) { if (!memberDeclaration.ContainsDirectives(modifiers.Span)) { if (!modifiers.ContainsAccessModifier() || memberDeclaration.GetDeclaredAccessibility() != Accessibility.ProtectedOrInternal || AreTokensNextToEachOther(modifiers, SyntaxKind.ProtectedKeyword, SyntaxKind.InternalKeyword)) { context.ReportDiagnostic( DiagnosticDescriptors.OverridingMemberCannotChangeAccessModifiers, token); } } }