def visit_media(node)
if parent.is_a?(Sass::Tree::RuleNode)
new_rule = parent.dup
new_rule.children = node.children
node.children = with_parent(node) {Array(visit(new_rule))}
node.children.last.group_end = false unless node.children.empty?
else
yield
end
media = node.children.select {|c| c.is_a?(Sass::Tree::MediaNode)}
node.children.reject! {|c| c.is_a?(Sass::Tree::MediaNode)}
media.each do |n|
n.query = node.query.map {|pq| n.query.map {|cq| "#{pq} and #{cq}"}}.flatten
end
(node.children.empty? ? [] : [node]) + media
end