def invoke(args, block)
if @expected_received_count == 0
@failed_fast = true
@actual_received_count += 1
@error_generator.raise_expectation_error @sym, @expected_received_count, @actual_received_count, *args
end
@order_group.handle_order_constraint self
begin
Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
if !@method_block.nil?
default_return_val = invoke_method_block(args)
elsif @args_to_yield.size > 0
default_return_val = invoke_with_yield(block)
else
default_return_val = nil
end
if @consecutive
return invoke_consecutive_return_block(args, block)
elsif @return_block
return invoke_return_block(args, block)
else
return default_return_val
end
ensure
@actual_received_count += 1
end
end