anchor.diff:     %% TODO ?_test(basic_b_apply())
     ].
   
  +%% TODO: integration with parser for sequence of function declarations and calls
  +
   basic_b_abs() ->
  -  %% TODO: parser for sequence of abstractions and applications
     {ok, [FnT]} = tea:string("fun F.argAsVarId = argAsVarId"),
     ?assertEqual({fn, "F", [{b_param,"argAsVarId"}], "argAsVarId"},
                  FnT),
  -  {wherevar, "F", [{"F", BAbsT0}]} = t0(FnT), %% XXX This wherevar in transform1 smells badly
  +  %% XXX Transform 0 at the moment converts a "fn" node to a
  +  %% "wherevar" with "b_abs". The wherevar is probably wrong and will
  +  %% therefore probably be removed in the future. Focussing the test
  +  %% only on the b_abs piece of the generated AST.
  +  {wherevar, "F", [{"F", BAbsT0}]} = t0(FnT),
     ?assertEqual({b_abs, [], ["argAsVarId"], "argAsVarId"},
                  BAbsT0),
     ArgAsPhiDim = {phi,"argAsVarId"},
  
positive.code:   ok.
  
  b_abs_nested_in_wheredim_does_not_cause_wrong_substitution() ->
    %% TODO: parser for sequence of abstractions and applications
    BAbsT0 = abs_from_string("fun F.t = t + #.t"),
    T0 = {wheredim, BAbsT0, [{"t",46}]},
    WheredimT = {dim,{[],1},"t"},
    BAbsT = {phi,"t"},
  
negative.code:   ok.
  
  wheredim_nested_in_b_abs_does_not_cause_wrong_substitution() ->
    %% HACK: Get the b_abs node without the wherevar
    T0 = abs_from_string("fun F.t = (t + #.t) where dim t <- 46 end"),
    WheredimT = {dim,{[0],1},"t"},
    BAbsT = {phi,"t"},
  