protected override IList <FileDocumentInfo> GetDocumentInfos(DocumentoSanitarioType deserialized)
        {
            var documentPath = Path.Combine(ParserInputFolder, deserialized.Componente.Filename);

            if (!string.IsNullOrEmpty(Parameters.ExtensionWhiteList))
            {
                var fileName  = Path.GetFileName(documentPath).ToLowerInvariant();
                var whiteList = Parameters.ExtensionWhiteList.ToLowerInvariant().Split('|');
                if (!whiteList.Any(e => documentPath.EndsWith(e)))
                {
                    throw new InvalidOperationException("Estensione non valida per: " + documentPath);
                }
            }

            var document = new FileDocumentInfo(new FileInfo(documentPath));

            if (Parameters.SignatureValidationEnabled)
            {
                ValidateResultModel validateResult = _dssService.Validate(document.Name, document.Stream);
                if (!validateResult.IsValid)
                {
                    throw new SignatureDocumentValidationException(document.FileInfo.FullName, validateResult.ErrorMessages, validateResult.ToRetry);
                }
            }

            var attributes = new List <IDictionary <string, string> > {
                GetPropertiesDictionary(deserialized.Chiave)
            };

            if (deserialized.Componente != null)
            {
                attributes.Add(GetPropertiesDictionary(deserialized.Componente));
            }
            if (deserialized.Dati != null)
            {
                attributes.Add(GetPropertiesDictionary(deserialized.Dati));
            }
            if (deserialized.Revisione != null)
            {
                attributes.Add(GetPropertiesDictionary(deserialized.Revisione));
            }

            var result = new Dictionary <string, string>();

            foreach (var item in attributes)
            {
                result = result
                         .Concat(item.Where(a => !result.ContainsKey(a.Key)))
                         .ToDictionary(a => a.Key, a => a.Value);
            }

#if DEBUG
            result["Numero"] = Guid.NewGuid().ToString("N");
            FileLogger.Info(LoggerName, "#if DEBUG: modificato attributo Numero in: " + result["Numero"]);

            var flattened = result.Select(d => string.Format("{0}: {1}", d.Key, d.Value));
            var output    = string.Join("\r\n", flattened);
#endif

            document.AddAttributes(result);
            EvaluateBySignInfo(document);

            return(new List <FileDocumentInfo> {
                document
            });
        }