def sibling_machines
      owner_class.state_machines.inject([]) do |machines, (name, machine)|
        if machine.attribute == attribute && machine != self
          machines << (owner_class.state_machine(name) {})
        end
        machines
      end
    end
def sibling_machines
      owner_class.state_machines.inject([]) do |machines, (name, machine)|
        if machine.attribute == attribute && machine != self
          machines << (owner_class.state_machine(name) {})
        end
        machines
      end
    end
Looks up other machines that have been defined in the owner class and
 are targeting the same attribute as this machine.  When accessing
 sibling machines, they will be automatically copied for the current
 class if they haven't been already.  This ensures that any configuration
 changes made to the sibling machines only affect this class and not any
 base class that may have originally defined the machine.