function resolveTreeGreedy (module, opts, cb) {
    if(!cb) cb = opts, opts = null

    opts = opts || {}
    opts.filter = function (pkg, root) {
      if(!pkg) return
      if(!root.tree[pkg.name]) {
        root.tree[pkg.name] = pkg
        pkg.parent = root
      }
      else {
        pkg.parent.tree[pkg.name] = pkg
      }
      return pkg
    }

    resolveTree(module, opts, cb)
  }
function resolveTreeGreedy (module, opts, cb) {
    if(!cb) cb = opts, opts = null

    opts = opts || {}
    opts.filter = function (pkg, root) {
      if(!pkg) return
      if(!root.tree[pkg.name]) {
        root.tree[pkg.name] = pkg
        pkg.parent = root
      }
      else {
        pkg.parent.tree[pkg.name] = pkg
      }
      return pkg
    }

    resolveTree(module, opts, cb)
  }
function resolveTreeGreedy ( module , opts , cb ) { if ( ! cb ) cb = opts , opts = null opts = opts || { } opts . filter = function ( pkg , root ) { if ( ! pkg ) return if ( ! root . tree [ pkg . name ] ) { root . tree [ pkg . name ] = pkg pkg . parent = root } else { pkg . parent . tree [ pkg . name ] = pkg } return pkg } resolveTree ( module , opts , cb ) }
install non-conflicting modules as low in the tree as possible.
install non - conflicting modules as low in the tree as possible .