readManyFiles :: Summary -> NonEmpty FilePath -> Task.Task (NonEmpty (Module.Raw, Info))
readManyFiles summary files =
  Task.mapError Error.Crawl $
  do  infos <- traverse (readManyFilesHelp summary) files
      let insert (name, info) dict = Map.insertWith (<>) name (info :| []) dict
      let nameTable = foldr insert Map.empty infos
      _ <- Map.traverseWithKey detectDuplicateNames nameTable
      return infos
readManyFiles :: Summary -> NonEmpty FilePath -> Task.Task (NonEmpty (Module.Raw, Info))
readManyFiles summary files =
  Task.mapError Error.Crawl $
  do  infos <- traverse (readManyFilesHelp summary) files
      let insert (name, info) dict = Map.insertWith (<>) name (info :| []) dict
      let nameTable = foldr insert Map.empty infos
      _ <- Map.traverseWithKey detectDuplicateNames nameTable
      return infos
readManyFiles summary files =
  Task.mapError Error.Crawl $
  do  infos <- traverse (readManyFilesHelp summary) files
      let insert (name, info) dict = Map.insertWith (<>) name (info :| []) dict
      let nameTable = foldr insert Map.empty infos
      _ <- Map.traverseWithKey detectDuplicateNames nameTable
      return infos