diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt
index aa558aa..1a059fb 100644
--- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt
+++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigationDispatcher.kt
@@ -17,6 +17,7 @@ import java.awt.Container
 import java.awt.event.ActionEvent
 import java.awt.event.ActionListener
 import java.awt.event.KeyEvent
+import java.beans.PropertyChangeEvent
 import java.util.concurrent.atomic.AtomicBoolean
 import javax.swing.JComponent
 import javax.swing.KeyStroke
@@ -60,20 +61,26 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
 	
 	init {
 		registerCustomShortcutSet(KeyStrokeNode.getAllShortcuts(getAllKeyStrokes()), component, DISPOSABLE)
-		
-		val speedSearch = SpeedSearchSupply.getSupply(component, true)
-		speedSearch?.addChangeListener {
-			if (it.propertyName == SpeedSearchSupply.ENTERED_PREFIX_PROPERTY_NAME && !speedSearch.isPopupActive) {
-				isSearching.set(false)
-				currentNode = rootNode
-			}
-		}
+		SpeedSearchSupply.getSupply(component, true)?.addChangeListener(::handleSpeedSearchChange)
 	}
 	
 	protected fun getAllKeyStrokes(): Set<KeyStroke> {
 		return KeyStrokeNode.getAllKeyStrokes(rootNode, setOf(ENTER_KEY))
 	}
 	
+	private fun handleSpeedSearchChange(e: PropertyChangeEvent) {
+		if (e.propertyName == SpeedSearchSupply.ENTERED_PREFIX_PROPERTY_NAME) {
+			val speedSearch = e.source as? SpeedSearchSupply ?: return
+			
+			ApplicationManager.getApplication().invokeLater {
+				if (!speedSearch.isPopupActive) {
+					isSearching.set(false)
+					currentNode = rootNode
+				}
+			}
+		}
+	}
+	
 	final override fun actionPerformed(e: AnActionEvent) {
 		val keyEvent = e.inputEvent as? KeyEvent ?: return