@SuppressWarnings("unchecked") protected void sequentially(Consumer<Marker>... functions){
  if (functions == null || functions.length == 0)   return;
  Collection<ParsingException> errors=new ArrayList<>();
  Marker marker=tokens.mark();
  for (  Consumer<Marker> function : functions) {
    try {
      function.accept(marker);
      return;
    }
 catch (    ParsingException e) {
      errors.add(e);
      tokens.rewind(marker);
    }
  }
  parsingFailed(marker.position(),errors,"Unable to parse statement");
}

@ SuppressWarnings ( "unchecked" ) protected void sequentially ( Consumer < Marker > ... functions ) { if ( functions == null || functions . length == 0 ) return ; Collection < ParsingException > errors = new ArrayList < > ( ) ; Marker marker = tokens . mark ( ) ; for ( Consumer < Marker > function : functions ) { try { function . accept ( marker ) ; return ; } catch ( ParsingException e ) { errors . add ( e ) ; tokens . rewind ( marker ) ; } } parsingFailed ( marker . position ( ) , errors , "Unable to parse statement" ) ; }
try calling the supplied functions in sequence , stopping as soon as one of them succeeds .
