anchor.diff:          , read/4            %% (User, Channel, Item, KeyTable)      return empty Arraylist if none of these resources exists
           , readGELT/5        %% (User, Channel, CKey1, CKey2, L)     from key at or after CKey1 to last key before CKey2, result as map, fails if more than L rows
           , readGELT/6        %% (User, Channel, Item, CKey1, CKey2, L)   from key at or after CKey1 to last key before CKey2, fails if more than L rows
  -        , readGELTKeys/4    %% (User, Channel, CKey1, CKey2)        from key at or after CKey1 to last key before CKey2, list of keys
           , readGELTKeys/5    %% (User, Channel, CKey1, CKey2, L)     from key at or after CKey1 to last key before CKey2, list of keys
  -        , readGELTNoError/4 %% (User, Channel, CKey1, CKey2)        from key at or after CKey1 to last key before CKey2, list of skvhmaps
           , readGELTNoError/5 %% (User, Channel, CKey1, CKey2, L)     from key at or after CKey1 to last key before CKey2, list of skvhmaps
           , readGT/4          %% (User, Channel, CKey1, L)            start with first key after CKey1, return result as list of maps of lenght L or less
           , readGT/5          %% (User, Channel, Item, CKey1, Limit)  start with first key after CKey1, return Limit results or less
  
positive.code: 	{L,_} = imem_meta:select(TableName, [MatchFunction], Limit),
      [skvh_rec_to_map(R) || R <- L ].
  
  readGELTNoError(_User, Channel, DecodedKey1, DecodedKey2) ->
      readGELTNoError(_User, Channel, DecodedKey1, DecodedKey2, 0).
  
  readGELTNoError(_User, Channel, DecodedKey1, DecodedKey2, Limit) ->
      TableName = atom_table_name(Channel),
      Key1 = term_key_to_binterm(DecodedKey1),
  
negative.code:         length(L) > Limit -> ?ClientError(?E117(Limit));
          true -> [skvh_rec_to_map(R) || R <- L ]
      end.
  
  readGELTKeys(_User, Channel, DecodedKey1, DecodedKey2, Limit) ->
      TableName = atom_table_name(Channel),
  