# File lib/transitions/event.rb, line 7
    def initialize(machine, name, options = {}, &block)
      @machine = machine
      @name = name
      @transitions = []
      @timestamps = []
      if machine
        machine.klass.send(:define_method, "#{name}!") do |*args|
          machine.fire_event(name, self, true, *args)
        end

        machine.klass.send(:define_method, name.to_s) do |*args|
          machine.fire_event(name, self, false, *args)
        end

        machine.klass.send(:define_method, "can_#{name}?") do |*_args|
          machine.events_for(current_state).include?(name.to_sym)
        end

        machine.klass.send(:define_method, "can_execute_#{name}?") do |*args|
          event = name.to_sym

          send("can_#{name}?", *args) &&
            machine.events[event].can_execute_transition_from_state?(current_state, self, *args)
        end
      end
      update(options, &block)
    end