anchor.diff:                    bottom_up -> Fun(ST, NewCtx1)
                 end,
       RT = {if length(GroupByStr) > 0 ->
  -        "group by " ++ string:join(GroupByStr, ", "); true -> "" end, NewCtx2},
  +        "group by " ++ string:join(GroupByStr, ", "); true -> [] end, NewCtx2},
       ?debugFmt(?MODULE_STRING ++ ":fold ===> ~n RT: ~p~n", [RT]),
       RT;
   
  
positive.code:                   top_down -> NewCtx2;
                    bottom_up -> Fun(ST, NewCtx2)
                end,
      RT = {lists:flatten([string:strip(AStr, right, $\s), " union ", BStr]), NewCtx3},
      ?debugFmt(?MODULE_STRING ++ ":fold ===> ~n RT: ~p~n", [RT]),
      RT;
  
  
negative.code:                  bottom_up -> Ctx
               end,
      NewCtx1 = Fun(JoinType, NewCtx),
      {TabStr, NewCtx2} = fold(FType, Fun, NewCtx1, Lvl + 1, Tab),
      {OnOrUsingStr, NewCtx3} = fold(FType, Fun, NewCtx2, Lvl + 1, OnOrUsing),
      NewCtx4 = case FType of
                    top_down -> NewCtx3;
  