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?
    
    default_return_val = if !@method_block.nil?
                           invoke_method_block(*args, &block)
                         elsif !@args_to_yield.empty? || @eval_context
                           invoke_with_yield(&block)
                         else
                           nil
                         end
    
    if @consecutive
      invoke_consecutive_return_block(*args, &block)
    elsif @return_block
      invoke_return_block(*args, &block)
    else
      default_return_val
    end
  ensure
    @actual_received_count += 1
  end
end