anchor.diff:  						])];
   				[false, true, _] ->
   					[create_message(JSON, "[~s] ~s deleted ~s at ~s", [
  -							[struct, "repository", struct, "name"],
  +							{reponame, [struct, "repository"]},
   							[struct, "sender", struct, "login"],
   							{ref, [struct, "ref"]},
   							{hash, [struct, "before"]}
  
positive.code: 				[false, false, Force] ->
  					Pushed = if Force -> "force-pushed"; true -> "pushed" end,
  					PushMsg = create_message(JSON, "[~s] ~s ~s ~b commits to ~s (from ~s to ~s): ~s", [
  							[struct, "repository", struct, "name"],
  							[struct, "sender", struct, "login"],
  							{Pushed},
  							{length, [struct, "commits", array]},
  
negative.code: create_message(JSON, String, FormatJsonPaths) ->
  	io_lib:format(String, lists:map(fun
  			({T}) -> T;
  			({hash,T}) -> lists:sublist(8, traverse_json(JSON, T));
  			({length,T}) -> length(traverse_json(JSON, T));
  			({ref,T}) ->
  				case traverse_json(JSON, T) of
  					"refs/heads/" ++ Branch -> Branch;
  					X -> X
  				end;
  			({trunc_newline,T}) ->
  				case traverse_json(JSON, T) of
  					error -> error;
  					Lst -> lists:takewhile(fun(X) -> X /= 10 end, Lst)
  				end;
  			({reponame, RepoStruct}) ->
  				case traverse_json(JSON, RepoStruct ++ [struct, "fork"]) of
  					false -> traverse_json(JSON, RepoStruct ++ [struct, "name"]);
  					_ -> traverse_json(JSON, RepoStruct ++ [struct, "full_name"])
  				end;
  			(T) -> traverse_json(JSON, T)
  		end, FormatJsonPaths)).
  