code: func (m *Mock) AssertExpectations(t TestingT) bool {
  	if h, ok := t.(tHelper); ok {
  		h.Helper()
  	}
  	m.mutex.Lock()
  	defer m.mutex.Unlock()
  	var somethingMissing bool
  	var failedExpectations int
  
  	// iterate through each expectation
  	expectedCalls := m.expectedCalls()
  	for _, expectedCall := range expectedCalls {
  		if !expectedCall.optional && !m.methodWasCalled(expectedCall.Method, expectedCall.Arguments) && expectedCall.totalCalls == 0 {
  			somethingMissing = true
  			failedExpectations++
  			t.Logf("FAIL:\t%s(%s)\n\t\tat: %s", expectedCall.Method, expectedCall.Arguments.String(), expectedCall.callerInfo)
  		} else {
  			if expectedCall.Repeatability > 0 {
  				somethingMissing = true
  				failedExpectations++
  				t.Logf("FAIL:\t%s(%s)\n\t\tat: %s", expectedCall.Method, expectedCall.Arguments.String(), expectedCall.callerInfo)
  			} else {
  				t.Logf("PASS:\t%s(%s)", expectedCall.Method, expectedCall.Arguments.String())
  			}
  		}
  	}
  
  	if somethingMissing {
  		t.Errorf("FAIL: %d out of %d expectation(s) were met.\n\tThe code you are testing needs to make %d more call(s).\n\tat: %s", len(expectedCalls)-failedExpectations, len(expectedCalls), failedExpectations, assert.CallerInfo())
  	}
  
  	return !somethingMissing
  }
docs: // AssertExpectations asserts that everything specified with On and Return was
  // in fact called as expected.  Calls may have occurred in any order.