anchor.diff:  
   -type type() :: #{ ?TYPE => ?M
                    , array => array:array()
  +                 , size  => non_neg_integer()
                    , index => non_neg_integer()
                    , meta  => ?NIL | any()
                    }.
  
positive.code: 
  %% clojerl.IChunkedSeq
  
  chunked_first(#{?TYPE := ?M, array := Array, index := Index}) ->
    End  = lists:min([array:size(Array), Index + ?CHUNK_SIZE]),
    List = [array:get(I, Array) || I <- lists:seq(Index, End - 1)],
    'clojerl.TupleChunk':?CONSTRUCTOR(list_to_tuple(List)).
  
  chunked_next(#{?TYPE := ?M, array := Array, index := Index}) ->
    End = lists:min([array:size(Array), Index + ?CHUNK_SIZE]),
    case End < array:size(Array) of
      true  -> ?CONSTRUCTOR(Array, Index + ?CHUNK_SIZE);
      false -> ?NIL
    end.
  
negative.code: 
  %% clojerl.ICounted
  
  count(#{?TYPE := ?M, size := Size, index := Index}) ->
    Size - Index.
  
  %% clojerl.IColl
  
  