module RuboCop::Cop::FirstElementLineBreak

def check_children_line_break(node, children, start = node)

def check_children_line_break(node, children, start = node)
  return if children.empty?
  line = start.first_line
  min = first_by_line(children)
  return if line != min.first_line
  max = last_by_line(children)
  return if line == max.last_line
  add_offense(min) { |corrector| EmptyLineCorrector.insert_before(corrector, min) }
end

def check_method_line_break(node, children)

def check_method_line_break(node, children)
  return if children.empty?
  return unless method_uses_parens?(node, children.first)
  check_children_line_break(node, children)
end

def first_by_line(nodes)

def first_by_line(nodes)
  nodes.min_by(&:first_line)
end

def last_by_line(nodes)

def last_by_line(nodes)
  nodes.max_by(&:last_line)
end

def method_uses_parens?(node, limit)

def method_uses_parens?(node, limit)
  source = node.source_range.source_line[0...limit.loc.column]
  /\s*\(\s*$/.match?(source)
end