anchor.diff:  list_generator -> for fat_arrow_expr in bool_expr if bool_expr :
       Line = line('$1'),
       [{generate, Line, '$2', '$4'},'$6'].
  +
  +bin_generators -> bin_generator bin_generators: ['$1'|'$2'].
  +bin_generators -> bin_generator                : '$1'.
  +
  +bin_generator -> for fat_arrow_expr larrow bool_expr:
  +    Line = line('$1'),
  +    [{b_generate, Line, '$2', '$4'}].
  +
  +bin_generator -> for fat_arrow_expr larrow bool_expr if bool_expr :
  +    Line = line('$1'),
  +    [{b_generate, Line, '$2', '$4'},'$6'].
   
   % records
   
  
positive.code:     case_expr case_body case_patterns case_pattern try_expr catch_patterns
      catch_pattern recv_expr receive_patterns receive_pattern list list_items
      tuple tuple_items fun_call farity arrow_chains arrow_chain list_comp
      list_generator list_generators bin_comp rec rec_set rec_new attr_sets
      attr_set binary binary_items binary_item bin_type_def bin_type prefix_op
      attribute for_expr range signed_integer meta_block astify meta_astify attrs
      fat_arrow_expr struct struct_items struct_item struct_get struct_set
      struct_attrs struct_attr struct_call.
  
  Terminals
      fn match set open close open_block close_block integer float string var
  
negative.code: 
  list_comp -> open_list match_expr list_generators close_list : {lc, line('$1'), '$2', lists:flatten('$3')}.
  bin_comp  -> open_bin match_expr list_generators close_bin   : {bc, line('$1'), '$2', lists:flatten('$3')}.
  bin_comp  -> open_bin match_expr bin_generators close_bin   : {bc, line('$1'), '$2', lists:flatten('$3')}.
  
  list_generators -> list_generator list_generators: ['$1'|'$2'].
  list_generators -> list_generator                : '$1'.
  