anchor.diff:  unary_op -> '~'   : '$1'.
   
   %% Module declarations
  -module_decl -> module module_name eol 'end' : 
  -  #module{
  -    line      = ?line('$1'), 
  -    name      = element(3, '$2'), 
  -    functions = []
  -  }.
  -module_decl -> module module_name eol functions 'end' : 
  +module_decl -> module module_name eol def_exprs 'end' : 
     #module{
       line      = ?line('$1'), 
       name      = element(3, '$2'), 
  
positive.code:   }.
    
  %% Class declarations
  class_decl -> class module_name eol 'end' : 
    #class{
      line    = ?line('$1'), 
      name    = ?identifier_name('$2'), 
      methods = []
    }.
  class_decl -> class module_name eol functions 'end' : 
    #class{
      line    = ?line('$1'), 
      name    = ?identifier_name('$2'), 
      methods = '$4'
    }.
  class_decl -> class module_name '<' module_name eol 'end':
    #class{
      line       = ?line('$1'), 
      name       = ?identifier_name('$2'), 
      superclass = ?identifier_name('$4'),
      methods    = []
    }.
  class_decl -> class module_name '<' module_name eol functions 'end' : 
    #class{
      line       = ?line('$1'), 
      name       = ?identifier_name('$2'),
  
negative.code: 
  %% Remote function calls with indexes
  call -> call_expr '.' function_identifier '[' expr ']' :
    #binary_op{
      line = ?line('$1'),
      type = '[]',
      left = #remote_call{
          line     = ?line('$2'),
          receiver = '$1',
          name     = ?identifier_name('$3'),
          args     = []
        },
      right = '$5'
    }.
    
  