class AASM::Base

def safely_define_method(klass, method_name, method_definition)

def safely_define_method(klass, method_name, method_definition)
  # Warn if method exists and it did not originate from an enum
  if klass.method_defined?(method_name) &&
     ! ( @state_machine.config.enum &&
         klass.respond_to?(:defined_enums) &&
         klass.defined_enums.values.any?{ |methods|
             methods.keys{| enum | enum + '?' == method_name }
         })
    unless AASM::Configuration.hide_warnings
      @state_machine.config.logger.warn "#{klass.name}: overriding method '#{method_name}'!"
    end
  end
  klass.send(:define_method, method_name, method_definition).tap do |sym|
    apply_ruby2_keyword(klass, sym)
  end
end