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