anchor.diff:  loop(Str) ->
     receive
       {io_request, From, ReplyAs, Request} ->
  -      {Reply, NewState} = request(Request, Str),
  +      {Reply, NewStr} = request(Request, Str),
         reply(From, ReplyAs, Reply),
  -      ?MODULE:loop(NewState);
  +      ?MODULE:loop(NewStr);
       {From, Ref, str} ->
         From ! {Ref, Str},
         ?MODULE:loop(Str);
       {From, Ref, count} ->
         From ! {Ref, 'clojerl.String':count(Str)},
         ?MODULE:loop(Str);
  +    {From, Ref, {delete, Start, End}} ->
  +      First  = 'clojerl.String':substring(Str, 0, Start),
  +      Second = 'clojerl.String':substring(Str, End),
  +      NewStr = <<First/binary, Second/binary>>,
  +      From ! {Ref, ok},
  +      ?MODULE:loop(NewStr);
       {From, Ref, close} ->
         From ! {Ref, ok};
       _Unknown ->
  
positive.code: -behaviour('erlang.io.IWriter').
  
  -export([?CONSTRUCTOR/0, ?CONSTRUCTOR/1]).
  -export([ start_link/1
          , init/1
          , loop/1
          ]).
  
  
negative.code:         , write/3
          ]).
  
  -export([delete/3]).
  
  -type type() :: #?TYPE{data :: pid()}.
  
  -spec ?CONSTRUCTOR() -> type().
  