public Parameters GenerateParameters(CodeFileCSharp input, Settings pluginSettings, IMetadataReader metadataReader, ILogger logger, IFileGroup <CodeFileCSharp, GroupItemDetails> fileGroup = null)
        {
            if (string.IsNullOrEmpty(pluginSettings.AstDescriptionJsonFilePath))
            {
                throw new InvalidOperationException($"Setting {Settings.AstDescriptionJsonFilePathKey} should be provided.");
            }

            var path = pluginSettings.AstDescriptionJsonFilePath;

            if (!Path.IsPathRooted(pluginSettings.AstDescriptionJsonFilePath))
            {
                path = Path.Combine(pluginSettings.BasePath, pluginSettings.AstDescriptionJsonFilePath);
            }

            var payload = File.ReadAllText(path);

            var description = JsonConvert.DeserializeObject <Root>(payload);

            var fixer = new InstanceReferenceFixer();

            description = (Root)fixer.FixInstanceReferences(description);

            var analyzer       = new DescriptionAnalyzer(pluginSettings);
            var astDescription = analyzer.Analyze(description);

            var parametersBuilder = new ParametersBuilder(pluginSettings);

            return(parametersBuilder.CreateParameters(astDescription));
        }