anchor.diff:    }.
     
   %% Class declarations
  -class_decl -> class module_name def_exprs 'end' : 
  +class_decl -> class module_name functions 'end' : 
     #class{
       line  = ?line('$1'), 
       name  = ?identifier_name('$2'),
       exprs = begin validate_function_body('$3'), '$3' end
     }.
  -class_decl -> class module_name '<' module_name def_exprs 'end' : 
  +class_decl -> class module_name '<' module_name functions 'end' : 
     #class{
       line   = ?line('$1'), 
       name   = ?identifier_name('$2'),
  
positive.code:     block = '$3'#args.block,
      body  = '$5'
    }.
  def_expr -> expr : '$1'.
  
  %% Valid method names
  method_name -> function_identifier : ?identifier_name('$1').
  method_name -> '[' ']' : '[]'.
  method_name -> '[' ']' '=' : '[]='.
  
  %% Function identifiers
  function_identifier -> identifier : '$1'.
  
negative.code:   unary_op
    module_decl
    class_decl
    functions
    function
    body
    args
    args_tail
  