anchor.diff:          , update/3          %% (user, Channel, ChangeList)          update a list of resources, it will fail if the old value was modified by someone else
           , update/4          %% (User, Channel, OldRow, NewRow)      update a resource, it will fail if the old value was modified, rows should be in map format
           , read/3            %% (User, Channel, KeyList)             return empty Arraylist if none of these resources exists, the list is returning as a map
  +        , read_shallow/3    %% (User, Channel, KeyList)             return list of maps
  +        , read_deep/3       %% (User, Channel, KeyList)             return empty Arraylist if none of these resources exists, the list is returning as a map
           , 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
  
positive.code: -spec expand_inline_key(User :: any(), Channel :: binary(), Key :: any()) ->
      Json :: binary().
  expand_inline_key(User, Channel, Key) ->
      case imem_dal_skvh:read(User, Channel, [Key]) of
          [] -> [];
          [#{cvalue := Json}] -> expand_inline(User, Channel, Json)
      end.
  
negative.code:               case re:run(K, "^inline_*") of
                    nomatch -> Acc;
                    _ ->
                        case read(User, Channel,
                                  [imem_json_data:to_strbinterm(V)]) of
                            [] -> Acc;
                            [#{cvalue := BVal}] -> [{V, BVal} | Acc]
                        end
  