code: func (s *Stubs) Stub(varToStub interface{}, stubVal interface{}) *Stubs {
  	v := reflect.ValueOf(varToStub)
  	stub := reflect.ValueOf(stubVal)
  
  	// Ensure varToStub is a pointer to the variable.
  	if v.Type().Kind() != reflect.Ptr {
  		panic("variable to stub is expected to be a pointer")
  	}
  
  	if _, ok := s.stubs[v]; !ok {
  		// Store the original value if this is the first time varPtr is being stubbed.
  		s.stubs[v] = reflect.ValueOf(v.Elem().Interface())
  	}
  
  	// *varToStub = stubVal
  	v.Elem().Set(stub)
  	return s
  }
docs: // Stub replaces the value stored at varToStub with stubVal.
  // varToStub must be a pointer to the variable. stubVal should have a type
  // that is assignable to the variable.