### Question:
TorusMeshGeometry extends PolygonMeshGeometry { @Override public TorusMeshGeometry clone() { TorusMeshGeometry clone = (TorusMeshGeometry)super.clone(); clone.myPositionTransform = myPositionTransform == null ? null : myPositionTransform.clone(); return clone; } TorusMeshGeometry(Builder<?> builder, PolygonMeshRenderProperties renderProperties, Constraints constraints); @Override TorusMeshGeometry clone(); @Override Builder<? extends Position> createBuilder(); @Override TorusMeshGeometry derive(BaseRenderProperties renderProperties, Constraints constraints); Position getCenter(); int getCirPoints(); Matrix3d getPositionTransform(); double getRadius(); double getTubeRadius(); int getTubeSections();  }### Answer:
@Test public void testClone() { TorusMeshGeometry.Builder<GeographicPosition> builder = new TorusMeshGeometry.Builder<GeographicPosition>(); builder.setDataModelId(3423L); builder.setRapidUpdate(true); builder.setCircularPoints(13); builder.setRadius(.123f); builder.setTubeRadius(.0543); builder.setTubeSections(20); builder.setPositionTransform(new Matrix3d()); builder.setCenter(new GeographicPosition(LatLonAlt.createFromDegrees(34., 56.))); PolygonMeshRenderProperties renderProperties1 = new DefaultPolygonMeshRenderProperties(65763, false, true, true); TimeConstraint timeConstraint = TimeConstraint.getTimeConstraint(TimeSpan.get(10L, 20L)); Constraints constraints1 = new Constraints(timeConstraint); TorusMeshGeometry geom = new TorusMeshGeometry(builder, renderProperties1, constraints1); TorusMeshGeometry clone = geom.clone(); Assert.assertNotSame(geom, clone); Assert.assertEquals(geom.getDataModelId(), clone.getDataModelId()); Assert.assertEquals(geom.getRadius(), clone.getRadius(), 0.f); Assert.assertEquals(geom.getTubeRadius(), clone.getTubeRadius(), 0.f); Assert.assertEquals(geom.getTubeSections(), clone.getTubeSections()); Assert.assertEquals(geom.getCenter(), clone.getCenter()); Assert.assertEquals(geom.getCirPoints(), clone.getCirPoints()); Assert.assertEquals(geom.getPositionTransform(), clone.getPositionTransform()); Assert.assertNotSame(geom.getPositionTransform(), clone.getPositionTransform()); Assert.assertEquals(geom.getPolygonVertexCount(), clone.getPolygonVertexCount()); Assert.assertEquals(geom.getColors(), clone.getColors()); Assert.assertEquals(geom.getNormals(), clone.getNormals()); Assert.assertEquals(geom.getPositions(), clone.getPositions()); Assert.assertEquals(geom.isRapidUpdate(), clone.isRapidUpdate()); Assert.assertEquals(geom.getRenderProperties(), clone.getRenderProperties()); Assert.assertNotSame(geom.getRenderProperties(), clone.getRenderProperties()); Assert.assertEquals(geom.getConstraints(), clone.getConstraints()); Assert.assertNotSame(geom.getConstraints(), clone.getConstraints()); }