anchor.diff:  -spec read_fold(read_fold_fun(), binary(), opts(), clj_env:env()) ->
     clj_env:env().
   read_fold(Fun, Src, Opts, Env) ->
  -  State = new_state(Src, Env, Opts, false),
  +  State = new_state(Src, Env, Opts),
     read_fold_loop(Fun, State).
   
   -spec read_fold_loop(read_fold_fun(), state()) -> clj_env:env().
   read_fold_loop(Fun, State) ->
  -  case dispatch(State) of
  +  case read_one(State, false) of
       %% Only finish when there is no more source to consume
       #{src := <<>>, forms := [], env := Env} ->
         Env;
  
positive.code:                   , bindings      => clj_scope:scope()
                    }.
  
  -spec new_state(binary(), any(), opts(), boolean()) -> state().
  new_state(Src, Env, Opts, ReadAll) ->
    #{ src           => Src
     , opts          => Opts
     , forms         => []
     , pending_forms => []
     , env           => Env
     , all           => ReadAll
     , loc           => {1, 1}
     , bindings      => clj_scope:new()
     }.
  
  -type read_fold_fun() :: fun((any(), clj_env:env()) -> clj_env:env()).
  
  -spec read_fold(read_fold_fun(), binary(), opts()) -> clj_env:env().
  
negative.code:     end,
    Char =
      case Token of
        Ch when size(Ch) == 1 -> Ch;
        <<"newline">> -> $\n;
        <<"space">> -> $ ;
  