class RSpec::Mocks::BaseExpectation

def invoke(args, block)

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 || @eval_context
      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