anchor.diff:      }
       ;
   
  -message_elements
  +at_least_one_message_element
       scope Symbols;
       @init
       {
           initSymbolTable(SCOPE_TOP(Symbols), $message::messageName, $message::isExtension);  
       }
  -	:	message_element*
  +	:	message_element zero_or_more_message_elements
       {
           if($message::isExtension) {
               defineExtensionEnd(ctx, $message::messageName);
  
positive.code:         int isExtension;        
          pANTLR3_STRING messageName;
      }    
      :   ( message_not_extend message_identifier BLOCK_OPEN message_elements BLOCK_CLOSE 
             -> {ctx->pProtoJSParser_SymbolsStack_limit<=1}?
                    IDENTIFIER[$NameSpace::packageDot->chars] message_identifier WS[" "] EQUALS["="] WS[" "] QUALIFIEDIDENTIFIER["PROTO.Message"] PAREN_OPEN["("] QUOTE["\""] QUALIFIEDIDENTIFIER[qualifyType(ctx,$message_not_extend.text,$message_identifier.text)] QUOTE["\""] COMMA[","] BLOCK_OPEN WS["\n"] message_elements BLOCK_CLOSE PAREN_CLOSE[")"] ITEM_TERMINATOR[";"] WS["\n"]
                    -> message_identifier WS[" "] COLON[":"] WS[" "] QUALIFIEDIDENTIFIER["PROTO.Message"] PAREN_OPEN["("] QUOTE["\""] QUALIFIEDIDENTIFIER[qualifyType(ctx,$message_not_extend.text,$message_identifier.text)] QUOTE["\""] COMMA[","] BLOCK_OPEN WS["\n"] message_elements BLOCK_CLOSE PAREN_CLOSE[")"] COMMA[","] WS["\n"] )
          {
              if(!$message::isExtension) {
                  defineType( ctx, $message::messageName ,TYPE_ISMESSAGE);
  
negative.code:             $flags_def::flagName=stringDup($IDENTIFIER.text);
          }
  	;
  at_least_one_flag_element: flag_element zero_or_more_flag_elements;
  
  zero_or_more_flag_elements : (flag_element* -> (COMMA[","] WS["\n"] flag_element)*);
  flag_element
  	:	( IDENTIFIER EQUALS integer ITEM_TERMINATOR -> WS["\t"] WS["\t"] IDENTIFIER WS[" "] COLON[":"] WS[" "] integer)
          {
              defineFlagValue( ctx, $message::messageName, $flags_def::flagName, $flags_def::flagList, $IDENTIFIER.text , $integer.text);
          }
  