anchor.diff:  call_args_parens -> open_paren ')' : [].
   call_args_parens -> open_paren call_args close_paren : '$2'.
   
  -call_args_parens_many -> open_paren kw_base close_paren : ['$2'].
  -call_args_parens_many -> open_paren expr ',' call_args close_paren : ['$2'|'$4'].
  +call_args_parens_not_one -> open_paren ')' : [].
  +call_args_parens_not_one -> open_paren kw_base close_paren : ['$2'].
  +call_args_parens_not_one -> open_paren expr ',' call_args close_paren : ['$2'|'$4'].
   
   % KV
   
  
positive.code: block_expr -> dot_identifier call_args_no_parens do_block : build_identifier('$1', '$2' ++ '$3').
  
  fn_expr -> fn_paren call_args_parens fn_block : build_fn('$1', '$2', '$3').
  fn_expr -> fn call_args_no_parens fn_block : build_fn('$1', handle_empty_block('$2'), '$3').
  fn_expr -> fn call_args_parens_many fn_block : build_fn('$1', '$2', '$3').
  fn_expr -> fn fn_block : build_fn('$1', [], '$2').
  fn_expr -> call_expr : '$1'.
  
  
negative.code: stab_expr_list -> stab_expr_list eol stab_expr : ['$3'|'$1'].
  
  stab_expr -> expr : '$1'.
  stab_expr -> call_args_no_parens stab_op expr : build_op('$2', '$1', '$3').
  stab_expr -> call_args_parens_not_one stab_op expr : build_op('$2', '$1', '$3').
  
  block_item -> block_eol stab_expr_list eol : { ?exprs('$1'), build_stab(lists:reverse('$2')) }.
  block_item -> block_eol : { ?exprs('$1'), nil }.
  