@@ -136,14 +136,24 @@ private static async Task<Solution> AddDisposeAndBaseClassAsync(
136136 newDisposeMethod = existingDisposeMethod . WithBody ( cleanupBody ) ;
137137 }
138138
139- // Update the dispose document
140- DocumentEditor disposeEditor = await DocumentEditor . CreateAsync ( disposeDocument , cancellationToken ) . ConfigureAwait ( false ) ;
141- disposeEditor . ReplaceNode ( existingDisposeMethod , newDisposeMethod ) ;
142- solution = solution . WithDocumentSyntaxRoot ( disposeDocument . Id , disposeEditor . GetChangedRoot ( ) ) ;
143-
144- // Remove the TestCleanup method from the current document
145- editor . RemoveNode ( testCleanupMethod ) ;
146- solution = solution . WithDocumentSyntaxRoot ( document . Id , editor . GetChangedRoot ( ) ) ;
139+ if ( disposeDocument . Id == document . Id )
140+ {
141+ // Both methods are in the same document, use single editor
142+ editor . ReplaceNode ( existingDisposeMethod , newDisposeMethod ) ;
143+ editor . RemoveNode ( testCleanupMethod ) ;
144+ solution = solution . WithDocumentSyntaxRoot ( document . Id , editor . GetChangedRoot ( ) ) ;
145+ }
146+ else
147+ {
148+ // Methods are in different documents, use separate editors
149+ DocumentEditor disposeEditor = await DocumentEditor . CreateAsync ( disposeDocument , cancellationToken ) . ConfigureAwait ( false ) ;
150+ disposeEditor . ReplaceNode ( existingDisposeMethod , newDisposeMethod ) ;
151+ solution = solution . WithDocumentSyntaxRoot ( disposeDocument . Id , disposeEditor . GetChangedRoot ( ) ) ;
152+
153+ // Remove the TestCleanup method from the current document
154+ editor . RemoveNode ( testCleanupMethod ) ;
155+ solution = solution . WithDocumentSyntaxRoot ( document . Id , editor . GetChangedRoot ( ) ) ;
156+ }
147157 }
148158 else
149159 {
0 commit comments