private (SyntaxTriviaList trailingTrivia, SyntaxTriviaList leadingTrivia) GetTrailingAndLeadingTrivia( KeyValuePair <ValueTuple <SyntaxToken, SyntaxToken>, TriviaData> pair, CancellationToken cancellationToken) { if (pair.Key.Item1.RawKind == 0) { return(default(SyntaxTriviaList), GetLeadingTriviaAtBeginningOfTree(pair.Key, pair.Value, cancellationToken)); } if (pair.Value is TriviaDataWithList csharpTriviaData) { var triviaList = csharpTriviaData.GetTriviaList(cancellationToken); var index = GetFirstEndOfLineIndexOrRightBeforeComment(triviaList); return(TriviaHelpers.CreateTriviaListFromTo(triviaList, 0, index), TriviaHelpers.CreateTriviaListFromTo(triviaList, index + 1, triviaList.Count - 1)); } // whitespace trivia case such as spaces/tabs/new lines // these will always have a single text change var text = pair.Value.GetTextChanges(GetTextSpan(pair.Key)).Single().NewText ?? ""; var trailingTrivia = SyntaxFactory.ParseTrailingTrivia(text); var width = trailingTrivia.GetFullWidth(); var leadingTrivia = SyntaxFactory.ParseLeadingTrivia(text.Substring(width)); return(trailingTrivia, leadingTrivia); }