code: public final void startNextToken() {
      featuresFound = new ArrayList<>(tmpFeaturesFound);
      readingsCounter++;
      // Removes features
      for (int j = 0; j < tokSequence.size(); j++) {
        for (int i = 0; i < tokSequenceEquivalences.get(j).size(); i++) {
          for (Map.Entry<String, List<String>> feat : equivalenceFeatures.entrySet()) {
            if (!UNIFY_IGNORE.equals(feat.getKey())) {
              if (tokSequenceEquivalences.get(j).get(i).containsKey(feat.getKey())) {
                if (equivalencesToBeKept.containsKey(feat.getKey())) {
                  tokSequenceEquivalences.get(j).get(i).get(feat.getKey()).retainAll(equivalencesToBeKept.get(feat.getKey()));
                } else {
                  tokSequenceEquivalences.get(j).get(i).remove(feat.getKey());
                }
              } else {
                tokSequenceEquivalences.get(j).get(i).remove(feat.getKey());
              }
            }
          }
        }
      }
      equivalencesToBeKept.clear();
    }
docs: Call after every complete token (AnalyzedTokenReadings) checked.