private static MemberDeclarationSyntax GetNewMemberDeclaration(MemberDeclarationSyntax member, Accessibility accessibility, IModifierComparer comparer) { SyntaxKind modifierKind = GetFirstModifierKind(accessibility); switch (member.Kind()) { case SyntaxKind.ClassDeclaration: { ClassDeclarationSyntax declaration = ((ClassDeclarationSyntax)member) .InsertModifier(modifierKind, comparer); if (accessibility == Accessibility.ProtectedOrInternal) { return(declaration.InsertModifier(SyntaxKind.InternalKeyword, comparer)); } return(declaration); } case SyntaxKind.ConstructorDeclaration: { return(((ConstructorDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.ConversionOperatorDeclaration: { return(((ConversionOperatorDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.DelegateDeclaration: { return(((DelegateDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.EnumDeclaration: { return(((EnumDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.EventDeclaration: { return(((EventDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.EventFieldDeclaration: { return(((EventFieldDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.FieldDeclaration: { return(((FieldDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.IndexerDeclaration: { return(((IndexerDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.InterfaceDeclaration: { InterfaceDeclarationSyntax declaration = ((InterfaceDeclarationSyntax)member) .InsertModifier(modifierKind, comparer); if (accessibility == Accessibility.ProtectedOrInternal) { return(declaration.InsertModifier(SyntaxKind.InternalKeyword, comparer)); } return(declaration); } case SyntaxKind.MethodDeclaration: { return(((MethodDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.OperatorDeclaration: { return(((OperatorDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.PropertyDeclaration: { return(((PropertyDeclarationSyntax)member).InsertModifier(modifierKind, comparer)); } case SyntaxKind.StructDeclaration: { StructDeclarationSyntax declaration = ((StructDeclarationSyntax)member) .InsertModifier(modifierKind, comparer); if (accessibility == Accessibility.ProtectedOrInternal) { return(declaration.InsertModifier(SyntaxKind.InternalKeyword, comparer)); } return(declaration); } default: { Debug.Fail(member.Kind().ToString()); return(member); } } }