private void MenuItemFindTopLevelFolder_Click(object sender, RoutedEventArgs e)
        {
            string uri = NineWorldsDeep.UI.Prompt.ForNwdUri();

            Parser.Parser p = new Parser.Parser();

            string nodeName = p.GetKeyNode(0, uri);

            MultiMap<string, NwdPortableDeviceObject> uriNodeToPdos =
                new MultiMap<string, NwdPortableDeviceObject>();

            var col = new NwdPortableDeviceCollection();

            try
            {
                col.Refresh();
            }
            catch (Exception ex)
            {
                Display.Exception(ex);
            }

            foreach (var device in col)
            {
                if (device.RootFolder != null)
                {
                    //device level
                    foreach (NwdPortableDeviceObject pdo
                        in device.RootFolder.Files)
                    {
                        //internal vs external storage level
                        if (pdo is NwdPortableDeviceFolder)
                        {
                            NwdPortableDeviceFolder folder =
                                (NwdPortableDeviceFolder)pdo;

                            folder.Refresh(device);

                            if (folder.Files != null)
                            {
                                foreach (NwdPortableDeviceObject pdoTopLevelFolderOrFile in folder.Files)
                                {
                                    //top level folder level

                                    if (pdoTopLevelFolderOrFile.Name.Equals(nodeName))
                                    {
                                        uriNodeToPdos.Add(nodeName, pdoTopLevelFolderOrFile);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            MessageBox.Show("found " + uriNodeToPdos[nodeName].Count() + " matching nodes");
        }