code: func (n *WhenClause) Accept(v Visitor) (Node, bool) {
  	newNode, skipChildren := v.Enter(n)
  	if skipChildren {
  		return v.Leave(newNode)
  	}
  
  	n = newNode.(*WhenClause)
  	node, ok := n.Expr.Accept(v)
  	if !ok {
  		return n, false
  	}
  	n.Expr = node.(ExprNode)
  
  	node, ok = n.Result.Accept(v)
  	if !ok {
  		return n, false
  	}
  	n.Result = node.(ExprNode)
  	return v.Leave(n)
  }
docs: // Accept implements Node Accept interface.