docs: public List<String> extractFeatSingle(int i, final String[] tokens, final String[] pos) {
          List<String> currentFeats = new ArrayList<>();
  
          for (int index = Math.max(0, i - 2); index < Math.min(i + 3, tokens.length); index++) { // [-2,2]
              IFeatureExtractor.addFeat(currentFeats, "w" + (index - i), tokens[index]);
              IFeatureExtractor.addFeat(currentFeats, "pos" + (index - i), pos[index]);
  
              if (index == i - 1) {
                  IFeatureExtractor.addFeat(currentFeats, "w-10", tokens[i - 1], tokens[i]);
                  IFeatureExtractor.addFeat(currentFeats, "pos-10", pos[i - 1], pos[i]);
              } else if (index == i + 1) {
                  IFeatureExtractor.addFeat(currentFeats, "w0+1", tokens[i], tokens[i + 1]);
                  IFeatureExtractor.addFeat(currentFeats, "pos0+1", pos[i], pos[i + 1]);
              } else if (index == i - 2) {
                  IFeatureExtractor.addFeat(currentFeats, "pos-2-1", pos[i - 2], pos[i - 1]);
                  IFeatureExtractor.addFeat(currentFeats, "pos-2-10", pos[i - 2], pos[i - 1], pos[i]);
              } else if (index == i + 2) {
                  IFeatureExtractor.addFeat(currentFeats, "pos+1+2", pos[i + 1], pos[i + 2]);
              }
  
              if (index == i - 1 && i < tokens.length - 1) {
                  IFeatureExtractor.addFeat(currentFeats, "pos-10+1", pos[i - 1], pos[i], pos[i + 1]);
              }
  
              if (index == i + 2) {
                  IFeatureExtractor.addFeat(currentFeats, "pos0+1+2", pos[i], pos[i + 1], pos[i + 2]);
              }
          }
  
          currentFeats.addAll(BrownFeatExtractor.extractBrownFeat(i, -2, 2, tokens));
          return currentFeats;
      }