public static DataNode Create(Stream source, IEnumerable <Type> typesToCheck, string fileName = null)
        {
            var module = FormatModuleUtilities.GetModuleForImport(source, typesToCheck, fileName);

            if (module != null && DataNodeTypes.ContainsKey(module.ModelType))
            {
                return(Create(module.ModelType, fileName, module.Import(source, fileName)));
            }

            return(new StreamNode(fileName, source));
        }
        public static DataNode Create(string filePath, IEnumerable <Type> typesToCheck)
        {
            IFormatModule module;

            using (var stream = File.OpenRead(filePath))
                module = FormatModuleUtilities.GetModuleForImport(stream, typesToCheck, Path.GetFileName(filePath));

            if (module != null && DataNodeTypes.ContainsKey(module.ModelType))
            {
                return(Create(module.ModelType, Path.GetFileName(filePath), module.Import(filePath)));
            }

            return(new StreamNode(Path.GetFileName(filePath), File.OpenRead(filePath)));
        }