### Question:
Paxos implements Protocol { @Override public Paxos copy() { return new Paxos(params); } Paxos(PaxosParameters params); @Override Network<PaxosNode> network(); @Override Paxos copy(); @Override void init(); @Override String toString(); static void main(String... args);  }### Answer:
@Test public void testCopy() { Paxos p1 = new Paxos(new Paxos.PaxosParameters(3, 2, 1000, null, null)); Paxos p2 = p1.copy(); p1.init(); p1.network().runMs(2000); p2.init(); p2.network().runMs(2000); for (Paxos.PaxosNode n1 : p1.network().allNodes) { Paxos.PaxosNode n2 = p2.network().getNodeById(n1.nodeId); Assert.assertNotNull(n2); Assert.assertEquals(n1.getMsgReceived(), n2.getMsgReceived()); } }