В своем говнокоде все непонятные моменты откомментил. Знаю, что рекомендуется делать через Set (судя по изначальному импорту), но нашел комментарии, что кто-то делал через map(только value не путь, а буфер с данными части файла).