code: func Wait(ctx context.Context, c *Collector, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error {
  	filter := new(WaitFilter).Add(obj, obj.Type, ps)
  
  	return WaitForUpdates(ctx, c, filter, func(updates []types.ObjectUpdate) bool {
  		for _, update := range updates {
  			if f(update.ChangeSet) {
  				return true
  			}
  		}
  
  		return false
  	})
  }
docs: // Wait creates a new WaitFilter and calls the specified function for each ObjectUpdate via WaitForUpdates