Expression INodeVisitor <Expression, ExpressionNodeVisitorInput> .VisitComplexNode(ComplexNode node, ExpressionNodeVisitorInput input) { Expression expression = null; foreach (var childNode in node.Nodes) { expression = expression == null ? childNode.Accept(this, input) : childNode.LogicalOperator == LogicalOperator.And ? ExpressionEx.AndAlso(expression, childNode.Accept(this, input)) : ExpressionEx.OrElse(expression, childNode.Accept(this, input)); } return(expression); }