class Prism::DotVisitor

def visit_case_node(node)

Visit a CaseNode node.
def visit_case_node(node)
  table = Table.new("CaseNode")
  id = node_id(node)
  # predicate
  unless (predicate = node.predicate).nil?
    table.field("predicate", port: true)
    digraph.edge("#{id}:predicate -> #{node_id(predicate)};")
  end
  # conditions
  if node.conditions.any?
    table.field("conditions", port: true)
    waypoint = "#{id}_conditions"
    digraph.waypoint("#{waypoint};")
    digraph.edge("#{id}:conditions -> #{waypoint};")
    node.conditions.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
  else
    table.field("conditions", "[]")
  end
  # consequent
  unless (consequent = node.consequent).nil?
    table.field("consequent", port: true)
    digraph.edge("#{id}:consequent -> #{node_id(consequent)};")
  end
  # case_keyword_loc
  table.field("case_keyword_loc", location_inspect(node.case_keyword_loc))
  # end_keyword_loc
  table.field("end_keyword_loc", location_inspect(node.end_keyword_loc))
  digraph.nodes << <<~DOT
    #{id} [
      label=<#{table.to_dot.gsub(/\n/, "\n  ")}>
    ];
  DOT
  super
end