private StringBuilder VisitAndOr(
                TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression,
                ExprType kind)
            {
                this.m_builder.Append('(');
                bool flag = true;

                foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children)
                {
                    if (!flag)
                    {
                        if (kind == ExprType.And)
                        {
                            this.m_builder.Append(" AND ");
                        }
                        else
                        {
                            this.m_builder.Append(" OR ");
                        }
                    }
                    flag = false;
                    child.Accept <StringBuilder>((Visitor <DomainConstraint <BoolLiteral, Constant>, StringBuilder>) this);
                }
                this.m_builder.Append(')');
                return(this.m_builder);
            }
        private int VisitTree(TreeExpr <T_Identifier> expression)
        {
            int num = 0;

            foreach (BoolExpr <T_Identifier> child in expression.Children)
            {
                num += child.Accept <int>((Visitor <T_Identifier, int>) this);
            }
            return(num);
        }
 private IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > VisitTreeNode(
     TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression)
 {
     foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children)
     {
         foreach (TermExpr <DomainConstraint <BoolLiteral, Constant> > termExpr in child.Accept <IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > >((Visitor <DomainConstraint <BoolLiteral, Constant>, IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > >) this))
         {
             yield return(termExpr);
         }
     }
 }
            private DbExpression VisitAndOr(
                TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression,
                Func <DbExpression, DbExpression, DbExpression> op)
            {
                DbExpression dbExpression = (DbExpression)null;

                foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children)
                {
                    dbExpression = dbExpression != null?op(dbExpression, child.Accept <DbExpression>((Visitor <DomainConstraint <BoolLiteral, Constant>, DbExpression>) this)) : child.Accept <DbExpression>((Visitor <DomainConstraint <BoolLiteral, Constant>, DbExpression>) this);
                }
                return(dbExpression);
            }
                internal override BoolExpr <DomainConstraint <BoolLiteral, Constant> > VisitAnd(
                    AndExpr <DomainConstraint <BoolLiteral, Constant> > expression)
                {
                    BoolExpr <DomainConstraint <BoolLiteral, Constant> > boolExpr = base.VisitAnd(expression);
                    TreeExpr <DomainConstraint <BoolLiteral, Constant> > treeExpr = boolExpr as TreeExpr <DomainConstraint <BoolLiteral, Constant> >;

                    if (treeExpr == null)
                    {
                        return(boolExpr);
                    }
                    Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >        set    = new Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >();
                    Set <Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > source = new Set <Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >();

                    foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in treeExpr.Children)
                    {
                        OrExpr <DomainConstraint <BoolLiteral, Constant> > orExpr = child as OrExpr <DomainConstraint <BoolLiteral, Constant> >;
                        if (orExpr != null)
                        {
                            source.Add(new Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >(orExpr.Children));
                        }
                        else
                        {
                            set.Add(child);
                        }
                    }
                    source.Add(new Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >) new BoolExpr <DomainConstraint <BoolLiteral, Constant> >[1]
                    {
                        (BoolExpr <DomainConstraint <BoolLiteral, Constant> >) new AndExpr <DomainConstraint <BoolLiteral, Constant> >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)set)
                    }));
                    IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > seed = (IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >) new IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >[1]
                    {
                        Enumerable.Empty <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >()
                    };
                    IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > boolExprs = source.Aggregate <Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > >(seed, (Func <IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >, Set <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, IEnumerable <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > > >)((accumulator, bucket) => accumulator.SelectMany <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, BoolExpr <DomainConstraint <BoolLiteral, Constant> >, IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >((Func <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >)(accseq => (IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)bucket), (Func <IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >, BoolExpr <DomainConstraint <BoolLiteral, Constant> >, IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > >)((accseq, item) => accseq.Concat <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >) new BoolExpr <DomainConstraint <BoolLiteral, Constant> >[1]
                    {
                        item
                    })))));
                    List <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > boolExprList = new List <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >();

                    foreach (IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > > children in boolExprs)
                    {
                        boolExprList.Add((BoolExpr <DomainConstraint <BoolLiteral, Constant> >) new AndExpr <DomainConstraint <BoolLiteral, Constant> >(children));
                    }
                    return((BoolExpr <DomainConstraint <BoolLiteral, Constant> >) new OrExpr <DomainConstraint <BoolLiteral, Constant> >((IEnumerable <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)boolExprList));
                }
            private StringBuilder VisitAndOr(
                TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression,
                string opAsString)
            {
                List <string> stringList = new List <string>();
                StringBuilder builder    = this.m_builder;

                foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children)
                {
                    this.m_builder = new StringBuilder();
                    child.Accept <StringBuilder>((Visitor <DomainConstraint <BoolLiteral, Constant>, StringBuilder>) this);
                    stringList.Add(this.m_builder.ToString());
                }
                this.m_builder = builder;
                this.m_builder.Append('(');
                StringUtil.ToSeparatedStringSorted(this.m_builder, (IEnumerable)stringList, " " + opAsString + " ");
                this.m_builder.Append(')');
                return(this.m_builder);
            }
            private bool VisitAndOr(
                TreeExpr <DomainConstraint <BoolLiteral, Constant> > expression)
            {
                bool flag1 = true;
                bool flag2 = true;

                foreach (BoolExpr <DomainConstraint <BoolLiteral, Constant> > child in expression.Children)
                {
                    if (!(child is FalseExpr <DomainConstraint <BoolLiteral, Constant> >) && !(child is TrueExpr <DomainConstraint <BoolLiteral, Constant> >))
                    {
                        bool flag3 = child.Accept <bool>((Visitor <DomainConstraint <BoolLiteral, Constant>, bool>) this);
                        if (flag1)
                        {
                            flag2 = flag3;
                        }
                        flag1 = false;
                    }
                }
                return(flag2);
            }