def reduce_node(irep_node, reducer_states)
      visit_analyzers(:enter, irep_node, reducer_states)

      irep_node.typed_children.each do |type_defn, children|
        children.each do |name, child_irep_node|
          reduce_node(child_irep_node, reducer_states)
        end
      end

      visit_analyzers(:leave, irep_node, reducer_states)
    end
def reduce_node(irep_node, reducer_states)
      visit_analyzers(:enter, irep_node, reducer_states)

      irep_node.typed_children.each do |type_defn, children|
        children.each do |name, child_irep_node|
          reduce_node(child_irep_node, reducer_states)
        end
      end

      visit_analyzers(:leave, irep_node, reducer_states)
    end
Enter the node, visit its children, then leave the node.