# File lib/state_machine/machine.rb, line 623
    def define_helper(scope, method, *args, &block)
      helper_module = @helper_modules.fetch(scope)
      
      if block_given?
        if !self.class.ignore_method_conflicts && conflicting_ancestor = owner_class_ancestor_has_method?(scope, method)
          ancestor_name = conflicting_ancestor.name && !conflicting_ancestor.name.empty? ? conflicting_ancestor.name : conflicting_ancestor.to_s
          warn "#{scope == :class ? 'Class' : 'Instance'} method \"#{method}\" is already defined in #{ancestor_name}, use generic helper instead."
        else
          name = self.name
          helper_module.class_eval do
            define_method(method) do |*args|
              block.call((scope == :instance ? self.class : self).state_machine(name), self, *args)
            end
          end
        end
      else
        helper_module.class_eval(method, *args)
      end
    end