docs: public final void mRULE_COMMENT_RICH_TEXT_INBETWEEN() throws RecognitionException {
          try {
              int _type = RULE_COMMENT_RICH_TEXT_INBETWEEN;
              int _channel = DEFAULT_TOKEN_CHANNEL;
              // InternalSARL.g:48777:34: ( '\\uFFFD\\uFFFD' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' ( RULE_IN_RICH_STRING )* ( '\\'' ( '\\'' )? )? '\\uFFFD' )? )
              // InternalSARL.g:48777:36: '\\uFFFD\\uFFFD' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' ( RULE_IN_RICH_STRING )* ( '\\'' ( '\\'' )? )? '\\uFFFD' )?
              {
              match("\uFFFD\uFFFD"); 
  
              // InternalSARL.g:48777:51: (~ ( ( '\\n' | '\\r' ) ) )*
              loop22:
              do {
                  int alt22=2;
                  int LA22_0 = input.LA(1);
  
                  if ( ((LA22_0>='\u0000' && LA22_0<='\t')||(LA22_0>='\u000B' && LA22_0<='\f')||(LA22_0>='\u000E' && LA22_0<='\uFFFF')) ) {
                      alt22=1;
                  }
  
  
                  switch (alt22) {
              	case 1 :
              	    // InternalSARL.g:48777:51: ~ ( ( '\\n' | '\\r' ) )
              	    {
              	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
              	        input.consume();
  
              	    }
              	    else {
              	        MismatchedSetException mse = new MismatchedSetException(null,input);
              	        recover(mse);
              	        throw mse;}
  
  
              	    }
              	    break;
  
              	default :
              	    break loop22;
                  }
              } while (true);
  
              // InternalSARL.g:48777:67: ( ( '\\r' )? '\\n' ( RULE_IN_RICH_STRING )* ( '\\'' ( '\\'' )? )? '\\uFFFD' )?
              int alt27=2;
              int LA27_0 = input.LA(1);
  
              if ( (LA27_0=='\n'||LA27_0=='\r') ) {
                  alt27=1;
              }
              switch (alt27) {
                  case 1 :
                      // InternalSARL.g:48777:68: ( '\\r' )? '\\n' ( RULE_IN_RICH_STRING )* ( '\\'' ( '\\'' )? )? '\\uFFFD'
                      {
                      // InternalSARL.g:48777:68: ( '\\r' )?
                      int alt23=2;
                      int LA23_0 = input.LA(1);
  
                      if ( (LA23_0=='\r') ) {
                          alt23=1;
                      }
                      switch (alt23) {
                          case 1 :
                              // InternalSARL.g:48777:68: '\\r'
                              {
                              match('\r'); 
  
                              }
                              break;
  
                      }
  
                      match('\n'); 
                      // InternalSARL.g:48777:79: ( RULE_IN_RICH_STRING )*
                      loop24:
                      do {
                          int alt24=2;
                          int LA24_0 = input.LA(1);
  
                          if ( (LA24_0=='\'') ) {
                              int LA24_1 = input.LA(2);
  
                              if ( (LA24_1=='\'') ) {
                                  int LA24_4 = input.LA(3);
  
                                  if ( ((LA24_4>='\u0000' && LA24_4<='&')||(LA24_4>='(' && LA24_4<='\uFFFC')||(LA24_4>='\uFFFE' && LA24_4<='\uFFFF')) ) {
                                      alt24=1;
                                  }
  
  
                              }
                              else if ( ((LA24_1>='\u0000' && LA24_1<='&')||(LA24_1>='(' && LA24_1<='\uFFFC')||(LA24_1>='\uFFFE' && LA24_1<='\uFFFF')) ) {
                                  alt24=1;
                              }
  
  
                          }
                          else if ( ((LA24_0>='\u0000' && LA24_0<='&')||(LA24_0>='(' && LA24_0<='\uFFFC')||(LA24_0>='\uFFFE' && LA24_0<='\uFFFF')) ) {
                              alt24=1;
                          }
  
  
                          switch (alt24) {
                      	case 1 :
                      	    // InternalSARL.g:48777:79: RULE_IN_RICH_STRING
                      	    {
                      	    mRULE_IN_RICH_STRING(); 
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop24;
                          }
                      } while (true);
  
                      // InternalSARL.g:48777:100: ( '\\'' ( '\\'' )? )?
                      int alt26=2;
                      int LA26_0 = input.LA(1);
  
                      if ( (LA26_0=='\'') ) {
                          alt26=1;
                      }
                      switch (alt26) {
                          case 1 :
                              // InternalSARL.g:48777:101: '\\'' ( '\\'' )?
                              {
                              match('\''); 
                              // InternalSARL.g:48777:106: ( '\\'' )?
                              int alt25=2;
                              int LA25_0 = input.LA(1);
  
                              if ( (LA25_0=='\'') ) {
                                  alt25=1;
                              }
                              switch (alt25) {
                                  case 1 :
                                      // InternalSARL.g:48777:106: '\\''
                                      {
                                      match('\''); 
  
                                      }
                                      break;
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      match('\uFFFD'); 
  
                      }
                      break;
  
              }
  
  
              }
  
              state.type = _type;
              state.channel = _channel;
          }
          finally {
          }
      }