class Covered::Source

def expand(node, coverage, level = 0)

def expand(node, coverage, level = 0)
	if node.is_a? Parser::AST::Node
		if ignore?(node)
			# coverage.annotate(node.location.line, "ignoring #{node.type}")
		elsif node.type == :begin
			# if last_child = node.children&.last
			# 	coverage.counts[last_child.location.line] ||= 0
			# end
			
			expand(node.children, coverage, level + 1)
		elsif node.type == :send
			if ignore_method?(node.children[1])
				# coverage.annotate(node.location.line, "ignoring #{node.type}")
				return
			else
				# coverage.annotate(node.location.line, "accepting selector #{node.type}")
				coverage.counts[node.location.selector.line] ||= 0
			end
		elsif executable?(node)
			# coverage.annotate(node.location.line, "executable #{node.type}")
			coverage.counts[node.location.line] ||= 0
		end
		if ignore_children?(node)
			# coverage.annotate(node.location.line, "ignoring #{node.type} children")
		else
			expand(node.children, coverage, level + 1)
		end
	elsif node.is_a? Array
		node.each do |child|
			expand(child, coverage, level)
		end
	else
		return false
	end
end