public void Accept(IVisitor visitor) { visitor.BeforeWhen(); condition.Accept(visitor); visitor.DuringWhen(); value.Accept(visitor); visitor.AfterWhen(); }