Some question about driver implementation

I have developed some task drivers in my work, so I learned the go-plugin sysmanticly. But the implementation of Driver is complex for me when I go deep into the source code.

One of my questions is what’s the usage purpose of UniversalExecutor, is it the internal Executor impletation that exec and raw_exec driver used? And does the LibcontainerExecutor only used for docker driver?