public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) { // recurse downwards so we visit inner namespaces first. var rewritten = (NamespaceDeclarationSyntax)(base.VisitNamespaceDeclaration(node) ?? throw ExceptionUtilities.Unreachable); if (!node.CanAddUsingDirectives(_cancellationToken)) { return(rewritten); } if (node == _aliasContainer) { rewritten = rewritten.AddUsingDirectives(_aliasDirectives, _placeSystemNamespaceFirst); } if (node == _usingContainer) { rewritten = rewritten.AddUsingDirectives(_usingDirectives, _placeSystemNamespaceFirst); } if (node == _staticUsingContainer) { rewritten = rewritten.AddUsingDirectives(_staticUsingDirectives, _placeSystemNamespaceFirst); } if (node == _externContainer) { rewritten = rewritten.AddExterns(_externAliases); } return(rewritten); }