anchor.diff:  	| comment
   	| {comment, comment()}
   	| {emu_args, emu_args()}
  -	| {source, filename() | binary()}
  -	| {beam, filename() | binary()}
  -	| {archive, filename() | binary()}
  +	| {source, file:filename() | binary()}
  +	| {beam, file:filename() | binary()}
  +	| {archive, file:filename() | binary()}
   	| {archive, [zip_file()], [zip_create_option()]}.
   
  +%%-----------------------------------------------------------------------
  +
   %% Create a complete escript file with both header and body
  --spec create(escript_filename() | binary, [section()]) ->
  +-spec create(file:filename() | binary, [section()]) ->
   		    ok | {ok, binary()} | {error, term()}.
   
   create(File, Options) when is_list(Options) ->
  
positive.code: 
  -type section_name() :: shebang | comment | emu_args | body .
  -type extract_option() :: compile_source | {section, [section_name()]}.
  -spec extract(filename(), [extract_option()]) -> {ok, [section()]} | {error, term()}.
  extract(File, Options) when is_list(File), is_list(Options) ->
      try
  	EO = parse_extract_options(Options,
  
negative.code: %% Internal API.
  -export([start/0, start/1]).
  
  %%-----------------------------------------------------------------------
  
  -define(SHEBANG,  "/usr/bin/env escript").
  -define(COMMENT,  "This is an -*- erlang -*- file").
  
  %%-----------------------------------------------------------------------
  
  -type mode()   :: 'compile' | 'debug' | 'interpret' | 'run'.
  -type source() :: 'archive' | 'beam' | 'text'.
  
  -record(state, {file         :: file:filename(),
                  module       :: module(),
                  forms_or_bin,
                  source       :: source(),
                  n_errors     :: non_neg_integer(),
                  mode         :: mode(),
                  exports_main :: boolean(),
                  has_records  :: boolean()}).
  
  -type shebang() :: string().
  -type comment() :: string().
  -type emu_args() :: string().
  
  -record(sections, {type,
  		   shebang  :: shebang(),
  		   comment  :: comment(),
  		   emu_args :: emu_args(),
  		   body}).
  
  -record(extract_options, {compile_source}).
  
  -type zip_file() ::
  	  file:filename()
  	| {file:filename(), binary()}
  	| {file:filename(), binary(), file:file_info()}.
  -type zip_create_option() :: term().
  -type section() ::
  	  shebang
  