docs: public IWord next() throws IOException
      {
          if ( eWordPool.size() > 0 ) {
              return eWordPool.removeFirst();
          }
  
          IWord word = super.next();
          if ( word == null ) {
              return null;
          }
  
          String[] entity = word.getEntity();
  
          /*
           * This is a temporary program for
           * the_number or the_episode entity recognition.
           * ignore this if the entity is not null
           * added at 2017/05/25
          */
          if ( entity == null && word.getValue().charAt(0) == '第' ) {
              IWord dWord = getNextTheWord(word);
              if ( dWord != null ) {
                  dWord.setPartSpeech(IWord.QUANTIFIER);
                  return dWord;
              }
          }
  
          if ( entity == null ) {
              return word;
          }
  
          int eIdx = 0;
          if ( (eIdx = ArrayUtil.startsWith("time.a", entity)) > -1
          		|| (eIdx = ArrayUtil.startsWith(
          				Entity.E_DATETIME_P, entity)) > -1 ) {
              IWord dWord = getNextTimeMergedWord(word, eIdx);
              if ( dWord != null ) {
                  return dWord;
              }
          }
  
          if ( (eIdx = ArrayUtil.startsWith("datetime.ymd", entity)) > -1 ) {
              IWord dWord = getNextDatetimeWord(word, eIdx);
              if ( dWord != null ) {
                  return dWord;
              }
          }
  
          return word;
      }