anchor.diff:  -spec(terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),
       State :: #state{}) -> term()).
   terminate(Reason, #state{channel=Channel,module=Mod,opaque=Opaque}) ->
  -    case Mod:channel_terminate(Reason, Opaque) of
  +    case Mod:channel_terminate(Channel, Reason, Opaque) of
           {ok, Pdus} ->
               supercast_proc:send_broadcast(Channel, Pdus);
           _ -> ok
  
positive.code:     #state{channel=Name,module=Mod,opaque=Opaque} = State) ->
      case Mod:channel_join(Name, CState, Opaque) of
          {ok, Opaque2} ->
              supercast_proc:join_accept(Ref),
              {noreply, State#state{opaque=Opaque2}};
          {ok, Pdus, Opaque2} ->
              supercast_proc:join_accept(Ref, Pdus),
              {noreply, State#state{opaque=Opaque2}};
          {refuse, Opaque2} ->
              supercast_proc:join_refuse(Ref),
              {noreply, State#state{opaque=Opaque2}};
          {stop, Reason} ->
              supercast_proc:join_refuse(Ref),
              {stop, Reason};
          R ->
              supercast_proc:join_refuse(Ref),
              {stop, {bad_return, R}, State}
      end;
  
negative.code: %%% @author Sebastien Serre <ssbx@supercastframework.org>
  %%% @copyright (C) 2015, Sebastien Serre
  %%% @doc
  %%% @end
  %%%
  %%%-----------------------------------------------------------------------------
  -module(supercast_channel).
  -behaviour(gen_server).
  