anchor.diff:      @init {
           initNameSpace(ctx,SCOPE_TOP(NameSpace));
       }
  -	:	pbj_header? (importrule|message|enum_def|flags_def|option_assignment)* (package (importrule|message|enum_def|flags_def|option_assignment)*)?
  +	:	pbj_header? (importrule|message|service|enum_def|flags_def|option_assignment)* (package (importrule|message|service|enum_def|flags_def|option_assignment)*)?
       {
       }
   	;
  
positive.code: 
  DOT :  '.';
  // Message elements
  MESSAGE	:	'message';
  EXTEND	:	'extend';
  EXTENSIONS : 'extensions';
  
negative.code:         }
  	;
  
  service: (SERVICE IDENTIFIER BLOCK_OPEN service_block* BLOCK_CLOSE -> )
    {
       fprintf(stderr,"warning: ignoring service \%s\n",$IDENTIFIER.text->chars);
    };
  service_block : RPC IDENTIFIER PAREN_OPEN service_args? PAREN_CLOSE RETURNS PAREN_OPEN IDENTIFIER PAREN_CLOSE ITEM_TERMINATOR ;
  
  service_args :IDENTIFIER (COMMA service_args)? ;
  
  //NOBRACE* ( BLOCK_OPEN service_block BLOCK_CLOSE NOBRACE*)? {};
  message
      scope {
          int isExtension;        
  