internal static SyntaxList<UsingDirectiveSyntax> Sort(SyntaxList<UsingDirectiveSyntax> directives) => SyntaxFactory.List( directives. OrderBy(x => x.StaticKeyword.IsKind(SyntaxKind.StaticKeyword) ? 1 : x.Alias == null ? 0 : 2). ThenBy(x => x.Alias?.ToString()). ThenBy(x => x.Name.ToString()) .Distinct(new AutoRest.Core.Utilities.EqualityComparer<UsingDirectiveSyntax>((a, b) => a.Name.ToString() == b.Name.ToString(), a=> 0 )));
internal static SyntaxList <UsingDirectiveSyntax> Sort(this SyntaxList <UsingDirectiveSyntax> usingDirectives, bool placeSystemNamespaceFirst = true) => SyntaxFactory.List( usingDirectives .OrderBy(Compare) .ThenBy(x => x.Alias?.ToString()) .ThenByDescending(x => placeSystemNamespaceFirst && x.Name.ToString().StartsWith(nameof(System), StringComparison.Ordinal)) .ThenBy(x => x.Name.ToString()));