class Prism::DotVisitor

def visit_parameters_node(node)

Visit a ParametersNode node.
def visit_parameters_node(node)
  table = Table.new("ParametersNode")
  id = node_id(node)
  # 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
  # optionals
  if node.optionals.any?
    table.field("optionals", port: true)
    waypoint = "#{id}_optionals"
    digraph.waypoint("#{waypoint};")
    digraph.edge("#{id}:optionals -> #{waypoint};")
    node.optionals.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
  else
    table.field("optionals", "[]")
  end
  # rest
  unless (rest = node.rest).nil?
    table.field("rest", port: true)
    digraph.edge("#{id}:rest -> #{node_id(rest)};")
  end
  # posts
  if node.posts.any?
    table.field("posts", port: true)
    waypoint = "#{id}_posts"
    digraph.waypoint("#{waypoint};")
    digraph.edge("#{id}:posts -> #{waypoint};")
    node.posts.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
  else
    table.field("posts", "[]")
  end
  # keywords
  if node.keywords.any?
    table.field("keywords", port: true)
    waypoint = "#{id}_keywords"
    digraph.waypoint("#{waypoint};")
    digraph.edge("#{id}:keywords -> #{waypoint};")
    node.keywords.each { |child| digraph.edge("#{waypoint} -> #{node_id(child)};") }
  else
    table.field("keywords", "[]")
  end
  # keyword_rest
  unless (keyword_rest = node.keyword_rest).nil?
    table.field("keyword_rest", port: true)
    digraph.edge("#{id}:keyword_rest -> #{node_id(keyword_rest)};")
  end
  # block
  unless (block = node.block).nil?
    table.field("block", port: true)
    digraph.edge("#{id}:block -> #{node_id(block)};")
  end
  digraph.nodes << <<~DOT
    #{id} [
      label=<#{table.to_dot.gsub(/\n/, "\n  ")}>
    ];
  DOT
  super
end