def executable?(obj, *args)
      [@guard].flatten.all? { |g| perform_guard(obj, g, *args) }
    end
def executable?(obj, *args)
      [@guard].flatten.all? { |g| perform_guard(obj, g, *args) }
    end
@param obj [Any] - the subject
 @param args [Array<Symbol>] - any arguments passed into the transition method
   E.g. something like
     car.drive!(:fast, :now)
   with `car` being the subject and `drive` the transition method would result
   in `args` looking like this:
     [:fast, :now]

 @return [Bool]