anchor.diff:      torrent :: torrent_id(),
       handle=closed :: 'closed' | file:io_device(),
       relpath :: file_path(),
  -    fullpath :: file_path()}).
  +    fullpath :: file_path(),
  +    dir_monitor :: reference()}).
   
   
   -spec start_link(torrent_id(), file_path(), file_path()) -> {'ok', pid()}.
  
positive.code:     NewState = #state{handle=closed},
      {noreply, NewState}.
  
  handle_info(_, State) ->
      {noreply, State}.
  
  terminate(_, _) ->
      not_implemented.
  
negative.code:     gen_server:call(FilePid, {write, Offset, Chunk}).
  
  init([TorrentID, RelPath, FullPath]) ->
      {ok, DirPid} = etorrent_io:await_directory(TorrentID),
      DirMonitor = etorrent:monitor(process, DirPid),
      _ = etorrent_io:register_file_server(TorrentID, RelPath),
      InitState = #state{
          torrent=TorrentID,
          handle=closed,
          relpath=RelPath,
          fullpath=FullPath,
          dir_monitor=DirMonitor},
      {ok, InitState}.
  
  handle_call({read, _, _}, _, State) when State#state.handle == closed ->
  