code: public boolean matches( int[] typesForNextTokens ) throws IllegalStateException {
          if (completed) return false;
          ListIterator<Token> iter = tokens.listIterator(tokenIterator.previousIndex());
          Token token = null;
          for (int nextExpectedType : typesForNextTokens) {
              if (!iter.hasNext()) return false;
              token = iter.next();
              if (nextExpectedType == ANY_TYPE) continue;
              if (!token.matches(nextExpectedType)) return false;
          }
          return true;
      }
docs: Determine if the next few tokens have the supplied types.
  <p>
  The {@link #ANY_TYPE ANY_TYPE} constant can be used in the expected values as a wildcard.
  </p>
  
  @param typesForNextTokens the expected type for each of the next tokens
  @return true if the tokens did match, or false otherwise
  @throws IllegalStateException if this method was called before the stream was {@link #start() started}