anchor.diff:    parse_args(Rest, Opts#{compile_path => CompilePath});
   parse_args(["--compile" | Rest], Opts) ->
     parse_args(Rest, Opts#{compile => true});
  -parse_args(["-pa", CodePath | Rest], Opts = #{code_paths := CodePaths}) ->
  -  parse_args(Rest, Opts#{code_paths => [CodePath | CodePaths]});
   parse_args([TimeOpt | Rest], #{compile_opts := CompileOpts} = Opts)
     when TimeOpt =:= "-t"; TimeOpt =:= "--time" ->
     parse_args(Rest, Opts#{compile_opts := CompileOpts#{time := true}});
  
positive.code:   io:format("Unknown argument: ~s", [Unknown]),
    erlang:halt(0).
  
  -spec process_options(options()) -> ok.
  process_options(Opts) ->
    #{ compile_path := CompilePath
     , code_paths   := CodePaths
     } = Opts,
    ok = code:add_paths([CompilePath | CodePaths]).
  
  -spec run_commands(options()) -> ok.
  run_commands(#{ compile      := true
                , files        := Files
                , compile_path := CompilePath
                , compile_opts := CompileOpts
                } = Opts) ->
    CompilePathBin = list_to_binary(CompilePath),
    Bindings       = #{ <<"#'clojure.core/*compile-path*">>  => CompilePathBin
                      , <<"#'clojure.core/*compile-files*">> => true
  
negative.code: -type options() :: #{ compile_path      => string()
                      , compile           => boolean()
                      , compile_opts      => clj_compiler:options()
                      , files             => [string()]
                      , clojure_main      => boolean()
                      , clojure_main_args => [string()]
  