     if document.contains(target)
       target.dispatchEvent(commandEvent)
     else
-      @simulateBubblingOnDetachedTarget(target, commandEvent)
+      this.simulateBubblingOnDetachedTarget(target, commandEvent)
 
     {keyBindingAborted} = commandEvent
     keyboardEvent.preventDefault() unless keyBindingAborted

  #
  # Returns a {String} describing the keystroke.
  keystrokeForKeyboardEvent: (event) ->
    keystrokeForKeyboardEvent(event, @dvorakQwertyWorkaroundEnabled)

  # Public: Get the number of milliseconds allowed before pending states caused
  # by partial matches of multi-keystroke bindings are terminated.
  #
  # Returns a {Number}
  getPartialMatchTimeout: ->
    @partialMatchTimeout

  ###
  Section: Private
  ###

  simulateTextInput: (keydownEvent) ->
    if character = characterForKeyboardEvent(keydownEvent, @dvorakQwertyWorkaroundEnabled)
      textInputEvent = document.createEvent("TextEvent")
      textInputEvent.initTextEvent("textInput", true, true, window, character)
      keydownEvent.path[0].dispatchEvent(textInputEvent)

  #
  # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
  onDidPartiallyMatchBindings: (callback) ->
    this.emitter.on 'did-partially-match-binding', callback

  # Public: Invoke the given callback when one or more keystrokes fail to match
  # any bindings.
