anchor.diff:  
   -spec read_number(state()) -> state().
   read_number(#{forms := Forms, src := Src} = State) ->
  -  {SrcRest, Current} = consume(Src, [number, symbol]),
  +  {Current, SrcRest} = consume(Src, [number, symbol]),
     Number = clj_utils:parse_number(Current),
     State#{forms => [Number | Forms],
            src   => SrcRest}.
  
positive.code:   throw(<<"EOF while reading string">>).
  
  -spec escape_char(binary()) -> {binary(), binary()}.
  escape_char(<<Char, Rest/binary>>) ->
    Escaped =
      case Char of
        $t -> <<"\t">>;
        $r -> <<"\r">>;
        $n -> <<"\n">>;
        $\ -> <<"\\">>;
        $" -> <<"\"">>;
        $b -> <<"\b">>;
        $f -> <<"\f">>;
        $u -> <<"unicode">>
      end,
    {Escaped, Rest}.
  
  read_keyword(_) -> keyword.
  
  
negative.code:   Type = char_type(X, Rest),
    case lists:member(Type, Types) of
      true -> do_consume(Rest, <<Acc/binary, X>>, Types);
      false -> {Acc, Src}
    end.
  