     return @pushImpl(false)
 
   pushImpl : (notifyOnFailure) ->
-
     # do not allow multiple pushes, before result is there (breaks versioning)
     # still, return the deferred of the pending push, so that it will be informed about success
     if @pushDeferred?

    })
    # In order to assure that certain actions are atomic,
    # it is sometimes necessary not to push.
    if push and @isEditable
      @push()

  #### TREES

    return @committedCurrentState and @committedDiffs.length == 0

  push : ->
    if @isEditable
      @committedCurrentState = false
      @pushDebounced()

  # Pushes the buffered route to the server. Pushing happens at most 
  # every 30 seconds.
