public DiagnosticResult WithLineOffset(int offset)
        {
            if (Spans.IsEmpty)
            {
                return(this);
            }

            var result       = this;
            var spansBuilder = result.Spans.ToBuilder();

            for (var i = 0; i < result.Spans.Length; i++)
            {
                var newStartLinePosition = new LinePosition(result.Spans[i].Span.StartLinePosition.Line + offset, result.Spans[i].Span.StartLinePosition.Character);
                var newEndLinePosition   = new LinePosition(result.Spans[i].Span.EndLinePosition.Line + offset, result.Spans[i].Span.EndLinePosition.Character);

                spansBuilder[i] = new DiagnosticLocation(new FileLinePositionSpan(result.Spans[i].Span.Path, newStartLinePosition, newEndLinePosition), result.Spans[i].Options);
            }

            return(new DiagnosticResult(
                       spansBuilder.MoveToImmutable(),
                       _suppressMessage,
                       _message,
                       Severity,
                       Id,
                       MessageFormat,
                       MessageArguments,
                       SuppressedId));
        }
        public DiagnosticResult WithDefaultPath(string path)
        {
            if (Spans.IsEmpty)
            {
                return(this);
            }

            var spans = Spans.ToBuilder();

            for (var i = 0; i < spans.Count; i++)
            {
                if (spans[i].Span.Path == string.Empty)
                {
                    spans[i] = new DiagnosticLocation(new FileLinePositionSpan(path, spans[i].Span.Span), spans[i].Options);
                }
            }

            return(new DiagnosticResult(
                       spans.MoveToImmutable(),
                       _suppressMessage,
                       _message,
                       Severity,
                       Id,
                       MessageFormat,
                       MessageArguments,
                       SuppressedId));
        }