anchor.diff:    #module{
       line  = ?line('$1'), 
       name  = element(3, '$2'), 
  -    exprs = begin validate_function_body('$4'), '$4' end
  +    exprs = begin validate_module_body('$4'), '$4' end
     }.
     
   %% Functions
  
positive.code:     Error
    end.
    
  %% Ensure a given function body contains only function defs
  validate_function_body([]) -> ok;
  validate_function_body([#function{}|Exprs]) ->
    validate_function_body(Exprs);
  validate_function_body([Expr|_]) ->
    throw({error, {element(2, Expr), "Arbitrary expressions not allowed in class/module bodies"}}).
    
  %% Interpolate strings, parsing the contents of #{...} tags
  interpolate_string(#string{line=Line, characters=Chars}) ->
    interpolate_string(Chars, Line, [], []).
  
negative.code:   #class{
      line  = ?line('$1'), 
      name  = ?identifier_name('$2'),
      exprs = begin validate_class_body('$3'), '$3' end
    }.
  class_decl -> class module_name '<' module_name methods 'end' : 
    #class{
      line   = ?line('$1'), 
      name   = ?identifier_name('$2'),
      parent = ?identifier_name('$4'),
      exprs  = begin validate_class_body('$5'), '$5' end
    }.
    
  %% Methods
  