From 91b18c4bf398d2df17e3722329bc14e7a84aafe9 Mon Sep 17 00:00:00 2001
From: Bastien Sultan <bastien.sultan@telecom-paris.fr>
Date: Wed, 24 Aug 2022 12:07:37 +0200
Subject: [PATCH] AMULET: patching state deletion method

---
 .idea/runConfigurations.xml                        | 10 ----------
 .../avatartranslator/mutation/RmStateMutation.java | 14 ++++++++++++++
 2 files changed, 14 insertions(+), 10 deletions(-)
 delete mode 100644 .idea/runConfigurations.xml

diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644
index 797acea53e..0000000000
--- a/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="RunConfigurationProducerService">
-    <option name="ignoredProducers">
-      <set>
-        <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
-      </set>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/src/main/java/avatartranslator/mutation/RmStateMutation.java b/src/main/java/avatartranslator/mutation/RmStateMutation.java
index a451f03a4d..bd4c9b82d8 100644
--- a/src/main/java/avatartranslator/mutation/RmStateMutation.java
+++ b/src/main/java/avatartranslator/mutation/RmStateMutation.java
@@ -41,6 +41,8 @@ package avatartranslator.mutation;
 import avatartranslator.*;
 import myutil.TraceManager;
 
+import java.util.List;
+
 /**
  * Class RmStateMutation
  * Creation: 27/06/2022
@@ -58,6 +60,18 @@ public class RmStateMutation extends StateMutation implements RmMutation {
     public void apply(AvatarSpecification _avspec) throws ApplyMutationException {
         AvatarState state = getElement(_avspec);
         AvatarStateMachine asm = getAvatarStateMachine(_avspec);
+        List<AvatarStateMachineElement> elements = asm.getListOfElements();
+        for (AvatarStateMachineElement element : elements) {
+            if (element.getNexts().contains(state)){
+                for (AvatarStateMachineElement element2 : elements) {
+                    if (element2.getNexts().contains(element)){
+                        element2.removeNext(element);
+                    }
+                }
+                asm.removeElement(element);
+            }
+        }
+        state.removeAllNexts();
         asm.removeElement(state);
     }
 
-- 
GitLab