docs: public final AntlrDatatypeRuleToken ruleInnerVarID() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_ID_0=null;
          Token kw=null;
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:9921:2: ( (this_ID_0= RULE_ID | kw= 'abstract' | kw= 'annotation' | kw= 'class' | kw= 'create' | kw= 'def' | kw= 'dispatch' | kw= 'enum' | kw= 'extends' | kw= 'final' | kw= 'implements' | kw= 'import' | kw= 'interface' | kw= 'override' | kw= 'package' | kw= 'public' | kw= 'private' | kw= 'protected' | kw= 'static' | kw= 'throws' | kw= 'strictfp' | kw= 'native' | kw= 'volatile' | kw= 'synchronized' | kw= 'transient' | kw= 'AFTER' | kw= 'BEFORE' | kw= 'SEPARATOR' ) )
              // InternalSARL.g:9922:2: (this_ID_0= RULE_ID | kw= 'abstract' | kw= 'annotation' | kw= 'class' | kw= 'create' | kw= 'def' | kw= 'dispatch' | kw= 'enum' | kw= 'extends' | kw= 'final' | kw= 'implements' | kw= 'import' | kw= 'interface' | kw= 'override' | kw= 'package' | kw= 'public' | kw= 'private' | kw= 'protected' | kw= 'static' | kw= 'throws' | kw= 'strictfp' | kw= 'native' | kw= 'volatile' | kw= 'synchronized' | kw= 'transient' | kw= 'AFTER' | kw= 'BEFORE' | kw= 'SEPARATOR' )
              {
              // InternalSARL.g:9922:2: (this_ID_0= RULE_ID | kw= 'abstract' | kw= 'annotation' | kw= 'class' | kw= 'create' | kw= 'def' | kw= 'dispatch' | kw= 'enum' | kw= 'extends' | kw= 'final' | kw= 'implements' | kw= 'import' | kw= 'interface' | kw= 'override' | kw= 'package' | kw= 'public' | kw= 'private' | kw= 'protected' | kw= 'static' | kw= 'throws' | kw= 'strictfp' | kw= 'native' | kw= 'volatile' | kw= 'synchronized' | kw= 'transient' | kw= 'AFTER' | kw= 'BEFORE' | kw= 'SEPARATOR' )
              int alt257=28;
              switch ( input.LA(1) ) {
              case RULE_ID:
                  {
                  alt257=1;
                  }
                  break;
              case 81:
                  {
                  alt257=2;
                  }
                  break;
              case 44:
                  {
                  alt257=3;
                  }
                  break;
              case 39:
                  {
                  alt257=4;
                  }
                  break;
              case 92:
                  {
                  alt257=5;
                  }
                  break;
              case 90:
                  {
                  alt257=6;
                  }
                  break;
              case 83:
                  {
                  alt257=7;
                  }
                  break;
              case 43:
                  {
                  alt257=8;
                  }
                  break;
              case 28:
                  {
                  alt257=9;
                  }
                  break;
              case 84:
                  {
                  alt257=10;
                  }
                  break;
              case 36:
                  {
                  alt257=11;
                  }
                  break;
              case 96:
                  {
                  alt257=12;
                  }
                  break;
              case 42:
                  {
                  alt257=13;
                  }
                  break;
              case 91:
                  {
                  alt257=14;
                  }
                  break;
              case 25:
                  {
                  alt257=15;
                  }
                  break;
              case 78:
                  {
                  alt257=16;
                  }
                  break;
              case 79:
                  {
                  alt257=17;
                  }
                  break;
              case 80:
                  {
                  alt257=18;
                  }
                  break;
              case 82:
                  {
                  alt257=19;
                  }
                  break;
              case 51:
                  {
                  alt257=20;
                  }
                  break;
              case 85:
                  {
                  alt257=21;
                  }
                  break;
              case 86:
                  {
                  alt257=22;
                  }
                  break;
              case 87:
                  {
                  alt257=23;
                  }
                  break;
              case 88:
                  {
                  alt257=24;
                  }
                  break;
              case 89:
                  {
                  alt257=25;
                  }
                  break;
              case 93:
                  {
                  alt257=26;
                  }
                  break;
              case 94:
                  {
                  alt257=27;
                  }
                  break;
              case 95:
                  {
                  alt257=28;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 257, 0, input);
  
                  throw nvae;
              }
  
              switch (alt257) {
                  case 1 :
                      // InternalSARL.g:9923:3: this_ID_0= RULE_ID
                      {
                      this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(this_ID_0);
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(this_ID_0, grammarAccess.getInnerVarIDAccess().getIDTerminalRuleCall_0());
                        		
                      }
  
                      }
                      break;
                  case 2 :
                      // InternalSARL.g:9931:3: kw= 'abstract'
                      {
                      kw=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getAbstractKeyword_1());
                        		
                      }
  
                      }
                      break;
                  case 3 :
                      // InternalSARL.g:9937:3: kw= 'annotation'
                      {
                      kw=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getAnnotationKeyword_2());
                        		
                      }
  
                      }
                      break;
                  case 4 :
                      // InternalSARL.g:9943:3: kw= 'class'
                      {
                      kw=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getClassKeyword_3());
                        		
                      }
  
                      }
                      break;
                  case 5 :
                      // InternalSARL.g:9949:3: kw= 'create'
                      {
                      kw=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getCreateKeyword_4());
                        		
                      }
  
                      }
                      break;
                  case 6 :
                      // InternalSARL.g:9955:3: kw= 'def'
                      {
                      kw=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getDefKeyword_5());
                        		
                      }
  
                      }
                      break;
                  case 7 :
                      // InternalSARL.g:9961:3: kw= 'dispatch'
                      {
                      kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getDispatchKeyword_6());
                        		
                      }
  
                      }
                      break;
                  case 8 :
                      // InternalSARL.g:9967:3: kw= 'enum'
                      {
                      kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getEnumKeyword_7());
                        		
                      }
  
                      }
                      break;
                  case 9 :
                      // InternalSARL.g:9973:3: kw= 'extends'
                      {
                      kw=(Token)match(input,28,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getExtendsKeyword_8());
                        		
                      }
  
                      }
                      break;
                  case 10 :
                      // InternalSARL.g:9979:3: kw= 'final'
                      {
                      kw=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getFinalKeyword_9());
                        		
                      }
  
                      }
                      break;
                  case 11 :
                      // InternalSARL.g:9985:3: kw= 'implements'
                      {
                      kw=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getImplementsKeyword_10());
                        		
                      }
  
                      }
                      break;
                  case 12 :
                      // InternalSARL.g:9991:3: kw= 'import'
                      {
                      kw=(Token)match(input,96,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getImportKeyword_11());
                        		
                      }
  
                      }
                      break;
                  case 13 :
                      // InternalSARL.g:9997:3: kw= 'interface'
                      {
                      kw=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getInterfaceKeyword_12());
                        		
                      }
  
                      }
                      break;
                  case 14 :
                      // InternalSARL.g:10003:3: kw= 'override'
                      {
                      kw=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getOverrideKeyword_13());
                        		
                      }
  
                      }
                      break;
                  case 15 :
                      // InternalSARL.g:10009:3: kw= 'package'
                      {
                      kw=(Token)match(input,25,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getPackageKeyword_14());
                        		
                      }
  
                      }
                      break;
                  case 16 :
                      // InternalSARL.g:10015:3: kw= 'public'
                      {
                      kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getPublicKeyword_15());
                        		
                      }
  
                      }
                      break;
                  case 17 :
                      // InternalSARL.g:10021:3: kw= 'private'
                      {
                      kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getPrivateKeyword_16());
                        		
                      }
  
                      }
                      break;
                  case 18 :
                      // InternalSARL.g:10027:3: kw= 'protected'
                      {
                      kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getProtectedKeyword_17());
                        		
                      }
  
                      }
                      break;
                  case 19 :
                      // InternalSARL.g:10033:3: kw= 'static'
                      {
                      kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getStaticKeyword_18());
                        		
                      }
  
                      }
                      break;
                  case 20 :
                      // InternalSARL.g:10039:3: kw= 'throws'
                      {
                      kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getThrowsKeyword_19());
                        		
                      }
  
                      }
                      break;
                  case 21 :
                      // InternalSARL.g:10045:3: kw= 'strictfp'
                      {
                      kw=(Token)match(input,85,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getStrictfpKeyword_20());
                        		
                      }
  
                      }
                      break;
                  case 22 :
                      // InternalSARL.g:10051:3: kw= 'native'
                      {
                      kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getNativeKeyword_21());
                        		
                      }
  
                      }
                      break;
                  case 23 :
                      // InternalSARL.g:10057:3: kw= 'volatile'
                      {
                      kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getVolatileKeyword_22());
                        		
                      }
  
                      }
                      break;
                  case 24 :
                      // InternalSARL.g:10063:3: kw= 'synchronized'
                      {
                      kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getSynchronizedKeyword_23());
                        		
                      }
  
                      }
                      break;
                  case 25 :
                      // InternalSARL.g:10069:3: kw= 'transient'
                      {
                      kw=(Token)match(input,89,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getTransientKeyword_24());
                        		
                      }
  
                      }
                      break;
                  case 26 :
                      // InternalSARL.g:10075:3: kw= 'AFTER'
                      {
                      kw=(Token)match(input,93,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getAFTERKeyword_25());
                        		
                      }
  
                      }
                      break;
                  case 27 :
                      // InternalSARL.g:10081:3: kw= 'BEFORE'
                      {
                      kw=(Token)match(input,94,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getBEFOREKeyword_26());
                        		
                      }
  
                      }
                      break;
                  case 28 :
                      // InternalSARL.g:10087:3: kw= 'SEPARATOR'
                      {
                      kw=(Token)match(input,95,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getInnerVarIDAccess().getSEPARATORKeyword_27());
                        		
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }