code: public void removeReading(AnalyzedToken token) {
      List<AnalyzedToken> l = new ArrayList<>();
      AnalyzedToken tmpTok = new AnalyzedToken(token.getToken(), token.getPOSTag(), token.getLemma());
      tmpTok.setWhitespaceBefore(isWhitespaceBefore);
      boolean removedSentEnd = false;
      boolean removedParaEnd = false;
      for (AnalyzedToken anTokReading : anTokReadings) {
        if (!anTokReading.matches(tmpTok)) {
          l.add(anTokReading);
        } else if (SENTENCE_END_TAGNAME.equals(anTokReading.getPOSTag())) {
          removedSentEnd = true;
        } else if (PARAGRAPH_END_TAGNAME.equals(anTokReading.getPOSTag())) {
          removedParaEnd = true;
        }
      }
      if (l.isEmpty()) {
        l.add(new AnalyzedToken(this.token, null, null));
        l.get(0).setWhitespaceBefore(isWhitespaceBefore);
      }
      anTokReadings = l.toArray(new AnalyzedToken[0]);
      setNoRealPOStag();
      if (removedSentEnd) {
        isSentEnd = false;
        setSentEnd();
      }
      if (removedParaEnd) {
        isParaEnd = false;
        setParagraphEnd();
      }
      hasSameLemmas = areLemmasSame();
    }
docs: Removes a reading from the list of readings. Note: if the token
  has only one reading, then a new reading with an empty POS tag
  and an empty lemma is created.
  @param token reading to be removed