// Code generated by cue get go. DO NOT EDIT.

//cue:generate cue get go k8s.io/apimachinery/pkg/watch

// Package watch contains a generic watchable interface, and a fake for
// testing code that uses the watch interface.
package watch
