diff --git a/binaries/org.eclipse.swt.gtk.linux.x86_64/.settings/.api_filters b/binaries/org.eclipse.swt.gtk.linux.x86_64/.settings/.api_filters
index 0319dc28273..04a75c628a0 100644
--- a/binaries/org.eclipse.swt.gtk.linux.x86_64/.settings/.api_filters
+++ b/binaries/org.eclipse.swt.gtk.linux.x86_64/.settings/.api_filters
@@ -1,453 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <component id="org.eclipse.swt.gtk.linux.x86_64" version="2">
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java" type="org.eclipse.swt.accessibility.AccessibleActionListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleActionListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java" type="org.eclipse.swt.accessibility.AccessibleAttributeListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleAttributeListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java" type="org.eclipse.swt.accessibility.AccessibleControlListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleControlListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleEditableTextListener.java" type="org.eclipse.swt.accessibility.AccessibleEditableTextListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleEditableTextListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java" type="org.eclipse.swt.accessibility.AccessibleHyperlinkListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleHyperlinkListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleListener.java" type="org.eclipse.swt.accessibility.AccessibleListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java" type="org.eclipse.swt.accessibility.AccessibleTableCellListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleTableCellListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java" type="org.eclipse.swt.accessibility.AccessibleTableListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleTableListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextListener.java" type="org.eclipse.swt.accessibility.AccessibleTextListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleTextListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java" type="org.eclipse.swt.accessibility.AccessibleValueListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AccessibleValueListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/AuthenticationListener.java" type="org.eclipse.swt.browser.AuthenticationListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="AuthenticationListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/CloseWindowListener.java" type="org.eclipse.swt.browser.CloseWindowListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="CloseWindowListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/LocationListener.java" type="org.eclipse.swt.browser.LocationListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="LocationListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/OpenWindowListener.java" type="org.eclipse.swt.browser.OpenWindowListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="OpenWindowListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/ProgressListener.java" type="org.eclipse.swt.browser.ProgressListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ProgressListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/StatusTextListener.java" type="org.eclipse.swt.browser.StatusTextListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="StatusTextListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/TitleListener.java" type="org.eclipse.swt.browser.TitleListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="TitleListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityWindowListener.java" type="org.eclipse.swt.browser.VisibilityWindowListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="VisibilityWindowListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java" type="org.eclipse.swt.custom.BidiSegmentListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="BidiSegmentListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2Listener.java" type="org.eclipse.swt.custom.CTabFolder2Listener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="CTabFolder2Listener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java" type="org.eclipse.swt.custom.CTabFolderListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="CTabFolderListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CaretListener.java" type="org.eclipse.swt.custom.CaretListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="CaretListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java" type="org.eclipse.swt.custom.ExtendedModifyListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ExtendedModifyListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java" type="org.eclipse.swt.custom.LineBackgroundListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="LineBackgroundListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java" type="org.eclipse.swt.custom.LineStyleListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="LineStyleListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/MovementListener.java" type="org.eclipse.swt.custom.MovementListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MovementListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PaintObjectListener.java" type="org.eclipse.swt.custom.PaintObjectListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="PaintObjectListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java" type="org.eclipse.swt.custom.TextChangeListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="TextChangeListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java" type="org.eclipse.swt.custom.VerifyKeyListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="VerifyKeyListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java" type="org.eclipse.swt.dnd.DragSourceListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="DragSourceListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java" type="org.eclipse.swt.dnd.DropTargetListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="DropTargetListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java" type="org.eclipse.swt.events.ArmListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ArmListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java" type="org.eclipse.swt.events.ControlListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ControlListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java" type="org.eclipse.swt.events.DisposeListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="DisposeListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/DragDetectListener.java" type="org.eclipse.swt.events.DragDetectListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="DragDetectListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/ExpandListener.java" type="org.eclipse.swt.events.ExpandListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ExpandListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java" type="org.eclipse.swt.events.FocusListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="FocusListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java" type="org.eclipse.swt.events.GestureListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="GestureListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java" type="org.eclipse.swt.events.HelpListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="HelpListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java" type="org.eclipse.swt.events.KeyListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="KeyListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/MenuDetectListener.java" type="org.eclipse.swt.events.MenuDetectListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MenuDetectListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java" type="org.eclipse.swt.events.MenuListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MenuListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java" type="org.eclipse.swt.events.ModifyListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ModifyListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java" type="org.eclipse.swt.events.MouseListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MouseListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java" type="org.eclipse.swt.events.MouseMoveListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MouseMoveListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java" type="org.eclipse.swt.events.MouseTrackListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MouseTrackListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/MouseWheelListener.java" type="org.eclipse.swt.events.MouseWheelListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="MouseWheelListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java" type="org.eclipse.swt.events.PaintListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="PaintListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java" type="org.eclipse.swt.events.SegmentListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="SegmentListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java" type="org.eclipse.swt.events.SelectionListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="SelectionListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java" type="org.eclipse.swt.events.ShellListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ShellListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java" type="org.eclipse.swt.events.TouchListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="TouchListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java" type="org.eclipse.swt.events.TraverseListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="TraverseListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java" type="org.eclipse.swt.events.TreeListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="TreeListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java" type="org.eclipse.swt.events.VerifyListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="VerifyListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
-    <resource path="Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java" type="org.eclipse.swt.graphics.ImageLoaderListener">
-        <filter id="576720909">
-            <message_arguments>
-                <message_argument value="SWTEventListener"/>
-                <message_argument value="ImageLoaderListener"/>
-            </message_arguments>
-        </filter>
-    </resource>
     <resource path="Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java" type="org.eclipse.swt.widgets.Composite">
         <filter id="576778288">
             <message_arguments>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java
index 5e2e52a00fa..a15f88a7357 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleActionListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -30,7 +30,7 @@
  *
  * @since 3.6
  */
-public interface AccessibleActionListener extends SWTEventListener {
+public interface AccessibleActionListener extends EventListener {
 	/**
 	 * Returns the number of accessible actions available in this object.
 	 * <p>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java
index 936f0223a13..d3a7899c102 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleAttributeListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -31,7 +31,7 @@
  *
  * @since 3.6
  */
-public interface AccessibleAttributeListener extends SWTEventListener {
+public interface AccessibleAttributeListener extends EventListener {
 	/**
 	 * Returns attributes specific to this Accessible object.
 	 *
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java
index e938a35adcb..ae5a1504319 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleControlListener.java	
@@ -13,8 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes that implement this interface provide methods
@@ -43,7 +42,7 @@
  *
  * @since 2.0
  */
-public interface AccessibleControlListener extends SWTEventListener {
+public interface AccessibleControlListener extends EventListener {
 
 	/**
 	 * Sent when an accessibility client requests the identifier
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleEditableTextListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleEditableTextListener.java
index c7a930bc063..723cee24292 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleEditableTextListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleEditableTextListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -31,7 +31,7 @@
  *
  * @since 3.7
  */
-public interface AccessibleEditableTextListener extends SWTEventListener {
+public interface AccessibleEditableTextListener extends EventListener {
 	/**
 	 * Copies the substring beginning at the specified <code>start</code> offset
 	 * and extending to the character at offset <code>end - 1</code> to the clipboard.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java
index de02c6b497b..bb17eb1493b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleHyperlinkListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -30,7 +30,7 @@
  *
  * @since 3.6
  */
-public interface AccessibleHyperlinkListener extends SWTEventListener {
+public interface AccessibleHyperlinkListener extends EventListener {
 	/**
 	 * Returns the anchor for the link at the specified index.
 	 *
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleListener.java
index a18dad8cc2a..0cfca5e4d1f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.accessibility;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes that implement this interface provide methods
  * that deal with the events that are generated when an
@@ -41,7 +40,7 @@
  *
  * @since 2.0
  */
-public interface AccessibleListener extends SWTEventListener {
+public interface AccessibleListener extends EventListener {
 
 	/**
 	 * Sent when an accessibility client requests the name
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java
index 5533da3937f..62042bc1e96 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableCellListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -30,7 +30,7 @@
  *
  * @since 3.6
  */
-public interface AccessibleTableCellListener extends SWTEventListener {
+public interface AccessibleTableCellListener extends EventListener {
 	/**
 	 * Returns the number of columns occupied by this cell accessible.
 	 * <p>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java
index ec901d305a2..bb5c96bc9b4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTableListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -35,7 +35,7 @@
  *
  * @since 3.6
  */
-public interface AccessibleTableListener extends SWTEventListener {
+public interface AccessibleTableListener extends EventListener {
 	/**
 	 * Deselects one column, leaving other selected columns selected (if any).
 	 *
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextListener.java
index e0291256a7e..780bc66ab00 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleTextListener.java	
@@ -13,8 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes that implement this interface provide methods
@@ -43,7 +42,7 @@
  *
  * @since 3.0
  */
-public interface AccessibleTextListener extends SWTEventListener {
+public interface AccessibleTextListener extends EventListener {
 
 	/**
 	 * Sent when an accessibility client requests the current character offset
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java
index e012164c34c..95943fc6557 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/common/org/eclipse/swt/accessibility/AccessibleValueListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.accessibility;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -30,7 +30,7 @@
  *
  * @since 3.6
  */
-public interface AccessibleValueListener extends SWTEventListener {
+public interface AccessibleValueListener extends EventListener {
 	/**
 	 * Returns the value of this object as a number.
 	 *
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/AuthenticationListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/AuthenticationListener.java
index 1e855def681..8d62e4e24d2 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/AuthenticationListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/AuthenticationListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -26,7 +26,7 @@
  * @since 3.5
  */
 @FunctionalInterface
-public interface AuthenticationListener extends SWTEventListener {
+public interface AuthenticationListener extends EventListener {
 
 /**
  * This method is called when a page is navigated to that requires
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/CloseWindowListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/CloseWindowListener.java
index a35b08c0c4e..9ce52d6456a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/CloseWindowListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/CloseWindowListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -29,7 +29,7 @@
  * @since 3.0
  */
 @FunctionalInterface
-public interface CloseWindowListener extends SWTEventListener {
+public interface CloseWindowListener extends EventListener {
 
 /**
  * This method is called when the window hosting a {@link Browser} should be closed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/LocationListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/LocationListener.java
index 5a37109e0b9..33d5aaee3bf 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/LocationListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/LocationListener.java	
@@ -13,10 +13,9 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * This listener interface may be implemented in order to receive
  * a {@link LocationEvent} notification when a {@link Browser}
@@ -28,7 +27,7 @@
  *
  * @since 3.0
  */
-public interface LocationListener extends SWTEventListener {
+public interface LocationListener extends EventListener {
 
 /**
  * This method is called when the current location is about to be changed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/OpenWindowListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/OpenWindowListener.java
index 8dc165fa0ac..7431911d762 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/OpenWindowListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/OpenWindowListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -28,7 +28,7 @@
  * @since 3.0
  */
 @FunctionalInterface
-public interface OpenWindowListener extends SWTEventListener {
+public interface OpenWindowListener extends EventListener {
 
 /**
  * This method is called when a new window needs to be created.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/ProgressListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/ProgressListener.java
index c24333f051f..9dc9f9ac3c6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/ProgressListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/ProgressListener.java	
@@ -13,10 +13,9 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * This listener interface may be implemented in order to receive
  * a {@link ProgressEvent} notification when a {@link Browser}
@@ -29,7 +28,7 @@
  *
  * @since 3.0
  */
-public interface ProgressListener extends SWTEventListener {
+public interface ProgressListener extends EventListener {
 
 /**
  * This method is called when a progress is made during the loading of the
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/StatusTextListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/StatusTextListener.java
index 93786c48ac6..a05bb0b8c73 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/StatusTextListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/StatusTextListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -26,7 +26,7 @@
  * @since 3.0
  */
 @FunctionalInterface
-public interface StatusTextListener extends SWTEventListener {
+public interface StatusTextListener extends EventListener {
 
 /**
  * This method is called when the status text is changed. The
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/TitleListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/TitleListener.java
index 3fa84cf2b1b..72e5b92ffda 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/TitleListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/TitleListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -26,7 +26,7 @@
  * @since 3.0
  */
 @FunctionalInterface
-public interface TitleListener extends SWTEventListener {
+public interface TitleListener extends EventListener {
 
 /**
  * This method is called when the title of the current document
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityWindowListener.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityWindowListener.java
index cbb88c78b33..3d61aa763ef 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityWindowListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/common/org/eclipse/swt/browser/VisibilityWindowListener.java	
@@ -13,10 +13,9 @@
  *******************************************************************************/
 package org.eclipse.swt.browser;
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * This listener interface may be implemented in order to receive
  * a {@link WindowEvent} notification when a window hosting a
@@ -29,7 +28,7 @@
  *
  * @since 3.0
  */
-public interface VisibilityWindowListener extends SWTEventListener {
+public interface VisibilityWindowListener extends EventListener {
 
 /**
  * This method is called when the window hosting a <code>Browser</code>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java
index ed569214ac9..3219f28bff3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -21,7 +21,7 @@
  * @see BidiSegmentEvent
  */
 @FunctionalInterface
-public interface BidiSegmentListener extends SWTEventListener {
+public interface BidiSegmentListener extends EventListener {
 
 /**
  * This method is called when a line needs to be reordered for
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2Listener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2Listener.java
index 25e00abeec3..e71f88fdadb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2Listener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder2Listener.java	
@@ -13,10 +13,9 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated by the CTabFolder
@@ -35,7 +34,7 @@
  *
  * @since 3.0
  */
-public interface CTabFolder2Listener extends SWTEventListener {
+public interface CTabFolder2Listener extends EventListener {
 
 /**
  * Sent when the user clicks on the close button of an item in the CTabFolder.
@@ -117,7 +116,7 @@ public interface CTabFolder2Listener extends SWTEventListener {
 
 /**
  * Sent when the tab items count changes
- * 
+ *
  * @param event from observed tab folder
  * @since 3.124
  */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java
index ce2e1a2fd8d..22a84794bb0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -29,7 +29,7 @@
  * @see CTabFolderEvent
  */
 @FunctionalInterface
-public interface CTabFolderListener extends SWTEventListener {
+public interface CTabFolderListener extends EventListener {
 
 /**
  * Sent when the user clicks on the close button of an item in the CTabFolder.  The item being closed is specified
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CaretListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CaretListener.java
index a26605f514d..4633a7dc127 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CaretListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CaretListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -24,7 +24,7 @@
  * @since 3.5
  */
 @FunctionalInterface
-public interface CaretListener extends SWTEventListener {
+public interface CaretListener extends EventListener {
 
 /**
  * This method is called after the caret offset is changed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java
index 3652482bc6d..995665243b6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/ExtendedModifyListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -24,7 +24,7 @@
  * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
  */
 @FunctionalInterface
-public interface ExtendedModifyListener extends SWTEventListener {
+public interface ExtendedModifyListener extends EventListener {
 
 /**
  * This method is called after a text change occurs.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java
index 41f8bb241b0..f661636dd3f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineBackgroundListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -24,7 +24,7 @@
  * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
  */
 @FunctionalInterface
-public interface LineBackgroundListener extends SWTEventListener {
+public interface LineBackgroundListener extends EventListener {
 
 /**
  * This method is called when a line is about to be drawn in order to get its
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java
index 8e2797986ee..9053718a62a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/LineStyleListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -24,7 +24,7 @@
  * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
  */
 @FunctionalInterface
-public interface LineStyleListener extends SWTEventListener {
+public interface LineStyleListener extends EventListener {
 
 /**
  * This method is called when a line is about to be drawn in order to get the
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/MovementListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/MovementListener.java
index 6fcb0f73cd5..a4ec7db5003 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/MovementListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/MovementListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * This listener is invoked when a new offset is required based on the current
@@ -27,7 +27,7 @@
  *
  * @since 3.3
  */
-public interface MovementListener extends SWTEventListener {
+public interface MovementListener extends EventListener {
 /**
  * This method is called when a new offset is required based on the current
  * offset and a movement type.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PaintObjectListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PaintObjectListener.java
index f4384ad7026..4a2405da08e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PaintObjectListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/PaintObjectListener.java	
@@ -13,15 +13,15 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
+import java.util.*;
 
-import org.eclipse.swt.internal.*;
 /**
  * This listener is invoked when an object needs to be drawn.
  *
  * @since 3.2
  */
 @FunctionalInterface
-public interface PaintObjectListener extends SWTEventListener {
+public interface PaintObjectListener extends EventListener {
 /**
  * This method is called when an object needs to be drawn.
  *
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java
index 2e42c53029a..732a51d5547 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextListener.java	
@@ -13,13 +13,14 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
+import java.util.*;
+
 import org.eclipse.swt.events.*;
-import org.eclipse.swt.internal.*;
 import org.eclipse.swt.widgets.*;
 
 @SuppressWarnings("removal")
 class StyledTextListener extends TypedListener {
-StyledTextListener(SWTEventListener listener) {
+StyledTextListener(EventListener listener) {
 	super(listener);
 }
 /**
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java
index 0585f6ee587..a03869ab370 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/TextChangeListener.java	
@@ -13,8 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
-
-import org.eclipse.swt.internal.SWTEventListener;
+import java.util.*;
 
 /**
  * The StyledText widget implements this listener to receive
@@ -29,7 +28,7 @@
  * below. If the entire text is replaced the textSet method
  * should be called instead.
  */
-public interface TextChangeListener extends SWTEventListener {
+public interface TextChangeListener extends EventListener {
 
 /**
  * This method is called when the content is about to be changed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java
index c2852315a2c..87394bc43c5 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/VerifyKeyListener.java	
@@ -13,8 +13,9 @@
  *******************************************************************************/
 package org.eclipse.swt.custom;
 
+import java.util.*;
+
 import org.eclipse.swt.events.*;
-import org.eclipse.swt.internal.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -25,7 +26,7 @@
  * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
  */
 @FunctionalInterface
-public interface VerifyKeyListener extends SWTEventListener {
+public interface VerifyKeyListener extends EventListener {
 /**
  * The following event fields are used:<ul>
  * <li>event.character is the character that was typed (input)</li>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDListener.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDListener.java
index b30e59264bd..3fe22531997 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DNDListener.java	
@@ -13,7 +13,8 @@
  *******************************************************************************/
 package org.eclipse.swt.dnd;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
+
 import org.eclipse.swt.widgets.*;
 
 @SuppressWarnings("removal")
@@ -21,9 +22,8 @@ class DNDListener extends TypedListener {
 	Widget dndWidget;
 /**
  * DNDListener constructor comment.
- * @param listener org.eclipse.swt.internal.SWTEventListener
  */
-DNDListener(SWTEventListener listener) {
+DNDListener(EventListener listener) {
 	super(listener);
 }
 @Override
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java
index c98a457f8c7..afbf54dc6c4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DragSourceListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.dnd;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * The <code>DragSourceListener</code> class provides event notification to the application for DragSource events.
@@ -26,7 +26,7 @@
  * <code>DragSource</code> is required to take the appropriate cleanup action.  In the case of a successful
  * <b>move</b> operation, the application must remove the data that was transferred.</p>
  */
-public interface DragSourceListener extends SWTEventListener {
+public interface DragSourceListener extends EventListener {
 
 /**
  * The user has begun the actions required to drag the widget. This event gives the application
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java
index f41dc996aa7..730de95bd6b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/common/org/eclipse/swt/dnd/DropTargetListener.java	
@@ -13,7 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.dnd;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * The <code>DropTargetListener</code> class provides event notification to the application
@@ -35,7 +35,7 @@
  *
  * @see DropTargetEvent
  */
-public interface DropTargetListener extends SWTEventListener {
+public interface DropTargetListener extends EventListener {
 
 /**
  * The cursor has entered the drop target boundaries.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java
index 18c25e65030..957a39d9619 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java	
@@ -1524,11 +1524,44 @@ public void removeListener (int eventType, Listener listener) {
  *
  * @noreference This method is not intended to be referenced by clients.
  * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @deprecated Use {@link #removeListener(int, EventListener)}.
  */
+@Deprecated(forRemoval=true, since="2025-03")
 protected void removeListener (int eventType, SWTEventListener listener) {
 	removeTypedListener(eventType, listener);
 }
 
+/**
+ * Removes the listener from the collection of listeners who will
+ * be notified when an event of the given type occurs.
+ * <p>
+ * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
+ * public API. It is marked public only so that it can be shared
+ * within the packages provided by SWT. It should never be
+ * referenced from application code.
+ * </p>
+ *
+ * @param eventType the type of event to listen for
+ * @param listener the listener which should no longer be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see Listener
+ * @see #addListener
+ *
+ * @noreference This method is not intended to be referenced by clients.
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ */
+protected void removeListener (int eventType, EventListener listener) {
+	removeTypedListener(eventType, listener);
+}
+
 /**
  * Removes the listener from the collection of listeners who will
  * be notified when an event of the given type occurs.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java
index bd4a4d3a42d..801578a4134 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ArmListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -32,7 +32,7 @@
  * @see ArmEvent
  */
 @FunctionalInterface
-public interface ArmListener extends SWTEventListener {
+public interface ArmListener extends EventListener {
 
 /**
  * Sent when a widget is armed, or 'about to be selected'.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java
index d5fd210ec1c..16ebb8c086e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ControlListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated by moving
@@ -34,7 +33,7 @@
  * @see ControlAdapter
  * @see ControlEvent
  */
-public interface ControlListener extends SWTEventListener {
+public interface ControlListener extends EventListener {
 
 /**
  * Sent when the location (x, y) of a control changes relative
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java
index 8cb02a8957a..a7b8f76e37d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DisposeListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -33,7 +33,7 @@
  * @see DisposeEvent
  */
 @FunctionalInterface
-public interface DisposeListener extends SWTEventListener {
+public interface DisposeListener extends EventListener {
 
 /**
  * Sent when the widget is disposed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DragDetectListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DragDetectListener.java
index 1f5f54b4b67..5c712f8ed3d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DragDetectListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/DragDetectListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods that deal with the
@@ -33,7 +33,7 @@
  * @since 3.3
  */
 @FunctionalInterface
-public interface DragDetectListener extends SWTEventListener {
+public interface DragDetectListener extends EventListener {
 
 /**
  * Sent when a drag gesture is detected.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ExpandListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ExpandListener.java
index 3829a9f64ac..7be2afd2cb6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ExpandListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ExpandListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the expanding and collapsing of <code>ExpandItem</code>s.
@@ -36,7 +35,7 @@
  *
  * @since 3.2
  */
-public interface ExpandListener extends SWTEventListener {
+public interface ExpandListener extends EventListener {
 
 /**
  * Sent when an item is collapsed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java
index 85802482bf1..c7a47490ab2 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/FocusListener.java	
@@ -15,10 +15,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated as controls
@@ -35,7 +34,7 @@
  * @see FocusAdapter
  * @see FocusEvent
  */
-public interface FocusListener extends SWTEventListener {
+public interface FocusListener extends EventListener {
 
 /**
  * Sent when a control gets focus.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java
index 7193e78ef44..d9d338f457c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/GestureListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -39,7 +39,7 @@
  * @since 3.7
  */
 @FunctionalInterface
-public interface GestureListener extends SWTEventListener {
+public interface GestureListener extends EventListener {
 
 /**
  * Sent when a recognized gesture has occurred.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java
index 74eb24a1361..10647bd37b4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/HelpListener.java	
@@ -14,8 +14,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -33,7 +32,7 @@
  * @see HelpEvent
  */
 @FunctionalInterface
-public interface HelpListener extends SWTEventListener {
+public interface HelpListener extends EventListener {
 
 /**
  * Sent when help is requested for a control, typically
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java
index 8d55ef2809a..4622df90998 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/KeyListener.java	
@@ -15,10 +15,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated as keys
@@ -35,7 +34,7 @@
  * @see KeyAdapter
  * @see KeyEvent
  */
-public interface KeyListener extends SWTEventListener {
+public interface KeyListener extends EventListener {
 
 /**
  * Sent when a key is pressed on the system keyboard.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuDetectListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuDetectListener.java
index 41d0f3f74e1..8818e370e0b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuDetectListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuDetectListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -36,7 +36,7 @@
  * @since 3.3
  */
 @FunctionalInterface
-public interface MenuDetectListener extends SWTEventListener {
+public interface MenuDetectListener extends EventListener {
 
 /**
  * Sent when the platform-dependent trigger for showing a menu item is detected.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java
index a16bdc73130..d2297b8b744 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MenuListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the hiding and showing of menus.
@@ -33,7 +32,7 @@
  * @see MenuAdapter
  * @see MenuEvent
  */
-public interface MenuListener extends SWTEventListener {
+public interface MenuListener extends EventListener {
 
 /**
  * Sent when a menu is hidden.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java
index 108e3501a19..b2339912a6f 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ModifyListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -32,7 +32,7 @@
  * @see ModifyEvent
  */
 @FunctionalInterface
-public interface ModifyListener extends SWTEventListener {
+public interface ModifyListener extends EventListener {
 
 /**
  * Sent when the text is modified.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java
index ec7c13d4534..1fb488c882b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseListener.java	
@@ -15,10 +15,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated as mouse buttons
@@ -35,7 +34,7 @@
  * @see MouseAdapter
  * @see MouseEvent
  */
-public interface MouseListener extends SWTEventListener {
+public interface MouseListener extends EventListener {
 
 /**
  * Sent when a mouse button is pressed twice within the
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java
index 5912e65f074..775ca52e446 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseMoveListener.java	
@@ -15,7 +15,7 @@
 package org.eclipse.swt.events;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -32,7 +32,7 @@
  * @see MouseEvent
  */
 @FunctionalInterface
-public interface MouseMoveListener extends SWTEventListener {
+public interface MouseMoveListener extends EventListener {
 
 /**
  * Sent when the mouse moves.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java
index 135d78be752..60cc0e07a89 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseTrackListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated as the mouse
@@ -35,7 +34,7 @@
  * @see MouseTrackAdapter
  * @see MouseEvent
  */
-public interface MouseTrackListener extends SWTEventListener {
+public interface MouseTrackListener extends EventListener {
 
 /**
  * Sent when the mouse pointer passes into the area of
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseWheelListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseWheelListener.java
index 8766e14bad1..7fe40dc4016 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseWheelListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/MouseWheelListener.java	
@@ -13,8 +13,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -34,7 +33,7 @@
  * @since 3.3
  */
 @FunctionalInterface
-public interface MouseWheelListener extends SWTEventListener {
+public interface MouseWheelListener extends EventListener {
 
 /**
  * Sent when the mouse wheel is scrolled.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java
index 070c3e919bd..a64fe9d796d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/PaintListener.java	
@@ -14,8 +14,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -33,7 +32,7 @@
  * @see PaintEvent
  */
 @FunctionalInterface
-public interface PaintListener extends SWTEventListener {
+public interface PaintListener extends EventListener {
 
 /**
  * Sent when a paint event occurs for the control.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java
index 37016ee9455..75d72a06c64 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java	
@@ -14,7 +14,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * This listener interface may be implemented in order to receive
@@ -24,7 +24,7 @@
  * @since 3.8
  */
 @FunctionalInterface
-public interface SegmentListener extends SWTEventListener {
+public interface SegmentListener extends EventListener {
 
 /**
  * This method is called when text content is being modified.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java
index 44e0af96323..5acd4c66e71 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java	
@@ -15,10 +15,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the events that are generated when selection
@@ -35,7 +34,7 @@
  * @see SelectionAdapter
  * @see SelectionEvent
  */
-public interface SelectionListener extends SWTEventListener {
+public interface SelectionListener extends EventListener {
 
 /**
  * Sent when selection occurs in the control.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java
index fc30f65eeb5..2cbc57f5a53 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/ShellListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with changes in state of <code>Shell</code>s.
@@ -33,7 +32,7 @@
  * @see ShellAdapter
  * @see ShellEvent
  */
-public interface ShellListener extends SWTEventListener {
+public interface ShellListener extends EventListener {
 
 /**
  * Sent when a shell becomes the active window.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java
index 0c9913a2d02..527f22806ba 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TouchListener.java	
@@ -14,8 +14,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -39,7 +38,7 @@
  * @since 3.7
  */
 @FunctionalInterface
-public interface TouchListener extends SWTEventListener {
+public interface TouchListener extends EventListener {
 
 /**
  * Sent when a touch sequence begins, changes state, or ends.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java
index 14a51d7883c..acee82f8848 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TraverseListener.java	
@@ -14,8 +14,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -33,7 +32,7 @@
  * @see TraverseEvent
  */
 @FunctionalInterface
-public interface TraverseListener extends SWTEventListener {
+public interface TraverseListener extends EventListener {
 
 /**
  * Sent when a traverse event occurs in a control.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java
index ceacdfe690e..6f7930fc561 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/TreeListener.java	
@@ -14,10 +14,9 @@
 package org.eclipse.swt.events;
 
 
+import java.util.*;
 import java.util.function.*;
 
-import org.eclipse.swt.internal.*;
-
 /**
  * Classes which implement this interface provide methods
  * that deal with the expanding and collapsing of tree
@@ -34,7 +33,7 @@
  * @see TreeAdapter
  * @see TreeEvent
  */
-public interface TreeListener extends SWTEventListener {
+public interface TreeListener extends EventListener {
 
 /**
  * Sent when a tree branch is collapsed.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java
index 06360f5af63..e6e02722a79 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/VerifyListener.java	
@@ -14,8 +14,7 @@
  *******************************************************************************/
 package org.eclipse.swt.events;
 
-
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide a method
@@ -33,7 +32,7 @@
  * @see VerifyEvent
  */
 @FunctionalInterface
-public interface VerifyListener extends SWTEventListener {
+public interface VerifyListener extends EventListener {
 
 /**
  * Sent when the text is about to be modified.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java
index 6a38575d05d..6a7b5c04661 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageLoaderListener.java	
@@ -14,7 +14,7 @@
 package org.eclipse.swt.graphics;
 
 
-import org.eclipse.swt.internal.*;
+import java.util.*;
 
 /**
  * Classes which implement this interface provide methods
@@ -32,7 +32,7 @@
  * @see ImageLoaderEvent
  */
 @FunctionalInterface
-public interface ImageLoaderListener extends SWTEventListener {
+public interface ImageLoaderListener extends EventListener {
 
 /**
  * Sent when image data is either partially or completely loaded.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/SWTEventListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/SWTEventListener.java
index 2622ded4374..8ccafbbb86a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/SWTEventListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/internal/SWTEventListener.java	
@@ -14,7 +14,7 @@
 package org.eclipse.swt.internal;
 
 
-import java.util.EventListener;
+import java.util.*;
 
 /**
  * This interface is the cross-platform version of the
@@ -29,5 +29,6 @@
  * </p>
  * @noreference This interface is not intended to be referenced by clients.
  */
+@Deprecated(forRemoval=true, since="2025-03")
 public interface SWTEventListener extends EventListener {
 }
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java
index ea598e4395c..e4267dfdaad 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java	
@@ -63,11 +63,26 @@ public class TypedListener implements Listener {
  *
  * @noreference This method is not intended to be referenced by clients.
  */
+@Deprecated(forRemoval=true, since="2025-03")
 public TypedListener (SWTEventListener listener) {
 	eventListener = listener;
 }
 
-TypedListener (EventListener listener) {
+/**
+ * Constructs a new instance of this class for the given event listener.
+ * <p>
+ * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
+ * public API. It is marked public only so that it can be shared
+ * within the packages provided by SWT. It should never be
+ * referenced from application code.
+ * </p>
+ *
+ * @param listener the event listener to store in the receiver
+ *
+ * @noreference This method is not intended to be referenced by clients.
+ */
+
+public TypedListener (EventListener listener) {
 	eventListener = listener;
 }
 
@@ -84,12 +99,12 @@ public TypedListener (SWTEventListener listener) {
  *
  * @noreference This method is not intended to be referenced by clients.
  */
-public SWTEventListener getEventListener () {
+public EventListener getEventListener () {
 	// At the moment all typed listeners implement SWTEventListener but that interface is intended to be removed in the future and then they will only implement EventListener.
 	// This method should not be called for typed listeners listeners that only implement EventListener.
 	// This is only relevant for custom typed listeners that implement EventListener directly before SWTEventListener is eventually removed.
 	// But then the new Widget.getTypedListener() method can be used.
-	return (SWTEventListener) eventListener;
+	return eventListener;
 }
 
 /**
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
index d39864ea3e6..b4fe086826c 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java	
@@ -1494,11 +1494,44 @@ public void removeListener (int eventType, Listener listener) {
  *
  * @noreference This method is not intended to be referenced by clients.
  * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @deprecated Use {@link #removeListener(int, EventListener)}.
  */
+@Deprecated(forRemoval=true, since="2025-03")
 protected void removeListener (int eventType, SWTEventListener listener) {
 	removeTypedListener(eventType, listener);
 }
 
+/**
+ * Removes the listener from the collection of listeners who will
+ * be notified when an event of the given type occurs.
+ * <p>
+ * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
+ * public API. It is marked public only so that it can be shared
+ * within the packages provided by SWT. It should never be
+ * referenced from application code.
+ * </p>
+ *
+ * @param eventType the type of event to listen for
+ * @param listener the listener which should no longer be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see Listener
+ * @see #addListener
+ *
+ * @noreference This method is not intended to be referenced by clients.
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ */
+protected void removeListener (int eventType, EventListener listener) {
+	removeTypedListener(eventType, listener);
+}
+
 /**
  * Removes the listener from the collection of listeners who will
  * be notified when an event of the given type occurs.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java
index 22b279b32a2..4fcc69ed1e0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java	
@@ -1040,11 +1040,44 @@ public void removeListener (int eventType, Listener listener) {
  *
  * @noreference This method is not intended to be referenced by clients.
  * @nooverride This method is not intended to be re-implemented or extended by clients.
+ * @deprecated Use {@link #removeListener(int, EventListener)}.
  */
+@Deprecated(forRemoval=true, since="2025-03")
 protected void removeListener (int eventType, SWTEventListener listener) {
 	removeTypedListener(eventType, listener);
 }
 
+/**
+ * Removes the listener from the collection of listeners who will
+ * be notified when an event of the given type occurs.
+ * <p>
+ * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
+ * public API. It is marked public only so that it can be shared
+ * within the packages provided by SWT. It should never be
+ * referenced from application code.
+ * </p>
+ *
+ * @param eventType the type of event to listen for
+ * @param listener the listener which should no longer be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see Listener
+ * @see #addListener
+ *
+ * @noreference This method is not intended to be referenced by clients.
+ * @nooverride This method is not intended to be re-implemented or extended by clients.
+ */
+protected void removeListener (int eventType, EventListener listener) {
+	removeTypedListener(eventType, listener);
+}
+
 /**
  * Removes the listener from the collection of listeners who will
  * be notified when an event of the given type occurs.