def add_actions
machine.define_instance_method("can_#{qualified_name}?") do |machine, object|
machine.event(name).can_fire?(object)
end
machine.define_instance_method("#{qualified_name}_transition") do |machine, object|
machine.event(name).transition_for(object)
end
machine.define_instance_method(qualified_name) do |machine, object, *args|
machine.event(name).fire(object, *args)
end
machine.define_instance_method("#{qualified_name}!") do |machine, object, *args|
object.send(qualified_name, *args) || raise(StateMachine::InvalidTransition, "Cannot transition #{machine.name} via :#{name} from #{machine.states.match!(object).name.inspect}")
end
end