-module(special_process). -export([start/0, init/1]). start() -> proc_lib:start_link(?MODULE, init, [self()]). init(Parent) -> proc_lib:init_ack(Parent, {ok, self()}), loop(). loop() -> receive function_clause -> foo(bar), loop(); exit -> exit(byebye), loop(); error -> erlang:error(mybad), loop(); {case_clause, X} -> case X of notgonnamatch -> ok; notthiseither -> error end, loop(); _ -> loop() end. foo(baz) -> ok.