private static bool IDLIsFolder(IDLWrapper idlw, out IDLWrapper idlwLinkTarget) {
     idlwLinkTarget = null;
     if(!idlw.IsLink) {
         return idlw.IsFolder;
     }
     if(idlw.HasPath) {
         idlwLinkTarget = new IDLWrapper(ShellMethods.GetLinkTargetPath(idlw.Path));
         if(idlwLinkTarget.Available && idlwLinkTarget.IsFolder) {
             return true;
         }
         idlwLinkTarget.Dispose();
         idlwLinkTarget = null;
     }
     return false;
 }
 internal IDLWrapper GetCurrentPIDL() {
     IDLWrapper wrapper = ShellBrowser.GetShellPath();
     if(!wrapper.Available) {
         wrapper.Dispose();
         wrapper = new IDLWrapper(ShellMethods.ShellGetPath2(ExplorerHandle));
         if(!wrapper.Available) {
             wrapper.Dispose();
             wrapper = new IDLWrapper(lastCompletedBrowseObjectIDL);
         }
     }
     return wrapper;
 }