anchor.diff:  pipe_yield(true)  -> erlang:yield().
   
   
  +
  +
  +
  
positive.code:    erlang:demonitor(Ref, [flush]);
  
  demonitor({node, _, Node}) ->
     monitor_node(Node, false),
     receive
        {nodedown, Node} -> 
           ok
  
negative.code:    pipe_send(Pid, A, Msg, Opts).
  
  %%
  %% send message through pipe either to side (a) or (b)
  %%   Options:
  %%      yield     - suspend current processes
  %%      noconnect - do not connect to remote node
  -spec(a/2 :: (pipe(), _) -> ok).
  -spec(a/3 :: (pipe(), _, [atom()]) -> ok).
  -spec(b/2 :: (pipe(), _) -> ok).
  -spec(b/3 :: (pipe(), _, [atom()]) -> ok).
  
  a({pipe, Pid, _}, Msg)
   when is_pid(Pid) orelse is_atom(Pid) ->
     pipe:send(Pid, Msg);
  a({pipe, {Pid, Tx}, _}, Msg)
   when is_pid(Pid), is_reference(Tx) ->
     % backward compatible with gen_server:reply
     try erlang:send(Pid, {Tx, Msg}), Msg catch _:_ -> Msg end;
  a({pipe, {Tx, Pid}, _}, Msg)
   when is_pid(Pid), is_reference(Tx) ->
  