diff --git a/src/main/kotlin/automaton/constructor/model/automaton/AbstractAutomaton.kt b/src/main/kotlin/automaton/constructor/model/automaton/AbstractAutomaton.kt index c7e91a3..561f6ff 100644 --- a/src/main/kotlin/automaton/constructor/model/automaton/AbstractAutomaton.kt +++ b/src/main/kotlin/automaton/constructor/model/automaton/AbstractAutomaton.kt @@ -245,7 +245,7 @@ abstract class AbstractAutomaton( clearExecutionStatesInternal(mutableSetOf()) } - private fun clearExecutionStatesInternal(visited: MutableSet) { + protected fun clearExecutionStatesInternal(visited: MutableSet) { if (!visited.add(this)) return vertices.forEach { v -> v.executionStates.clear() @@ -253,6 +253,8 @@ abstract class AbstractAutomaton( } } + internal fun clearExecutionStatesFromOutside(visited: MutableSet) = clearExecutionStatesInternal(visited) + protected open fun clearNestedAutomaton(vertex: AutomatonVertex, visited: MutableSet) { if (vertex is BuildingBlock) { val sub = vertex.subAutomaton diff --git a/src/main/kotlin/automaton/constructor/model/automaton/recursive/RecursiveAutomaton.kt b/src/main/kotlin/automaton/constructor/model/automaton/recursive/RecursiveAutomaton.kt index 247f2b6..37679a4 100644 --- a/src/main/kotlin/automaton/constructor/model/automaton/recursive/RecursiveAutomaton.kt +++ b/src/main/kotlin/automaton/constructor/model/automaton/recursive/RecursiveAutomaton.kt @@ -199,7 +199,7 @@ class RecursiveAutomaton( override fun clearNestedAutomaton(vertex: AutomatonVertex, visited: MutableSet) { if (vertex is RecursiveAutomatonBox) { val sub = vertex.subAutomaton - if (sub !== this) (sub as? AbstractAutomaton)?.clearExecutionStates() + if (sub !== this) (sub as? AbstractAutomaton)?.clearExecutionStatesFromOutside(visited) } }