private static IEnumerable <DiagnosticResult> GetExpectedDiagnostics(string fileName, IList <SourceMarker> markers, params Rule[] violatedRules)
        {
            if ((!markers?.Any() ?? true) && (!violatedRules?.Any() ?? true))
            {
                yield break;
            }

            Assert.True(markers.Count == violatedRules.Length, "Number of markers should always equal the number of violated rules");

            for (var i = 0; i < markers.Count; ++i)
            {
                var rule      = violatedRules[i];
                var marker    = markers[i];
                var arguments = Enumerable.Empty <object>();

                if (marker is DiagnosticArgumentMarker)
                {
                    arguments = rule.Arguments;
                }
                else if (marker is DiagnosticTextMarker textMarker)
                {
                    arguments = new[] { textMarker.Text };
                }

                yield return(DiagnosticVerifier.GetExpectedDiagnostic(
                                 fileName ?? DiagnosticVerifier.DefaultFileName, marker.Line, marker.Column, rule.DiagnosticDescriptor, arguments.ToArray()));
            }
        }