public override int GetHashCode()
        {
            PrologObject objMe;

            objMe = Normalize();
            if (!(objMe == this))
            {
                return(objMe.GetHashCode());
            }
            int hc = Functor.GetHashCode() ^ Arity;

            foreach (PrologObject p in this.parameters)
            {
                hc = hc ^ p.GetHashCode();
            }
            return(hc);
        }
 public override int GetHashCode()
 {
     return(Functor.GetHashCode()
            ^ Children.GetHashCode());
 }