def run_callbacks(options = {}, &block)
      options = {:before => true, :after => true}.merge(options)
      @success = false
      
      halted = pausable { before(options[:after], &block) } if options[:before]
      
      # After callbacks are only run if:
      # * An around callback didn't halt after yielding
      # * They're enabled or the run didn't succeed
      after if !(@before_run && halted) && (options[:after] || !@success)
      
      @before_run
    end
def run_callbacks(options = {}, &block)
      options = {:before => true, :after => true}.merge(options)
      @success = false
      
      halted = pausable { before(options[:after], &block) } if options[:before]
      
      # After callbacks are only run if:
      # * An around callback didn't halt after yielding
      # * They're enabled or the run didn't succeed
      after if !(@before_run && halted) && (options[:after] || !@success)
      
      @before_run
    end
Runs the before / after callbacks for this transition.  If a block is
 provided, then it will be executed between the before and after callbacks.

 Configuration options:
 * +before+ - Whether to run before callbacks.
 * +after+ - Whether to run after callbacks.  If false, then any around
   callbacks will be paused until called again with +after+ enabled.
   Default is true.

 This will return true if all before callbacks gets executed.  After
 callbacks will not have an effect on the result.