private static Task <Document> SortByNameAsync(
            Document document,
            EnumDeclarationSyntax enumDeclaration,
            SeparatedSyntaxListSelection <EnumMemberDeclarationSyntax> selectedMembers,
            CancellationToken cancellationToken)
        {
            IEnumerable <EnumMemberDeclarationSyntax> sorted = selectedMembers.OrderBy(f => f, EnumMemberDeclarationNameComparer.Instance);

            SeparatedSyntaxList <EnumMemberDeclarationSyntax> newMembers = enumDeclaration
                                                                           .Members
                                                                           .ReplaceRange(selectedMembers.FirstIndex, selectedMembers.Count, sorted);

            MemberDeclarationSyntax newNode = enumDeclaration.WithMembers(newMembers);

            return(document.ReplaceNodeAsync(enumDeclaration, newNode, cancellationToken));
        }
        private static async Task <Document> SortByValueAsync(
            Document document,
            EnumDeclarationSyntax enumDeclaration,
            SeparatedSyntaxListSelection <EnumMemberDeclarationSyntax> selectedMembers,
            CancellationToken cancellationToken)
        {
            SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            SpecialType enumSpecialType = semanticModel.GetDeclaredSymbol(enumDeclaration, cancellationToken).EnumUnderlyingType.SpecialType;

            var comparer = new EnumMemberDeclarationValueComparer(EnumValueComparer.GetInstance(enumSpecialType), semanticModel, cancellationToken);

            IEnumerable <EnumMemberDeclarationSyntax> sorted = selectedMembers.OrderBy(f => f, comparer);

            SeparatedSyntaxList <EnumMemberDeclarationSyntax> newMembers = enumDeclaration
                                                                           .Members
                                                                           .ReplaceRange(selectedMembers.FirstIndex, selectedMembers.Count, sorted);

            MemberDeclarationSyntax newNode = enumDeclaration.WithMembers(newMembers);

            return(await document.ReplaceNodeAsync(enumDeclaration, newNode, cancellationToken).ConfigureAwait(false));
        }