code: @Override
      public void visit(NodeVisitor v) {
          if (v.visit(this)) {
              condition.visit(v);
              thenPart.visit(v);
              if (elsePart != null) {
                  elsePart.visit(v);
              }
          }
      }
docs: Visits this node, the condition, the then-part, and
  if supplied, the else-part.