### Question:
AttrHistoricalSingle extends AttrHistorical { @Override public void assign(HistAttrModificationKey histKey, ByteString value, CSN csn) { switch (histKey) { case ADD: this.addTime = csn; this.value = value; break; case DEL: this.deleteTime = csn; if (value != null) { this.value = value; } break; case REPL: this.addTime = this.deleteTime = csn; if (value != null) { this.value = value; } break; case ATTRDEL: this.deleteTime = csn; break; } }  @Override CSN getDeleteTime(); @Override Set<AttrValueHistorical> getValuesHistorical(); @Override void processLocalOrNonConflictModification(CSN csn, Modification mod); @Override boolean replayOperation(Iterator<Modification> modsIterator, CSN csn,
      Entry modifiedEntry, Modification mod); @Override void assign(HistAttrModificationKey histKey, ByteString value, CSN csn); @Override String toString();  }### Answer:
@Test public void replay_deleteDubious() throws Exception { HistoricalAttributeValue histAttrVal = new HistoricalAttributeValue("display:" + csn + ":add:X"); attrHist.assign(histAttrVal.getHistKey(), histAttrVal.getAttributeValue(), csn); mod = newModification(ADD, "X"); entry.applyModification(mod); assertAttributeValue(entry, "X"); mod = newModification(DELETE, "Y"); replayOperationSuppressMod(csn, entry, mod, CONFLICT); assertAttributeValue(entry, "X"); }