private bool IsEqualTable(CompareEqual comparer, List <IReadOnlyIndex> otherTable, out IDictionary <IReadOnlyIndex, IReadOnlyIndex> matchTable)
        {
            matchTable = new Dictionary <IReadOnlyIndex, IReadOnlyIndex>();

            CompareEqual MatchComparer = CompareEqual.New(true);

            foreach (KeyValuePair <IReadOnlyIndex, IReadOnlyNodeState> Entry in StateTable)
            {
                MatchComparer.Reset();

                bool Found = false;
                for (int i = 0; i < otherTable.Count; i++)
                {
                    if (MatchComparer.VerifyEqual((IEqualComparable)Entry.Key, (IEqualComparable)otherTable[i]))
                    {
                        matchTable.Add(Entry.Key, otherTable[i]);
                        otherTable.RemoveAt(i);
                        Found = true;
                        break;
                    }
                }

                if (!comparer.IsTrue(Found))
                {
                    return(comparer.Failed());
                }
            }

            return(true);
        }