def permutate_simplified_tree
      deps = dependencies_array(simplified_deps_tree(tree))
      return deps if deps.empty?

      # Return a cartesian product of dependencies
      deps[0].product(*deps[1..-1]).map(&:flatten)
    end
def permutate_simplified_tree
      deps = dependencies_array(simplified_deps_tree(tree))
      return deps if deps.empty?

      # Return a cartesian product of dependencies
      deps[0].product(*deps[1..-1]).map(&:flatten)
    end
Create permutations of package versions for the given dependency tree. The
 tree is first simplified (superfluous information removed), then turned into
 an array of dependencies, from which version permutations are generated.