anchor.diff:  	       zip_comment_length}).
   
   
  +-type zip_file() :: #zip_file{}.
  +-type zip_comment() :: #zip_comment{}.
  +
   %% Open a zip archive with options
   %%
   
  
positive.code:     {ok, Files}.
  
  %% Iterate over all files in a zip archive
  foldl(Fun, Acc0, Archive) when is_function(Fun, 4) ->
      ZipFun =
  	fun({Name, GetInfo, GetBin}, A) ->
  
negative.code: %% Accepted options:
  %% verbose, cooked, memory, comment
  
  -spec(zip(Name, FileList) -> RetValue when
        Name     :: file:name(),
        FileList :: [FileSpec],
        FileSpec :: file:name() | {file:name(), binary()}
                  | {file:name(), binary(), file:file_info()},
        RetValue :: {ok, FileName :: file:name()}
                  | {ok, {FileName :: file:name(), binary()}}
                  | {error, Reason :: term()}).
  
  zip(F, Files) -> zip(F, Files, []).
  
  -spec(zip(Name, FileList, Options) -> RetValue when
        Name     :: file:name(),
        FileList :: [FileSpec],
        FileSpec :: file:name() | {file:name(), binary()}
                  | {file:name(), binary(), file:file_info()},
        Options  :: [Option],
        Option   :: memory | cooked | verbose | {comment, Comment}
                  | {cwd, CWD} | {compress, What} | {uncompress, What},
        What     :: all | [Extension] | {add, [Extension]} | {del, [Extension]},
        Extension :: string(),
        Comment  :: string(),
        CWD      :: string(),
        RetValue :: {ok, FileName :: file:name()}
                  | {ok, {FileName :: file:name(), binary()}}
                  | {error, Reason :: term()}).
  
  zip(F, Files, Options) ->
      case ?CATCH do_zip(F, Files, Options) of
  