public bool Equals(StateData st)
 {
     return st.magicBit == magicBit;
 }
 public void AddOrUpdate(Fingerprint fp, StateData sd)
 {
     if (hashTable.ContainsKey(fp))
     {
         StateData oldValue;
         hashTable.TryGetValue(fp, out oldValue);
         hashTable.TryUpdate(fp, sd, oldValue);
     }
     else
     {
         if (hashTable.TryAdd(fp, sd))
         {
             ZingerStats.IncrementStatesCount();
         }
     }
 }
        protected override void VisitState(TraversalInfo ti)
        {
            if (!ti.IsFingerPrinted)
                return;

            Fingerprint fp = ti.Fingerprint;

            StateData newD = new StateData(ti.MagicBit);
            GlobalStateTable.AddOrUpdate(fp, newD);
        }