code: func NewEnvironment(ctx context.Context) *Environment {
  	ctx, cancel := context.WithCancel(ctx)
  	e := &Environment{
  		ctx:       ctx,
  		cancel:    cancel,
  		generator: NewIDGenerator(),
  		stopCh:    make(chan struct{}),
  	}
  	return e
  }
docs: // NewEnvironment creates a new Environment.
  //
  // This does *not* install signal handlers for SIGINT/SIGTERM
  // for new environments.  Only the global environment will be
  // canceled on these signals.