anchor.diff:  %% Structure is like:
   %%    [{Fid, Type}, ...]
   read(IProto, {struct, Structure}) when is_list(Structure) ->
  +    IndexList = case length(Structure) of
  +                    N when N > 0 -> lists:seq(1, N);
  +                    _ -> []
  +                end,
  +
       SWithIndices = [{Fid, {Type, Index}} ||
                          {{Fid, Type}, Index} <-
  -                           lists:zip(Structure, lists:seq(1, length(Structure)))],
  +                           lists:zip(Structure, IndexList)],
       % Fid -> {Type, Index}
       SDict = dict:from_list(SWithIndices),
   
  
positive.code:     #protocol_list_begin{etype = EType, size = Size} =
          read(IProto, list_begin),
      List = [Result || {ok, Result} <- 
                            [read(IProto, Type) || _X <- lists:seq(1, Size)]],
      ok = read(IProto, list_end),
      {ok, List};
  
  
negative.code: 
      List = [{Key, Val} || {{ok, Key}, {ok, Val}} <- 
                                [{read(IProto, KeyType),
                                  read(IProto, ValType)} || _X <- lists:duplicate(Size, 0)]],
      ok = read(IProto, map_end),
      {ok, dict:from_list(List)};
  
  