anchor.diff:      line  = ?line('$2'), 
       name  = ?identifier_name('$1')
     }.
  -
   call -> function_identifier '(' exprs ')' :
     #local_call{
       line = ?line('$2'), 
       name = ?identifier_name('$1'), 
       args = '$3'
  +  }.
  +  
  +%% Local function calls with blocks
  +call -> function_identifier block : 
  +  #local_call{
  +    line  = ?line('$2'), 
  +    name  = ?identifier_name('$1'), 
  +    block = '$2'
  +  }.
  +call -> function_identifier '(' ')' block : 
  +  #local_call{
  +    line  = ?line('$2'), 
  +    name  = ?identifier_name('$1'), 
  +    block = '$4'
  +  }.
  +call -> function_identifier '(' exprs ')' block : 
  +  #local_call{
  +    line  = ?line('$2'), 
  +    name  = ?identifier_name('$1'), 
  +    args  = '$3', 
  +    block = '$5'
     }.
   
   %% Remote function calls
  
positive.code:     module    = erlang,
      function  = ?identifier_name('$3')
    }.
  
  call -> erl '.' identifier '(' exprs ')' :
    #native_call{
      line      = ?line('$2'),
  
negative.code:     receiver = '$1',
      name     = ?identifier_name('$3')
    }.
  call -> call_expr '.' function_identifier '(' exprs ')' :
    #remote_call{
      line     = ?line('$2'),
  