public static IEnumerable<LocatedNode> GetRootLocatedNodes(this SyntaxNode node)
{
if (node.IsToken)
{
var token = (SyntaxToken) node;
foreach (var locatedNode in GetRootLocatedNodes(token))
yield return locatedNode;
}
else if (node is SyntaxTrivia)
{
var trivia = (SyntaxTrivia) node;
if (trivia.Span.IsInRootFile)
yield return trivia;
}
else
{
foreach (var childNode in node.ChildNodes)
foreach (var locatedNode in GetRootLocatedNodes(childNode))
yield return locatedNode;
}
}