AST::Node.class_eval do

  def [](name)
    #puts self.inspect
    children.each do |child|
      if child.is_a?(AST::Node)
        #puts child.type
        if (child.type == name)
          return child.children
        end
      else
        #puts child.class
      end
    end
    nil
  end

  def first_from( node_name )
    from = self[node_name]
    return nil unless from
    from.first
  end
end