law(pingpong,language(java)) public class Pingpong extends Law { public void sent(String source, String message, String dest) { String pingToY = "pingTo(" + dest + ")"; String pingFromY = "pingFrom(" + dest + ")"; if (message.startsWith("ping(") && !CS.has(pingToY)) { doAdd(pingToY); doForward(); } if (message.startsWith("pong(") && CS.has(pingFromY)) { doRemove(pingFromY); doForward(); } } public void arrived(String source, String message, String dest) { if (message.startsWith("ping(")) { doAdd("pingFrom(" + source + ")"); doDeliver(); } if (message.startsWith("pong(")) { doRemove("pingTo(" + source + ")"); doDeliver(); } } public void disconnected() { doQuit(); } }