anchor.diff:                  
               message.addAnnotations(proto.annotations, true);
           } 
  -        LEFTCURLY (message_body[proto, message])* RIGHTCURLY
  +        LEFTCURLY (message_body[proto, message])* RIGHTCURLY {
  +            if(!proto.annotations.isEmpty())
  +                throw new IllegalStateException("Misplaced annotations: " + proto.annotations);
  +        }
       ;
   
   message_body [Proto proto, Message message]
  
positive.code:         (service_body[proto, service])+ RIGHTCURLY (SEMICOLON?)! {
              if(service.rpcMethods.isEmpty())
                  throw new IllegalStateException("Empty Service block: " + service.getName());
          }
      ;
      
  
negative.code: 
  header_syntax [Proto proto]
      :   SYNTAX ASSIGN STRING_LITERAL SEMICOLON! {
              if(!"proto2".equals(getStringFromStringLiteral($STRING_LITERAL.text))) {
                  throw new IllegalStateException("Syntax isn't proto2: '" +
                    getStringFromStringLiteral($STRING_LITERAL.text)+"'");
              }
                    
              if(!proto.annotations.isEmpty())
                  throw new IllegalStateException("Misplaced annotations: " + proto.annotations);
  