anchor.diff:  binding(undefined) -> -1;
   binding(_) -> 0.
   
  -%% Child Type Label ------------------------------------------
  -
  -ct([]) -> [];
  -ct(L) when is_list(L) -> '[_]';
  -ct(<<>>) -> <<>>;
  -ct({}) -> {};
  -ct({_A}) -> '{_}';
  -ct({_A,_B}) -> '{_,_}';
  -ct({_A,_B,_C}) -> '{_,_,_}';
  -ct(A) when is_atom(A) -> A;
  -ct(B) when is_binary(B) -> B;
  -ct(X) -> X.
   
   %% SQL Parse Tree Traversal ------------------------------------
   
  
positive.code: 	Acc2 = Fun(Ind, 0, Parent, <<>>, B, Acc1),
  	fold_return(Ind, Idx , Parent, Fun, Acc2);					
  	
  fold_node(Ind, Idx, Parent, {Node, {}}, Ch, Fun, Acc0) ->					%% pre-order -> empty in-order for 'having'
  	?LOG("~n~p,~p,(~p),~p,~p", [Ind, Idx, Node, Parent, ct(Ch)]),
  	Acc1 = Fun(Ind+1, 0, Parent, {}, Node, Acc0),
  	fold_return(Ind, Idx , Parent, Fun, Acc1);			
  	
  
negative.code: 	Acc3 = fold_in(Ind+1, 0, Node, Right, undefined, Fun, Acc2),
  	fold_return(Ind, Idx , Parent, Fun, Acc3);
  	
  fold_node(_Ind, _Idx, _Parent, _T, _, _Fun, Acc)-> 							%% catch remaining
  	?LOG("~n----remaining term---------~n~p~n", [_T]),
  	Acc. 
  
  fold_comma(Ind, Idx, Parent, [Node|Rest], _, Fun, Acc0) ->					%% pre-order list traversal
  