module Solargraph::Parser::Rubyvm::NodeMethods::DeepInference

def reduce_to_value_nodes nodes

def reduce_to_value_nodes nodes
  result = []
  nodes.each do |node|
    if !node.is_a?(RubyVM::AbstractSyntaxTree::Node)
      result.push nil
    elsif REDUCEABLE.include?(node.type)
      result.concat get_return_nodes_from_children(node)
    elsif CONDITIONAL.include?(node.type)
      result.concat reduce_to_value_nodes(node.children[1..-1])
    elsif node.type == :RETURN
      if node.children[0].nil?
        result.push nil
      else
        result.concat get_return_nodes(node.children[0])
      end
    elsif node.type == :OR
      result.concat reduce_to_value_nodes(node.children)
    elsif node.type == :BLOCK
      result.concat get_return_nodes_only(node.children[2])
    elsif node.type == :RESBODY
      result.concat reduce_to_value_nodes([node.children[1]])
    else
      result.push node
    end
  end
  result
end