public override void Visit(AndSpecNode <T> andSpecNode) { if (_not) { Visit(MoveNotDown(new NotSpecNode <T>(andSpecNode))); } else {
public override void Visit(AndSpecNode <T> andSpecNode) { var takenNot = _notNodes.Peek(); _notNodes.Push(takenNot); base.Visit(andSpecNode); var rightNode = _nodes.Pop(); var leftNode = _nodes.Pop(); _nodes.Push(takenNot ? (ISpecNode <T>) new OrSpecNode <T>(leftNode, rightNode) : rightNode != andSpecNode.RightNode || leftNode != andSpecNode.LeftNode ? new AndSpecNode <T>(leftNode, rightNode) : andSpecNode); }
public virtual void Visit(AndSpecNode <T> andSpecNode) { Visit(andSpecNode.LeftNode); Visit(andSpecNode.RightNode); }