anchor.diff:      ?assertEqual(
          [1, 3],
          strip_nonlk_fields(
  -         [#param_v1{name = [<<"a">>]},
  -          #param_v1{name = [<<"b">>]}],
  +         [<<"a">>, <<"b">>],
            [{<<"a">>, 1}, {<<"x">>, 2}, {<<"b">>, 3}])),
       ?assertEqual(
          [1, 2],
          strip_nonlk_fields(
  -         [#param_v1{name = [<<"a">>]},
  -          #param_v1{name = [<<"b">>]}],
  +         [<<"a">>, <<"b">>],
            [{<<"a">>, 1}, {<<"b">>, 2}, {<<"x">>, 3}])),
       ?assertEqual(
          [1, 2],
          strip_nonlk_fields(
  -         [#param_v1{name = [<<"b">>]},
  -          #param_v1{name = [<<"a">>]}],
  +         [<<"b">>, <<"a">>],
            [{<<"a">>, 1}, {<<"b">>, 2}, {<<"x">>, 3}])),
       ok.
   
  
positive.code:             [];
          Record ->
              list_to_tuple(
                strip_nonlk_fields(Ast, Record))
      end.
  
  %% Special case of riak_ql_ddl:get_local_key/2: accepts [{Type,
  %% Value}] and consults Ast to only keep LK-constituent fields in Obj.
  strip_nonlk_fields(Ast, Obj) ->
      Params = [P || #param_v1{name = [P]} <- Ast],
      [V || {N, V} <- Obj, lists:member(N, Params)].
  
  
  handle_coverage_range_scan(FoldType, Bucket, ItemFilter, ResultFun,
  
negative.code:             DDLMod ->
                  #ddl_v1{table = Table,
                          local_key = #key_v1{ast = Ast}} = DDLMod:get_ddl(),
                  LKParams = [P || #param_v1{name = [P]} <- Ast],
                  {keys,
                   fun(Key) -> recover_ts_key(Key, Table, LKParams, Index) end}
          end,
      FoldFun = fold_fun(FoldFunSelector, BufferMod, Filter, Extras),
      FinishFun = finish_fun(BufferMod, Sender),
  