   elementDidMutate: (mutationSummary) ->
     inputLog.group("Mutation")
     inputLog.log("mutationSummary =", JSON.stringify(mutationSummary))
+    inputLog.log("inputSummary =", JSON.stringify(@inputSummary))
 
     unless @mutationIsExpected(mutationSummary)
       inputLog.log("mutation doesn't match input, replacing HTML")


  setInputSummary: (summary = {}) ->
    @inputSummary.eventName = @eventName
    @inputSummary[key] = value for key, value of summary
    inputLog.log("#setInputSummary", JSON.stringify(@inputSummary))
    @inputSummary

  resetInputSummary: ->


    compositionstart: (event) ->
      @mutationObserver.stop()
      @composition = start: event.data

    compositionupdate: (event) ->
      @composition.update = event.data

    compositionend: (event) ->
      @mutationObserver.start()
      @composition.end = event.data

      if @composition.end? and @composition.end isnt @composition.start
        @delegate?.inputControllerWillPerformTyping()
        @responder?.insertString(@composition.end)
        @setInputSummary(textAdded: @composition.end, didDelete: @selectionIsExpanded())
        delete @composition

    input: (event) ->
      event.stopPropagation()
