public override bool Equals(SyntaxBlock ToCompare)
        {
            var casted = ToCompare as AbstractOrderirrelevantOperator;

            if (casted == null)
            {
                return(false);
            }
            if (ToCompare.GetType() != GetType())
            {
                return(false);
            }

            if (A.Equals(casted.A))
            {
                if (B.Equals(casted.B))
                {
                    return(true);
                }
            }
            if (B.Equals(casted.A))
            {
                if (A.Equals(casted.B))
                {
                    return(true);
                }
            }
            return(false);
        }
        public override bool ParallelEquals(SyntaxBlock ToCompare, int Depth)
        {
            if (Depth == 0)
            {
                return(Equals(ToCompare));
            }

            var casted = ToCompare as AbstractOrderstrictOperator;

            if (casted == null)
            {
                return(false);
            }
            if (ToCompare.GetType() != GetType())
            {
                return(false);
            }
            bool a = false;
            bool b = false;

            Parallel.Invoke(
                () => { a = A.Equals(casted.A); },
                () => { b = B.Equals(casted.B); }
                );
            return(a && b);
        }
        public override bool Equals(SyntaxBlock ToCompare)
        {
            var casted = ToCompare as AbstractOrderstrictOperator;

            if (casted == null)
            {
                return(false);
            }
            if (ToCompare.GetType() != GetType())
            {
                return(false);
            }

            return(A.Equals(casted.A) && B.Equals(casted.B));
        }
        public override bool ParallelEquals(SyntaxBlock ToCompare, int Depth)
        {
            if (Depth == 0)
            {
                return(Equals(ToCompare));
            }

            var casted = ToCompare as AbstractOrderirrelevantOperator;

            if (casted == null)
            {
                return(false);
            }
            if (ToCompare.GetType() != GetType())
            {
                return(false);
            }

            bool aisa, aisb;

            aisa = false;
            aisb = false;

            Parallel.Invoke(
                () => {
                if (A.Equals(casted.A))
                {
                    if (B.Equals(casted.B))
                    {
                        aisa = true;
                    }
                }
            },
                () => {
                if (B.Equals(casted.A))
                {
                    if (A.Equals(casted.B))
                    {
                        aisb = true;
                    }
                }
            }
                );
            return(aisa || aisb);
        }