@@ -36,7 +36,7 @@ class ModelImporter(private val root: INode, val stats: ImportStats? = null) {
36
36
val originalIdToRef: MutableMap <String , INodeReference > = buildRefIndex(allNodes)
37
37
syncAllReferences(allNodes, originalIdToSpec, originalIdToRef)
38
38
39
- deleteAllExtraChildren(allNodes , originalIdToSpec)
39
+ deleteAllExtraChildren(root , originalIdToSpec)
40
40
}
41
41
42
42
private fun buildExistingIndex (allNodes : List <INode >): MutableMap <String , INode > {
@@ -250,18 +250,19 @@ class ModelImporter(private val root: INode, val stats: ImportStats? = null) {
250
250
251
251
}
252
252
253
- private fun deleteAllExtraChildren (allNodes : List < INode > , originalIdToSpec : MutableMap <String , NodeData >) {
253
+ private fun deleteAllExtraChildren (root : INode , originalIdToSpec : MutableMap <String , NodeData >) {
254
254
val toBeRemoved = mutableListOf<INode >()
255
- allNodes.forEach { node ->
256
- node.allChildren.forEach {
257
- if (! originalIdToSpec.containsKey(it.originalId())) {
258
- toBeRemoved.add(it)
259
- }
255
+ root.allChildren.forEach {
256
+ if (! originalIdToSpec.containsKey(it.originalId())) {
257
+ toBeRemoved.add(it)
260
258
}
261
259
}
262
- toBeRemoved.asReversed(). forEach {// delete bottom-up
260
+ toBeRemoved.forEach {
263
261
it.parent?.removeChildWithStats(it)
264
262
}
263
+ root.allChildren.forEach {
264
+ deleteAllExtraChildren(it, originalIdToSpec)
265
+ }
265
266
}
266
267
267
268
private fun NodeData.getIndexWithinRole (parent : NodeData ) : Int =
0 commit comments