anchor.diff:  	rule -> vann_rule(Tree, Env, Ms, VI, Pid);
   	fun_expr -> vann_fun_expr(Tree, Env, Ms, VI, Pid);
   	list_comp -> vann_list_comp(Tree, Env, Ms, VI, Pid);
  +        binary_comp ->vann_binary_comp(Tree, Env, Ms, VI, Pid);
   	generator -> vann_generator(Tree, Env, Ms, VI, Pid);
  +        binary_generator ->vann_binary_generator(Tree, Env, Ms, VI, Pid);
   	block_expr -> vann_block_expr(Tree, Env, Ms, VI, Pid);
   	macro -> vann_macro(Tree, Env, Ms, VI, Pid);
   	%% Added by HL, begin.
  
positive.code:     {E1, _, Free} = vann(E, Env, Ms, VI, Pid),
      Tree1 = rewrite(Tree, wrangler_syntax:generator(P1, E1)),
      {ann_bindings(Tree1, Env, Bound, Free), Bound, Free}.
  
  vann_block_expr(Tree, Env, Ms, VI, Pid) ->
      Es = wrangler_syntax:block_expr_body(Tree),
  
negative.code: vann_list_comp_body_join(Ms, VI, Pid) ->
      fun (T, {Env, Bound, Free}) ->
  	    {T1, Bound1, Free1} = case wrangler_syntax:type(T) of
                                      binary_generator ->
                                           vann_binary_generator(T, Env, Ms, VI, Pid);
  				    generator -> 
                                            vann_generator(T, Env, Ms, VI, Pid);
  				    _ ->
  					{T2, _, Free2} = vann(T, Env, Ms, VI, Pid),
  					{T2, [], Free2}
  