12345678910111213141516171819202122232425262728(* CR-someday amokhov: Switch from sets to "flat sets" backed by immutable arrays. *)typet={dir:Path.t;filenames:Filename.Set.t}letequalt{dir;filenames}=Path.equalt.dirdir&&Filename.Set.equalfilenamest.filenames;;letdir{dir;filenames=_}=dirletfilenames{dir=_;filenames}=filenamesletempty~dir={dir;filenames=String.Set.empty}letis_empty{dir=_;filenames}=Filename.Set.is_emptyfilenamesletcreate?filter~dirfilenames=matchfilterwith|None->{dir;filenames}|Somef->{dir;filenames=Filename.Set.to_listfilenames|>List.filter~f:(funbasename->f~basename)|>Filename.Set.of_list};;letto_list{dir;filenames}=Filename.Set.to_list_mapfilenames~f:(Path.relativedir)