in src/PublicToInternalGenerator/PublicToInternalGenerator.cs [218:240]
private static TMemberDeclarationSyntax? ChangePublicToInternal<TMemberDeclarationSyntax>(TMemberDeclarationSyntax? node)
where TMemberDeclarationSyntax : MemberDeclarationSyntax
{
if (node is null) return null;
// check if this is a top-level type (not nested)
if (IsNestedType(node)) return node;
var modifiers = node.Modifiers;
// find public modifier
var publicModifier = modifiers.FirstOrDefault(m => m.IsKind(SyntaxKind.PublicKeyword));
if (publicModifier.IsKind(SyntaxKind.None))
return node;
// Replace public with internal
var internalToken = SyntaxFactory.Token(SyntaxKind.InternalKeyword)
.WithLeadingTrivia(publicModifier.LeadingTrivia)
.WithTrailingTrivia(publicModifier.TrailingTrivia);
var newModifiersList = modifiers.Replace(publicModifier, internalToken);
return (TMemberDeclarationSyntax)node.WithModifiers(newModifiersList);
}