code: func (f *FakeControllerSource) Watch(options api.ListOptions) (watch.Interface, error) {
  	f.lock.RLock()
  	defer f.lock.RUnlock()
  	rc, err := strconv.Atoi(options.ResourceVersion)
  	if err != nil {
  		return nil, err
  	}
  	if rc < len(f.changes) {
  		changes := []watch.Event{}
  		for _, c := range f.changes[rc:] {
  			// Must make a copy to allow clients to modify the
  			// object.  Otherwise, if they make a change and write
  			// it back, they will inadvertently change the our
  			// canonical copy (in addition to racing with other
  			// clients).
  			objCopy, err := api.Scheme.DeepCopy(c.Object)
  			if err != nil {
  				return nil, err
  			}
  			changes = append(changes, watch.Event{Type: c.Type, Object: objCopy.(runtime.Object)})
  		}
  		return f.broadcaster.WatchWithPrefix(changes), nil
  	} else if rc > len(f.changes) {
  		return nil, errors.New("resource version in the future not supported by this fake")
  	}
  	return f.broadcaster.Watch(), nil
  }
docs: // Watch returns a watch, which will be pre-populated with all changes
  // after resourceVersion.