/// <summary>
 /// source: https://stackoverflow.com/a/263416
 /// </summary>
 /// <returns></returns>
 public override int GetHashCode()
 {
     unchecked
     {
         int hash = 17;
         hash = hash * 23 + State1.GetHashCode();
         hash = hash * 23 + StackSymbol.GetHashCode();
         hash = hash * 23 + State2.GetHashCode();
         return(hash);
     }
 }
 public override string ToString()
 {
     return(State1 + StackSymbol.ToString() + State2);
 }
 public bool Equals(TripleStackSymbol <S> other)
 {
     return(State1 == other.State1 &&
            StackSymbol.Equals(other.StackSymbol) &&
            State2 == other.State2);
 }