     inputLog.groupEnd()
 
   mutationIsExpected: (mutationSummary) ->
-    switch
-      when not @inputSummary
-        false
-      when @inputSummary.keyName is "backspace" and @inputSummary.keyModifier is "meta"
-        false
-      when @inputSummary.keyName is "return"
-        true
+    if @inputSummary
+      if @inputSummary.preferDocument?
+        @inputSummary.preferDocument
       else
         unhandledAddition = mutationSummary.textAdded isnt @inputSummary.textAdded
         unhandledDeletion = mutationSummary.textDeleted? and not @inputSummary.didDelete


  events:
    keydown: (event) ->
      endingComposition = @inputSummary.eventName is "compositionend"
      @resetInputSummary() unless endingComposition

      if keyName = @constructor.keyNames[event.keyCode]
        context = @keys


  setInputSummary: (summary = {}) ->
    @inputSummary.eventName = @eventName
    @inputSummary[key] = value for key, value of summary
    @inputSummary

