### Question:
Quaternion extends Message { @Override public Quaternion clone() { return new Quaternion(this.x, this.y, this.z, this.w); } Quaternion();  Quaternion(double x, double y, double z, double w); double getX(); double getY(); double getZ(); double getW(); @Override Quaternion clone(); static Quaternion fromJsonString(String jsonString); static Quaternion fromMessage(Message m); static Quaternion fromJsonObject(JsonObject jsonObject); static final String FIELD_X; static final String FIELD_Y; static final String FIELD_Z; static final String FIELD_W; static final String TYPE; }### Answer:
@Test public void testClone() { Quaternion clone = q1.clone(); assertEquals(q1.toString(), clone.toString()); assertEquals(q1.toJsonObject(), clone.toJsonObject()); assertEquals(q1.getMessageType(), clone.getMessageType()); assertEquals(q1.getX(), clone.getX(), 0); assertEquals(q1.getY(), clone.getY(), 0); assertEquals(q1.getZ(), clone.getZ(), 0); assertEquals(q1.getW(), clone.getW(), 0); assertNotSame(q1, clone); assertNotSame(q1.toString(), clone.toString()); assertNotSame(q1.toJsonObject(), clone.toJsonObject()); }