code: @Override
      public boolean incrementToken() throws IOException {
          final ArrayDeque<String> tokens = getTokens();
          final CharTermAttribute termAtt = getTermAtt();
          if (tokens.isEmpty()) {
              String[] parts;
              skipCounter = 0;
              while (input.incrementToken()) {
                  final String text = new String(termAtt.buffer(), 0, termAtt.length());
                  if (text.isEmpty()) {
                      return true;
                  }
                  parts = text.split("[^a-zA-Z0-9]");
                  if (parts.length == 0) {
                      skipCounter += posIncrAttribute.getPositionIncrement();
                  } else {
                      if (skipCounter != 0) {
                          posIncrAttribute.setPositionIncrement(posIncrAttribute.getPositionIncrement() + skipCounter);
                      }
                      for (String part : parts) {
                          if (!part.isEmpty()) {
                              tokens.add(part);
                          }
                      }
                      break;
                  }
              }
          }
          return addTerm();
      }
docs: {@inheritDoc}