anchor.diff:                  "** Generic server "++_ ->
                       %% gen_server terminate
                       [Name, _Msg, _State, Reason] = Args,
  -                    lager:log(error, Pid, "gen_server ~w crashed with reason: ~s",
  +                    lager:log(error, Pid, "gen_server ~w terminated with reason: ~s",
                           [Name, format_reason(Reason)]);
                   "** State machine "++_ ->
                       %% gen_fsm terminate
                       [Name, _Msg, StateName, _StateData, Reason] = Args,
  -                    lager:log(error, Pid, "gen_fsm ~w in state ~w crashed with reason: ~s",
  +                    lager:log(error, Pid, "gen_fsm ~w in state ~w terminated with reason: ~s",
                           [Name, StateName, format_reason(Reason)]);
                   "** gen_event handler"++_ ->
                       %% gen_event handler terminate
                       [ID, Name, _Msg, _State, Reason] = Args,
  -                    lager:log(error, Pid, "gen_event ~w installed in ~w crashed with reason: ~s",
  +                    lager:log(error, Pid, "gen_event ~w installed in ~w terminated with reason: ~s",
                           [ID, Name, format_reason(Reason)]);
                   _ ->
                       lager:log(error, Pid, Fmt, Args)
  
positive.code: format_crash_report(Report) ->
      Name = proplists:get_value(registered_name, Report, proplists:get_value(pid, Report)),
      {_Class, Reason, _Trace} = proplists:get_value(error_info, Report),
      %Arity = case A of
          %A when is_integer(A) -> A;
          %A when is_list(A) -> length(A)
      %end,
      io_lib:format("Process ~w crashed with reason: ~s", [Name, format_reason(Reason)]).
  
  format_offender(Off) ->
  
negative.code:             io_lib:format("with name ~w started with ~s at ~w", [Name, MFA, proplists:get_value(pid, Off)])
      end.
  
  format_reason({undef, [MFA|_]}) ->
      "call to undefined function " ++ format_mfa(MFA);
  format_reason({bad_return_value, Val}) ->
      io_lib:format("bad return value: ~w", [Val]);
  format_reason({{case_clause, Val}, [MFA|_]}) ->
      io_lib:format("no case clause matching ~w in ", [Val]) ++ format_mfa(MFA);
  format_reason({function_clause, [MFA|_]}) ->
      "no function clause matching " ++ format_mfa(MFA);
  format_reason({if_clause, [MFA|_]}) ->
      "no true branch found while evaluating if expresion in " ++ format_mfa(MFA);
  format_reason({{try_clause, Val}, [MFA|_]}) ->
      io_lib:format("no try clause matching ~w in ", [Val]) ++ format_mfa(MFA); 
  format_reason({badarith, [MFA|_]}) ->
      "bad arithmetic expression in function " ++ format_mfa(MFA);
  format_reason({{badmatch, Val}, [MFA|_]}) ->
      io_lib:format("no match of right hand value ~w in ", [Val]) ++ format_mfa(MFA);
  %format_reason({system_limit,
  format_reason({badarg, [MFA|_]}) ->
      case MFA of
          {_, _, A} when is_list(A) ->
              "bad argument in call to " ++ format_mfa(MFA);
          _ ->
              %% seems to be generated by a bad call to a BIF
              "bad argument in " ++ format_mfa(MFA)
      end;
  format_reason({{badarity, {Fun, Args}}, [MFA|_]}) ->
      {arity, Arity} = lists:keyfind(arity, 1, erlang:fun_info(Fun)),
      io_lib:format("fun called with wrong arity of ~w instead of ~w in ", [length(Args), Arity]) ++ format_mfa(MFA);
  format_reason({noproc, MFA}) ->
      "no such process or port in call to " ++ format_mfa(MFA);
  format_reason(Reason) ->
      {Str, _} = trunc_io:print(Reason, 500),
      Str.
  