private static List <JumpList._ShellObjectPair> GenerateJumpItems(IObjectArray shellObjects)
    {
        List <JumpList._ShellObjectPair> list = new List <JumpList._ShellObjectPair>();
        Guid guid  = new Guid("00000000-0000-0000-C000-000000000046");
        uint count = shellObjects.GetCount();

        for (uint num = 0u; num < count; num += 1u)
        {
            object   at       = shellObjects.GetAt(num, ref guid);
            JumpItem jumpItem = null;
            try
            {
                jumpItem = JumpList.GetJumpItemForShellObject(at);
            }
            catch (Exception ex)
            {
                if (ex is NullReferenceException || ex is SEHException)
                {
                    throw;
                }
            }
            list.Add(new JumpList._ShellObjectPair
            {
                ShellObject = at,
                JumpItem    = jumpItem
            });
        }
        return(list);
    }