Mark skipUntil(String limit) throws JasperException {
  Mark ret=null;
  int limlen=limit.length();
  int ch;
  skip:   for (ret=mark(), ch=nextChar(); ch != -1; ret=mark(), ch=nextChar()) {
    if (ch == limit.charAt(0)) {
      Mark restart=mark();
      for (int i=1; i < limlen; i++) {
        if (peekChar() == limit.charAt(i))         nextChar();
 else {
          reset(restart);
          continue skip;
        }
      }
      return ret;
    }
  }
  return null;
}

Mark skipUntil ( String limit ) throws JasperException { Mark ret = null ; int limlen = limit . length ( ) ; int ch ; skip : for ( ret = mark ( ) , ch = nextChar ( ) ; ch != - 1 ; ret = mark ( ) , ch = nextChar ( ) ) { if ( ch == limit . charAt ( 0 ) ) { Mark restart = mark ( ) ; for ( int i = 1 ; i < limlen ; i ++ ) { if ( peekChar ( ) == limit . charAt ( i ) ) nextChar ( ) ; else { reset ( restart ) ; continue skip ; } } return ret ; } } return null ; }
skip until the given string is matched in the stream . when returned , the context is positioned past the end of the match .
