public function getParameterSets($file, $paramProviders)
    {
        $parameterSets = $this->launcher->payload(__DIR__ . '/template/parameter_set_extractor.template', [
            'file' => $file,
            'class' => $this->getClassNameFromFile($file),
            'paramProviders' => var_export($paramProviders, true),
        ])->launch();

        // validate parameters
        $parameters = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($parameterSets));
        iterator_apply($parameters, function (\Iterator $iterator) {
            $parameter = $iterator->current();

            if (!is_scalar($parameter) && isset($parameter)) {
                throw new \InvalidArgumentException(sprintf(
                    'Parameter values must be scalar. Got "%s"',
                    is_object($parameter) ? get_class($parameter) : gettype($parameter)
                ));
            }
        }, [$parameters]);

        return $parameterSets;
    }