class AASM::StateMachineStore

def register(klass, overwrite = false, state_machine = nil)

inheritance, see AASM::ClassMethods method inherited
do not overwrite existing state machines, which could have been created by
def register(klass, overwrite = false, state_machine = nil)
  raise "Cannot register #{klass}" unless klass.is_a?(Class)
  case name = template = overwrite
    when FalseClass then stores[klass.to_s] ||= new
    when TrueClass then stores[klass.to_s] = new
    when Class then stores[klass.to_s] = stores[template.to_s].clone
    when Symbol then stores[klass.to_s].register(name, state_machine)
    when String then stores[klass.to_s].register(name, state_machine)
    else raise "Don't know what to do with #{overwrite}"
  end
end