public function lister(array $tree, array $nest = null)
    {
        if (is_null($nest)) {
            return $this->lister($tree, $this->nestify($tree));
        }
        $list = array();
        foreach ($nest as $id => $values) {
            if (!empty($values)) {
                $list[array_shift($tree[$id])] = $this->lister($tree, $values);
            } else {
                $list[] = array_shift($tree[$id]);
            }
        }

        return $list;
    }