class Prism::DotVisitor

def visit_find_pattern_node(node)

Visit a FindPatternNode node.
def visit_find_pattern_node(node)
  table = Table.new("FindPatternNode")
  id = node_id(node)
  # constant
  unless (constant = node.constant).nil?
    table.field("constant", port: true)
    digraph.edge("#{id}:constant -> #{node_id(constant)};")
  end
  # left
  table.field("left", port: true)
  digraph.edge("#{id}:left -> #{node_id(node.left)};")
  # requireds
  if node.requireds.any?
    table.field("requireds", port: true)
    waypoint = "#{id}_requireds"
    digraph.waypoint("#{waypoint};")
    digraph.edge("#{id}:requireds -> #{waypoint};")
    node.requireds.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
  else
    table.field("requireds", "[]")
  end
  # right
  table.field("right", port: true)
  digraph.edge("#{id}:right -> #{node_id(node.right)};")
  # opening_loc
  unless (opening_loc = node.opening_loc).nil?
    table.field("opening_loc", location_inspect(opening_loc))
  end
  # closing_loc
  unless (closing_loc = node.closing_loc).nil?
    table.field("closing_loc", location_inspect(closing_loc))
  end
  digraph.nodes << <<~DOT
    #{id} [
      label=<#{table.to_dot.gsub(/\n/, "\n  ")}>
    ];
  DOT
  super
end