docs: 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;
      }