### Question:
ServerMutation extends Mutation { public void setSystemTimestamp(long v) { this.systemTime = v; } ServerMutation(TMutation tmutation);  ServerMutation(Text key);  ServerMutation(); @Override void readFields(DataInput in); @Override void write(DataOutput out); void setSystemTimestamp(long v); long getSystemTimestamp(); @Override long estimatedMemoryUsed(); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void test() throws Exception { ServerMutation m = new ServerMutation(new Text("r1")); m.put(new Text("cf1"), new Text("cq1"), new Value("v1")); m.put(new Text("cf2"), new Text("cq2"), 56, new Value("v2")); m.setSystemTimestamp(42); List<ColumnUpdate> updates = m.getUpdates(); assertEquals(2, updates.size()); assertEquals("r1", new String(m.getRow())); ColumnUpdate cu = updates.get(0); assertEquals("cf1", new String(cu.getColumnFamily())); assertEquals("cq1", new String(cu.getColumnQualifier())); assertEquals("", new String(cu.getColumnVisibility())); assertFalse(cu.hasTimestamp()); assertEquals(42L, cu.getTimestamp()); ServerMutation m2 = new ServerMutation(); ReflectionUtils.copy(new Configuration(), m, m2); updates = m2.getUpdates(); assertEquals(2, updates.size()); assertEquals("r1", new String(m2.getRow())); cu = updates.get(0); assertEquals("cf1", new String(cu.getColumnFamily())); assertEquals("cq1", new String(cu.getColumnQualifier())); assertFalse(cu.hasTimestamp()); assertEquals(42L, cu.getTimestamp()); cu = updates.get(1); assertEquals("r1", new String(m2.getRow())); assertEquals("cf2", new String(cu.getColumnFamily())); assertEquals("cq2", new String(cu.getColumnQualifier())); assertTrue(cu.hasTimestamp()); assertEquals(56, cu.getTimestamp()); }