def initial(value, **options)
      state = (value && !value.is_a?(Hash)) ? value : raise_missing_state
      name, @defer_initial, @silent_initial = *parse_initial(options)
      @initial_event = name
      event(name, FiniteMachine::DEFAULT_STATE => state, silent: @silent_initial)
    end
def initial(value, **options)
      state = (value && !value.is_a?(Hash)) ? value : raise_missing_state
      name, @defer_initial, @silent_initial = *parse_initial(options)
      @initial_event = name
      event(name, FiniteMachine::DEFAULT_STATE => state, silent: @silent_initial)
    end
Initialize top level DSL

 @api public
 Define initial state

 @param [Symbol] value
   The initial state name.
 @param [Hash[Symbol]] options
 @option options [Symbol] :event
   The event name.
 @option options [Symbol] :defer
   Set to true to defer initial state transition.
   Default false.
 @option options [Symbol] :silent
   Set to true to disable callbacks.
   Default true.

 @example
   initial :green

 @example Defer initial event
   initial state: green, defer: true

 @example Trigger callbacks
   initial :green, silent: false

 @example Redefine event name
   initial :green, event: :start

 @param [String, Hash] value

 @return [StateMachine]

 @api public