anchor.diff:     ?_assertMatch({[BAbsX],_}, tcore_eval({'if',{'?',BAbsX},46,58}))}.
   
   b_test_() ->
  -  [
  -   basic_b_abs(),
  -   toplevel_base_fun(),
  -   %%
  -   b_fun_w_two_formal_params_is_represented_as_one_b_abs_and_b_apply(),
  -   %%
  -   b_abs_can_return_b_abs_and_formal_params_w_same_name_are_not_confused(),
  -   %%
  -   b_abs_can_access_formal_params_of_outer_b_abs(),
  -   b_abs_can_access_local_dims_of_outer_wheredim(), %% ... differently from upstream TL
  -   b_abs_can_access_formal_params_of_outer_b_abs_and_local_dims_of_outer_wheredim(),
  -   %%
  -   b_abs_can_use_argument_for_querying_creation_context(),
  -   b_abs_can_use_argument_for_querying_creation_context2(),
  -   %%
  -   b_abs_cannot_access_dims_in_application_context(),
  -   %%
  -   creation_of_b_abs_in_multiple_contexts_plays_nicely_w_cache()
  -  ].
  -
  -v_test_() ->
  -  [
  -   v_fun_w_two_formal_params_is_represented_as_nested_v_abs_and_v_apply(),
  -   %%
  -   v_abs_can_access_dims_in_application_context()
  -  ].
  -
  -fn_test_() ->
     {foreach, fun setup/0, fun cleanup/1,
      [
  -    ?_assertMatch({-5,_}, eval("F.1!2.4!8
  -                               where
  -                                 fun F.b1!v1.b2!v2 = b1 - v1 + b2 - v2
  -                               end"))
  +    ?_test(basic_b_abs()),
  +    ?_test(toplevel_base_fun()),
  +    %%
  +    ?_test(b_fun_w_two_formal_params_is_represented_as_one_b_abs_and_b_apply()),
  +    %%
  +    ?_test(b_abs_can_return_b_abs_and_formal_params_w_same_name_are_not_confused()),
  +    %%
  +    ?_test(b_abs_can_access_formal_params_of_outer_b_abs()),
  +    ?_test(b_abs_can_access_local_dims_of_outer_wheredim()), %% ... differently from upstream TL
  +    ?_test(b_abs_can_access_formal_params_of_outer_b_abs_and_local_dims_of_outer_wheredim()),
  +    %%
  +    ?_test(b_abs_can_use_argument_for_querying_creation_context()),
  +    ?_test(b_abs_can_use_argument_for_querying_creation_context2()),
  +    %%
  +    ?_test(b_abs_cannot_access_dims_in_application_context()),
  +    %%
  +    ?_test(creation_of_b_abs_in_multiple_contexts_plays_nicely_w_cache())
      ]}.
  +
  +v_test_() ->
  +  {foreach, fun setup/0, fun cleanup/1,
  +   [
  +    ?_test(v_fun_w_two_formal_params_is_represented_as_nested_v_abs_and_v_apply()),
  +    %%
  +    ?_test(v_abs_can_access_dims_in_application_context())
  +   ]}.
  +
  +fn_test_() ->
  +  {setup, fun setup/0, fun cleanup/1,
  +   ?_assertMatch({-5,_}, eval("F.1!2.4!8
  +                              where
  +                                fun F.b1!v1.b2!v2 = b1 - v1 + b2 - v2
  +                              end"))}.
   
   dims_frozen_in_abs_by_transform1_test_() ->
     {foreach, fun setup/0, fun cleanup/1,
  
positive.code:                         {v_abs, [], ["y"],
                           {primop, _, ["x", "y"]}}}}]},
                 t0(s(S))),
    {foreach, fun setup/0, fun cleanup/1,
     [ ?_assertMatch({45,_}, eval(S)) ]}.
  
  v_abs_can_access_dims_in_application_context() ->
    S = "(F!t where dim t <- 46 end) where fun F!x = #.x end",
    {foreach, fun setup/0, fun cleanup/1,
     [
      ?_assertMatch({46,_}, eval(S)) %% BTW upstream TL returns 46
     ]}.
  
  
  %% Internals
  
negative.code:       fun F.x.y = x - y
        fun G.x = F
      end",
    ?assertMatch({43,_}, eval(S)).
  
  b_abs_can_access_formal_params_of_outer_b_abs() ->
    S =
  