def perform(*args)
      run_action = [true, false].include?(args.last) ? args.pop : true
      self.args = args
      
      # Run the transition
      !!TransitionCollection.new([self], :actions => run_action).perform
    end
def perform(*args)
      run_action = [true, false].include?(args.last) ? args.pop : true
      self.args = args
      
      # Run the transition
      !!TransitionCollection.new([self], :actions => run_action).perform
    end
Runs the actual transition and any before/after callbacks associated
 with the transition.  The action associated with the transition/machine
 can be skipped by passing in +false+.

 == Examples

   class Vehicle
     state_machine :action => :save do
       ...
     end
   end

   vehicle = Vehicle.new
   transition = StateMachine::Transition.new(vehicle, machine, :ignite, :parked, :idling)
   transition.perform                  # => Runs the +save+ action after setting the state attribute
   transition.perform(false)           # => Only sets the state attribute
   transition.perform(Time.now)        # => Passes in additional arguments and runs the +save+ action
   transition.perform(Time.now, false) # => Passes in additional arguments and only sets the state attribute