### Question:
MultiDomainServerState implements Iterable<DN> { public boolean removeCSN(DN baseDN, CSN expectedCSN) { final ServerState ss = list.get(baseDN); return ss != null && ss.removeCSN(expectedCSN); } MultiDomainServerState();  MultiDomainServerState(MultiDomainServerState cookie);  MultiDomainServerState(String cookie); void clear(); boolean update(DN baseDN, CSN csn); void update(DN baseDN, ServerState serverState); void replace(DN baseDN, ServerState serverState); void update(MultiDomainServerState state); Map<DN, List<CSN>> getSnapshot(); @Override String toString(); void toString(StringBuilder buffer); boolean isEmpty(); @Override Iterator<DN> iterator(); ServerState getServerState(DN baseDN); CSN getCSN(DN baseDN, int serverId); Pair<DN, CSN> getOldestCSNExcluding(MultiDomainServerState excludedCSNs); boolean removeCSN(DN baseDN, CSN expectedCSN); boolean equalsTo(MultiDomainServerState other); boolean cover(MultiDomainServerState covered); boolean cover(DN baseDN, CSN csn);  }### Answer:
@Test(dependsOnMethods = { "testUpdateCSN" }) public void testRemoveCSN() throws Exception { final MultiDomainServerState state = getLastAliveCSNs(); assertNull(state.getCSN(dn3, 42)); assertFalse(state.removeCSN(dn3, csn1)); assertSame(csn1, state.getCSN(dn1, csn1.getServerId())); assertSame(csn1, state.getCSN(dn2, csn1.getServerId())); assertSame(csn2, state.getCSN(dn2, csn2.getServerId())); assertFalse(state.removeCSN(dn1, csn2)); assertSame(csn1, state.getCSN(dn1, csn1.getServerId())); assertSame(csn1, state.getCSN(dn2, csn1.getServerId())); assertSame(csn2, state.getCSN(dn2, csn2.getServerId())); assertTrue(state.removeCSN(dn2, csn1)); assertSame(csn1, state.getCSN(dn1, csn1.getServerId())); assertNull(state.getCSN(dn2, csn1.getServerId())); assertSame(csn2, state.getCSN(dn2, csn2.getServerId())); }