class Steep::Source

def find_nodes(line:, column:, node: self.node, position: nil, parents: [])

def find_nodes(line:, column:, node: self.node, position: nil, parents: [])
  position ||= (line-1).times.sum do |i|
    node.location.expression.source_buffer.source_line(i+1).size + 1
  end + column
  range = node.location.expression&.yield_self do |r|
    r.begin_pos..r.end_pos
  end
  if range
    if range === position
      parents.unshift node
      Source.each_child_node(node) do |child|
        ns = find_nodes(line: line, column: column, node: child, position: position, parents: parents) and return ns
      end
      parents
    end
  end
end