protected function instantiateCompiler(string &$className, &$description): CompilerInterface {
        if(is_array($description)) {
            $class = $description[ self::COMPILER_CLASS_KEY ] ?? $className;
            if(!isset($description[ self::COMPILER_ID_KEY ]))
                $description[ self::COMPILER_ID_KEY ] = $className;

            $id = $description[ self::COMPILER_ID_KEY ];
            if($args = $description[ self::COMPILER_ARGUMENTS_KEY ] ?? NULL) {
                return new $class($id, ...array_values($args));
            } else {
                return new $class($id, $description);
            }
        } else {
            // $className is compiler id and $description is class name
            $instance =  new $description($className);
            $description = [
                self::COMPILER_ID_KEY => $className
            ];
            return $instance;
        }
    }