int CountCellsHash(Dictionary<Value, Value> hash, HashSet<object> visited) { var sum = hash.Count * 2; visited.Add (hash); foreach (var kv in hash) { sum += CountCellsImpl (kv.Key, visited); sum += CountCellsImpl (kv.Value, visited); } return sum; }