Amoeba.Windows.SeedInformationWindow.GetSignature C# (CSharp) Method

GetSignature() private method

private GetSignature ( Seed targetSeed ) : IEnumerable
targetSeed Seed
return IEnumerable
        private IEnumerable<string> GetSignature(Seed targetSeed)
        {
            var signatures = new HashSet<string>();

            {
                var storeTreeItems = new List<StoreTreeItem>();

                {
                    var storeCategorizeTreeItems = new List<StoreCategorizeTreeItem>();
                    storeCategorizeTreeItems.Add(Settings.Instance.StoreUploadControl_StoreCategorizeTreeItem);
                    storeCategorizeTreeItems.Add(Settings.Instance.StoreDownloadControl_StoreCategorizeTreeItem);

                    for (int i = 0; i < storeCategorizeTreeItems.Count; i++)
                    {
                        storeCategorizeTreeItems.AddRange(storeCategorizeTreeItems[i].Children);
                        storeTreeItems.AddRange(storeCategorizeTreeItems[i].StoreTreeItems);
                    }
                }

                foreach (var storeTreeItem in storeTreeItems)
                {
                    var boxList = new List<Box>();
                    var seedList = new HashSet<Seed>();

                    boxList.AddRange(storeTreeItem.Boxes);

                    for (int i = 0; i < boxList.Count; i++)
                    {
                        boxList.AddRange(boxList[i].Boxes);
                        seedList.UnionWith(boxList[i].Seeds);
                    }

                    if (seedList.Contains(targetSeed))
                    {
                        signatures.Add(storeTreeItem.Signature);
                    }
                }
            }

            {
                foreach (var signature in Inspect.GetTrustSignatures())
                {
                    Store store;
                    if (!Settings.Instance.Cache_Stores.TryGetValue(signature, out store)) continue;

                    var boxList = new List<Box>();
                    var seedList = new HashSet<Seed>();

                    boxList.AddRange(store.Boxes);

                    for (int i = 0; i < boxList.Count; i++)
                    {
                        boxList.AddRange(boxList[i].Boxes);
                        seedList.UnionWith(boxList[i].Seeds);
                    }

                    if (seedList.Contains(targetSeed))
                    {
                        signatures.Add(signature);
                    }
                }
            }

            return signatures.ToArray();
        }