anchor.diff:  
   %%
   %% spawn stateless pipe handler
  --spec(spawn/1      :: (function()) -> pid()).
  --spec(spawn_link/1 :: (function()) -> pid()).
  +-spec(spawn/1         :: (function()) -> pid()).
  +-spec(spawn_link/1    :: (function()) -> pid()).
  +-spec(spawn_monitor/1 :: (function()) -> {pid(), reference()}).
   
   spawn(Fun) ->
      erlang:spawn(fun() -> pipe_loop(Fun, undefined, undefined) end).
   
   spawn_link(Fun) ->
      erlang:spawn_link(fun() -> pipe_loop(Fun, undefined, undefined) end).
  +
  +spawn_monitor(Fun) ->
  +   erlang:spawn_monitor(fun() -> pipe_loop(Fun, undefined, undefined) end).
   
   %%
   %% bind process to pipeline
  
positive.code:    start_link/4,
     spawn/1,
     spawn_link/1,
     bind/2,
     bind/3,
     make/1,
     a/2, 
     a/3,
     b/2,
  
negative.code:       Tail
     ).
  
  %%
  %% terminate pipeline
  -spec(free/1 :: ([proc()]) -> ok).
  
  free(Pipeline) ->
     lists:foreach(
        fun
        ({Pid, Ref}) ->
           _ = erlang:demonitor(Ref, [flush]),
           erlang:send(Pid, {'$pipe', self(), '$free'});
        (Pid) -> 
           erlang:send(Pid, {'$pipe', self(), '$free'}) 
        end,
        Pipeline
     ).
  
  
  %%
  %% send message through pipe
  