`FSUtil.Resolve()` invalidates shell paths

var fsUtil = DOpus.FSUtil();

// These return `Path`s with a default value of nothing.
// Shouldn't these return something like
// "shell:MyComputerFolder"/"shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"/
// "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"?
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("/thispc"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("/trash"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("/network"))));

// Same problem. These could be kept or become GUID-style paths.
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("shell:MyComputerFolder"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("shell:RecycleBinFolder"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("shell:NetworkPlacesFolder"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("shell:::{645FF040-5081-101B-9F08-00AA002F954E}"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("shell:::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"))));

// This *is* kept.
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("::{645FF040-5081-101B-9F08-00AA002F954E}"))));
DOpus.Output(JSON.stringify(String(fsUtil.Resolve("::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"))));

// BTW, this returns `true`, so they're really `Path`s.
//DOpus.Output(fsUtil.Resolve("/thispc") instanceof Path);  // `Path` not available.
DOpus.Output(String(fsUtil.Resolve("/thispc").prototype === fsUtil.NewPath("/desktop").prototype));

What are you trying to do with those paths? Understanding that will help us know what to do, which might involve adding new methods or objects if it makes sense.

I'm writing a script to open the clipboard content in DOpus. The clipboard is read either as lines of text or as the file list clipboard format. The script can either open them in new tabs, or consolidate them to their common ancestor and visit that folder in the current tab.

I work in parallel with the original and the resolved path when searching for the common ancestor. I'm first using PathType() to check for "shell" (patched) to find out whether resolving must mean not calling Resolve(), but just cloning the original Path. If Resolve() didn't remove the path information from the Path, I could still call it, even with shell paths (visiting that resolved shell folder is the same anyways).

Another case is the function to open Windows Explorer in the current folder. Your menu command "Tools > Open in Explorer" uses the command "/windows\Explorer.exe" /e, {sourcepath$}. I copied that for use with a voice command that does the same. However, this has problems, and you could either change the behavior of {sourcepath$}, add another external control code that behaves differently, or implement this in JScript. In any case, this action should open the virtual desktop folder in Explorer instead of the resolved path, which it currently does, and really open the Recycle Bin folder in Explorer instead of This PC, which it currently does.