// $ANTLR start "lengthScheme"
  // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:185:1: lengthScheme returns [Integer length] : 'length=' INT ;
  public final Integer lengthScheme() throws RecognitionException {
    Integer length = null;

    Token INT11 = null;

    try {
      // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:186:2: ( 'length=' INT )
      // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:186:4: 'length=' INT
      {
        match(input, 15, FOLLOW_15_in_lengthScheme369);

        INT11 = (Token) match(input, INT, FOLLOW_INT_in_lengthScheme371);

        length = Integer.valueOf((INT11 != null ? INT11.getText() : null));
      }

    } catch (RecognitionException e) {
      throw e;
    } finally {
      // do for sure before leaving
    }
    return length;
  }
  // $ANTLR start "md5Scheme"
  // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:193:1: md5Scheme returns [String md5] : 'md5=' MD5VALUE ;
  public final String md5Scheme() throws RecognitionException {
    String md5 = null;

    Token MD5VALUE12 = null;

    try {
      // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:194:2: ( 'md5=' MD5VALUE )
      // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:194:4: 'md5=' MD5VALUE
      {
        match(input, 16, FOLLOW_16_in_md5Scheme397);

        MD5VALUE12 = (Token) match(input, MD5VALUE, FOLLOW_MD5VALUE_in_md5Scheme399);

        md5 = (MD5VALUE12 != null ? MD5VALUE12.getText() : null);
      }

    } catch (RecognitionException e) {
      throw e;
    } finally {
      // do for sure before leaving
    }
    return md5;
  }
  // $ANTLR start "range"
  // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:160:1: range returns [Range range] : ( (position1= position (comma1= ',' | (comma2= ',' position2= position ) )? ) | ( ',' position ) );
  public final Range range() throws RecognitionException {
    Range range = null;

    Token comma1 = null;
    Token comma2 = null;
    URIFragmentIdentifierPlainTextParser.position_return position1 = null;

    URIFragmentIdentifierPlainTextParser.position_return position2 = null;

    try {
      // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:2: ( (position1= position (comma1= ',' | (comma2= ',' position2= position ) )? ) | ( ',' position ) )
      int alt7 = 2;
      int LA7_0 = input.LA(1);

      if ((LA7_0 == INT)) {
        alt7 = 1;
      } else if ((LA7_0 == 12)) {
        alt7 = 2;
      } else {
        NoViableAltException nvae = new NoViableAltException("", 7, 0, input);

        throw nvae;
      }
      switch (alt7) {
        case 1:
          // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:4: (position1= position (comma1= ',' | (comma2= ',' position2= position ) )? )
          {
            // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:4: (position1= position (comma1= ',' | (comma2= ',' position2= position ) )? )
            // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:5: position1= position (comma1= ',' | (comma2= ',' position2= position ) )?
            {
              pushFollow(FOLLOW_position_in_range304);
              position1 = position();

              state._fsp--;

              // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:24: (comma1= ',' | (comma2= ',' position2= position ) )?
              int alt6 = 3;
              int LA6_0 = input.LA(1);

              if ((LA6_0 == 12)) {
                int LA6_1 = input.LA(2);

                if ((LA6_1 == EOF || LA6_1 == 13)) {
                  alt6 = 1;
                } else if ((LA6_1 == INT)) {
                  alt6 = 2;
                }
              }
              switch (alt6) {
                case 1:
                  // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:25: comma1= ','
                  {
                    comma1 = (Token) match(input, 12, FOLLOW_12_in_range309);
                  }
                  break;
                case 2:
                  // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:38: (comma2= ',' position2= position )
                  {
                    // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:38: (comma2= ',' position2= position )
                    // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:161:39: comma2= ',' position2= position
                    {
                      comma2 = (Token) match(input, 12, FOLLOW_12_in_range316);

                      pushFollow(FOLLOW_position_in_range320);
                      position2 = position();

                      state._fsp--;
                    }
                  }
                  break;
              }
            }

            int pos1 =
                Integer.valueOf(
                    (position1 != null ? input.toString(position1.start, position1.stop) : null));
            int pos2 = -1;

            if ((comma2 != null ? comma2.getText() : null) != null) {
              pos2 =
                  Integer.valueOf(
                      (position2 != null ? input.toString(position2.start, position2.stop) : null));
            }

            range = new Range(pos1, pos2);
          }
          break;
        case 2:
          // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:174:5: ( ',' position )
          {
            // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:174:5: ( ',' position )
            // C:\\data\\eclipse_workspace\\clea\\grammars\\pointertarget\\URIFragmentIdentifierPlainText.g:174:6: ',' position
            {
              match(input, 12, FOLLOW_12_in_range335);

              pushFollow(FOLLOW_position_in_range337);
              position();

              state._fsp--;
            }

            int pos1 =
                Integer.valueOf(
                    (position1 != null ? input.toString(position1.start, position1.stop) : null));

            range = new Range(0, pos1);
          }
          break;
      }
    } catch (RecognitionException e) {
      throw e;
    } finally {
      // do for sure before leaving
    }
    return range;
  }