public static TNode ChangeAccessibility <TNode>( TNode node, Accessibility newAccessibility, IModifierComparer comparer = null) where TNode : SyntaxNode { return(ChangeAccessibility(node, AccessibilityInfo.Create(node.GetModifiers()), newAccessibility, comparer)); }
internal static TNode ChangeAccessibility <TNode>( TNode node, AccessibilityInfo info, Accessibility newAccessibility, IModifierComparer comparer = null) where TNode : SyntaxNode { Accessibility accessibility = info.Accessibility; if (accessibility == newAccessibility) { return(node); } comparer = comparer ?? ModifierComparer.Instance; if (IsSingleTokenAccessibility(accessibility) && IsSingleTokenAccessibility(newAccessibility)) { int insertIndex = comparer.GetInsertIndex(info.Modifiers, GetKind(newAccessibility)); if (info.Index == insertIndex || info.Index == insertIndex - 1) { SyntaxToken newToken = CreateToken(newAccessibility).WithTriviaFrom(info.Token); SyntaxTokenList newModifiers = info.Modifiers.Replace(info.Token, newToken); return(node.WithModifiers(newModifiers)); } } if (accessibility != Accessibility.NotApplicable) { node = ModifierHelper.RemoveModifierAt(node, Math.Max(info.Index, info.AdditionalIndex)); if (accessibility == Accessibility.ProtectedOrInternal) { node = ModifierHelper.RemoveModifierAt(node, Math.Min(info.Index, info.AdditionalIndex)); } } if (newAccessibility != Accessibility.NotApplicable) { node = (TNode)InsertModifier(node, newAccessibility, comparer); } return(node); }