docs: public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:12901:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
              // InternalSARL.g:12902:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
              {
              // InternalSARL.g:12902:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
              int alt311=9;
              alt311 = dfa311.predict(input);
              switch (alt311) {
                  case 1 :
                      // InternalSARL.g:12903:3: kw= '->'
                      {
                      kw=(Token)match(input,120,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0());
                        		
                      }
  
                      }
                      break;
                  case 2 :
                      // InternalSARL.g:12909:3: kw= '..<'
                      {
                      kw=(Token)match(input,121,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1());
                        		
                      }
  
                      }
                      break;
                  case 3 :
                      // InternalSARL.g:12915:3: (kw= '>' kw= '..' )
                      {
                      // InternalSARL.g:12915:3: (kw= '>' kw= '..' )
                      // InternalSARL.g:12916:4: kw= '>' kw= '..'
                      {
                      kw=(Token)match(input,41,FOLLOW_120); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				current.merge(kw);
                        				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
                        			
                      }
                      kw=(Token)match(input,122,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				current.merge(kw);
                        				newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1());
                        			
                      }
  
                      }
  
  
                      }
                      break;
                  case 4 :
                      // InternalSARL.g:12928:3: kw= '..'
                      {
                      kw=(Token)match(input,122,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3());
                        		
                      }
  
                      }
                      break;
                  case 5 :
                      // InternalSARL.g:12934:3: kw= '=>'
                      {
                      kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4());
                        		
                      }
  
                      }
                      break;
                  case 6 :
                      // InternalSARL.g:12940:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                      {
                      // InternalSARL.g:12940:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                      // InternalSARL.g:12941:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                      {
                      kw=(Token)match(input,41,FOLLOW_121); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				current.merge(kw);
                        				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
                        			
                      }
                      // InternalSARL.g:12946:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                      int alt309=2;
                      int LA309_0 = input.LA(1);
  
                      if ( (LA309_0==41) ) {
                          int LA309_1 = input.LA(2);
  
                          if ( (LA309_1==EOF||(LA309_1>=RULE_STRING && LA309_1<=RULE_RICH_TEXT_START)||(LA309_1>=RULE_HEX && LA309_1<=RULE_DECIMAL)||(LA309_1>=25 && LA309_1<=26)||(LA309_1>=28 && LA309_1<=30)||LA309_1==36||(LA309_1>=39 && LA309_1<=40)||(LA309_1>=42 && LA309_1<=46)||(LA309_1>=48 && LA309_1<=49)||(LA309_1>=51 && LA309_1<=55)||(LA309_1>=57 && LA309_1<=58)||(LA309_1>=60 && LA309_1<=63)||(LA309_1>=65 && LA309_1<=68)||(LA309_1>=73 && LA309_1<=75)||(LA309_1>=78 && LA309_1<=96)||(LA309_1>=105 && LA309_1<=106)||LA309_1==129||(LA309_1>=131 && LA309_1<=140)) ) {
                              alt309=2;
                          }
                          else if ( (LA309_1==41) && (synpred37_InternalSARL())) {
                              alt309=1;
                          }
                          else {
                              if (state.backtracking>0) {state.failed=true; return current;}
                              NoViableAltException nvae =
                                  new NoViableAltException("", 309, 1, input);
  
                              throw nvae;
                          }
                      }
                      else {
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 309, 0, input);
  
                          throw nvae;
                      }
                      switch (alt309) {
                          case 1 :
                              // InternalSARL.g:12947:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                              {
                              // InternalSARL.g:12947:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                              // InternalSARL.g:12948:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                              {
                              // InternalSARL.g:12953:6: (kw= '>' kw= '>' )
                              // InternalSARL.g:12954:7: kw= '>' kw= '>'
                              {
                              kw=(Token)match(input,41,FOLLOW_121); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                							current.merge(kw);
                                							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0());
                                						
                              }
                              kw=(Token)match(input,41,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                							current.merge(kw);
                                							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1());
                                						
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
                          case 2 :
                              // InternalSARL.g:12967:5: kw= '>'
                              {
                              kw=(Token)match(input,41,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                					current.merge(kw);
                                					newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1());
                                				
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 7 :
                      // InternalSARL.g:12975:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                      {
                      // InternalSARL.g:12975:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                      // InternalSARL.g:12976:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                      {
                      kw=(Token)match(input,40,FOLLOW_122); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        				current.merge(kw);
                        				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
                        			
                      }
                      // InternalSARL.g:12981:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                      int alt310=3;
                      int LA310_0 = input.LA(1);
  
                      if ( (LA310_0==40) ) {
                          int LA310_1 = input.LA(2);
  
                          if ( (synpred38_InternalSARL()) ) {
                              alt310=1;
                          }
                          else if ( (true) ) {
                              alt310=2;
                          }
                          else {
                              if (state.backtracking>0) {state.failed=true; return current;}
                              NoViableAltException nvae =
                                  new NoViableAltException("", 310, 1, input);
  
                              throw nvae;
                          }
                      }
                      else if ( (LA310_0==76) ) {
                          alt310=3;
                      }
                      else {
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 310, 0, input);
  
                          throw nvae;
                      }
                      switch (alt310) {
                          case 1 :
                              // InternalSARL.g:12982:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                              {
                              // InternalSARL.g:12982:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                              // InternalSARL.g:12983:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                              {
                              // InternalSARL.g:12988:6: (kw= '<' kw= '<' )
                              // InternalSARL.g:12989:7: kw= '<' kw= '<'
                              {
                              kw=(Token)match(input,40,FOLLOW_91); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                							current.merge(kw);
                                							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0());
                                						
                              }
                              kw=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                							current.merge(kw);
                                							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
                                						
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
                          case 2 :
                              // InternalSARL.g:13002:5: kw= '<'
                              {
                              kw=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                					current.merge(kw);
                                					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
                                				
                              }
  
                              }
                              break;
                          case 3 :
                              // InternalSARL.g:13008:5: kw= '=>'
                              {
                              kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                					current.merge(kw);
                                					newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2());
                                				
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 8 :
                      // InternalSARL.g:13016:3: kw= '<>'
                      {
                      kw=(Token)match(input,123,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7());
                        		
                      }
  
                      }
                      break;
                  case 9 :
                      // InternalSARL.g:13022:3: kw= '?:'
                      {
                      kw=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			current.merge(kw);
                        			newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8());
                        		
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }