code: func main() {
  	// Prepare Redis data sync plugin as an plugin dependency
  	redisDataSync := kvdbsync.NewPlugin(kvdbsync.UseDeps(func(deps *kvdbsync.Deps) {
  		deps.KvPlugin = &etcd.DefaultPlugin
  	}))
  
  	// Init example plugin dependencies
  	ep := &ExamplePlugin{
  		Deps: Deps{
  			Log:     logging.ForPlugin(PluginName),
  			Watcher: redisDataSync,
  			DB:      &redis.DefaultPlugin,
  		},
  		exampleFinished: make(chan struct{}),
  	}
  
  	// Start Agent with example plugin including dependencies
  	a := agent.NewAgent(
  		agent.AllPlugins(ep),
  		agent.QuitOnClose(ep.exampleFinished),
  	)
  	if err := a.Run(); err != nil {
  		log.Fatal(err)
  	}
  }
docs: // Main allows running Example Plugin as a statically linked binary with Agent Core Plugins. Close channel and plugins
  // required for the example are initialized. Agent is instantiated with generic plugin (Status check, and Log)
  // and example plugin which demonstrates use of Redis flavor.