public override XeFileInfo[] LoadDirectory(ref Uri uri) {
			if(!LoadsUriType(uri)) throw new ArgumentException();
			//System.Threading.Thread.Sleep(1000);
			DirectoryInfo di = new DirectoryInfo(uri.GetScrubbedLocalPath());
			Console.WriteLine("file://" + di.FullName.TrimEnd('\\', '/') + Path.DirectorySeparatorChar);
			uri = new Uri("file://" + di.FullName.TrimEnd('\\', '/') + Path.DirectorySeparatorChar);
			Console.WriteLine(uri.ToString());
			DirectoryInfo[] di2 = di.GetDirectories();
			FileInfo[] fi = di.GetFiles();
			int extra = ((bool)SettingsUtil.MainSettings["show..item"].data && di.Parent != null) ? 1 : 0;
			XeFileInfo[] fi2 = new XeFileInfo[di2.Length + fi.Length + extra];
			if(extra != 0) {
				fi2[0] = new XeFileInfo(di.Parent);
				fi2[0].Name = "..";
			}
			int i = extra;
			for(int j = 0; j < di2.Length; ++j, ++i) {
				try {
					fi2[i] = new XeFileInfo(di2[j]);
				}
				catch {

				}
			}
			for(int j = 0; j < fi.Length; ++j, ++i) {
				try {
					fi2[i] = new XeFileInfo(fi[j]);
				}
				catch {
					
				}
			}
			return (from fival in fi2 where fival != null select fival).ToArray();
		}
		public static object GetIconForDirectory(XeFileInfo file) {
			foreach(FileTypeIconHandler handler in fileTypeIconHandlers) {
				return handler.FindIconDir(file.FullPath, Path.GetExtension(file.Name), null);
			}
			throw new PluginNotFoundException();
		}