Kill graph analysis and restart logic for ides.
-type exit_reason() :: normal | abnormal.
-spec affected_siblings(TargetPid :: pid()) -> {ok, [pid()]} | {error, term()}.
-spec kill_graph(TargetPid :: pid()) -> {ok, [pid()]} | {error, term()}.
-spec should_restart(Pid :: pid(), Reason :: exit_reason()) -> boolean().