Index: trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/gui/KeyInteractionSorterTest.java
===================================================================
--- trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/gui/KeyInteractionSorterTest.java	(revision 765)
+++ trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/gui/KeyInteractionSorterTest.java	(revision 765)
@@ -0,0 +1,432 @@
+
+package de.ugoe.cs.quest.eventcore.gui;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import static org.mockito.Mockito.*;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.gui.KeyInteractionSorter.CleanupMode;
+import de.ugoe.cs.quest.eventcore.gui.MouseButtonInteraction.Button;
+import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
+import de.ugoe.cs.tasktree.keyboardmaps.VirtualKey;
+import de.ugoe.cs.util.console.Console;
+import de.ugoe.cs.util.console.TextConsole;
+
+/**
+ * @author Patrick Harms, Steffen Herbold
+ */
+public class KeyInteractionSorterTest {
+
+    @Test
+    public void testSortKeyInteractions_1() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // Normal pressing and releasing of A and B
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_2() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // A is pressed and not released before B is pressed
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_3() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // SHIFT is pressed and released after all keys are pressed
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_4() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // SHIFT is released before the last key is released
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_5() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // SHIFT is released before all other keys are released
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_C), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_C), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_C), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_6() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // SHIFT, CTRL and ALT are pressed and released after all keys are pressed
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
+        expected.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_7() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // now SHIFT, CTRL and ALT are released before the last key is released
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
+        expected.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_8() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // SHIFT, CTRL and ALT are released in another order and before some other keys are
+        // released
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_C), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_C), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
+        expected.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_C), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_9() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // holding of A
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_10() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // holding of shift and meanwhile pressing of A
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        expected.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_11() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // Check if keyboard focus change is moved in front of a sequence in case it is in between a
+        // pressed
+        // released pair
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyboardFocusChange(), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+
+        expected.add(new Event(new KeyboardFocusChange(), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_12() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter();
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // Check if mouse events stay where they are
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new MouseButtonDown(Button.LEFT), guiElement));
+        input.add(new Event(new MouseButtonUp(Button.LEFT), guiElement));
+        input.add(new Event(new MouseClick(Button.LEFT), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new MouseButtonDown(Button.LEFT), guiElement));
+        expected.add(new Event(new MouseButtonUp(Button.LEFT), guiElement));
+        expected.add(new Event(new MouseClick(Button.LEFT), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_13() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter(CleanupMode.REMOVAL);
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // Check if mouse events stay where they are
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @Test
+    public void testSortKeyInteractions_14() {
+        List<Event> input = new LinkedList<Event>();
+        List<Event> expected = new LinkedList<Event>();
+
+        KeyInteractionSorter sorter = new KeyInteractionSorter(CleanupMode.ADDITION);
+
+        IGUIElement guiElement = mock(IGUIElement.class);
+
+        // Check if mouse events stay where they are
+        input.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
+        input.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
+
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_A), guiElement));
+        expected.add(new Event(new KeyTyped(VirtualKey.LETTER_B), guiElement));
+
+        List<Event> output = sorter.sortKeyInteractions(input);
+
+        assertEquals(expected, output);
+    }
+
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        Console.reset();
+        Console.getInstance().registerTraceListener(new TextConsole(Level.INFO));
+    }
+}
Index: trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/gui/SortedInteractionEventListTest.java
===================================================================
--- trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/gui/SortedInteractionEventListTest.java	(revision 721)
+++ 	(revision )
@@ -1,355 +1,0 @@
-
-package de.ugoe.cs.quest.eventcore.gui;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Test;
-
-import de.ugoe.cs.quest.eventcore.Event;
-import de.ugoe.cs.quest.eventcore.guimodel.AbstractDefaultGUIElement;
-import de.ugoe.cs.quest.eventcore.guimodel.IGUIElement;
-import de.ugoe.cs.quest.eventcore.guimodel.IGUIElementSpec;
-import de.ugoe.cs.tasktree.keyboardmaps.VirtualKey;
-
-/**
- * @author Patrick Harms
- */
-public class SortedInteractionEventListTest {
-
-    /**
-   * 
-   */
-    @Test
-    public void testDifferentCombinationKeyCombinations() {
-        List<Event> checkList = new ArrayList<Event>();
-        SortedInteractionEventList eventList = new SortedInteractionEventList();
-
-        IGUIElement guiElement = new AbstractDefaultGUIElement(null, null) {
-
-            /**  */
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public void updateSpecification(IGUIElementSpec furtherSpec) {
-                // ignore
-            }
-
-            @Override
-            public String getPlatform() {
-                return "TEST";
-            }
-
-            @Override
-            public String getStringIdentifier() {
-                return "DUMMY";
-            }
-
-        };
-
-        // check first of all a normal pressing and releasing of A and B
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_B), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_B), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // check what happens if A is pressed and not released before B is pressed
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_C), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_D), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_C), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_D), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_C), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_C), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_D), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_D), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // now SHIFT is pressed and released after all keys are pressed
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_E), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_E), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_F), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_F), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_E), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_E), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_F), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_F), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // now SHIFT is released before the last key is released
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_G), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_G), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_H), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_H), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_G), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_G), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_H), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_H), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // now SHIFT is released before all other keys are released
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_I), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_J), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_K), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_J), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_K), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_I), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_I), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_I), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_J), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_J), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_K), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_K), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // now SHIFT, CTRL and ALT are pressed and released after all keys are pressed
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_L), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_L), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_M), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_M), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_L), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_L), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_M), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_M), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // now SHIFT, CTRL and ALT are released before the last key is released
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_N), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_N), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_O), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_O), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_N), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_N), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_O), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_O), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // now SHIFT, CTRL and ALT are released in another order and before some other keys are
-        // released
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_P), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_Q), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_R), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_Q), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_R), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_P), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.CONTROL), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.ALT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_P), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_P), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_Q), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_Q), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_R), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_R), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.ALT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.CONTROL), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-    }
-
-    /**
-   * 
-   */
-    @Test
-    public void testSeveralSubsequentKeyPressedEvents() {
-        List<Event> checkList = new ArrayList<Event>();
-        SortedInteractionEventList eventList = new SortedInteractionEventList();
-
-        IGUIElement guiElement = new AbstractDefaultGUIElement(null, null) {
-
-            /**  */
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public void updateSpecification(IGUIElementSpec furtherSpec) {
-                // ignore
-            }
-
-            @Override
-            public String getPlatform() {
-                return "TEST";
-            }
-
-            @Override
-            public String getStringIdentifier() {
-                return "DUMMY";
-            }
-
-        };
-
-        // check first of all a normal pressing and releasing of A and B
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-
-        // check first of all a normal pressing and releasing of A and B
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        eventList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        eventList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.SHIFT), guiElement));
-        checkList.add(new Event(new KeyPressed(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.LETTER_A), guiElement));
-        checkList.add(new Event(new KeyReleased(VirtualKey.SHIFT), guiElement));
-
-        assertEquals(checkList.size(), eventList.size());
-
-        for (int i = 0; i < checkList.size(); i++) {
-            assertEquals(checkList.get(i).getType(), eventList.get(i).getType());
-        }
-    }
-
-}
