### Question:
GeoScreenPolylineGeometry extends PolylineGeometry { @Override public GeoScreenPolylineGeometry derive(BaseRenderProperties renderProperties, Constraints constraints) throws ClassCastException { return new GeoScreenPolylineGeometry(createBuilder(), (PolylineRenderProperties)renderProperties, constraints); } GeoScreenPolylineGeometry(Builder builder, PolylineRenderProperties renderProperties, Constraints constraints); protected  GeoScreenPolylineGeometry(Builder builder, PolylineRenderProperties renderProperties, Constraints constraints,
            boolean smooth, LineType type); @Override GeoScreenPolylineGeometry clone(); @Override Builder createBuilder(); @Override GeoScreenPolylineGeometry derive(BaseRenderProperties renderProperties, Constraints constraints); GeographicPosition getAttachment(); @SuppressWarnings("unchecked") @Override List<? extends ScreenPosition> getVertices(); @Override String toString();  }### Answer:
@Test public void testDerive() { GeoScreenPolylineGeometry.Builder builder = new GeoScreenPolylineGeometry.Builder(); builder.setDataModelId(3423L); GeographicPosition position = new GeographicPosition(LatLonAlt.createFromDegrees(23., 56.)); builder.setAttachment(position); List<ScreenPosition> vertices = new ArrayList<>(); vertices.add(new ScreenPosition(0, 0)); vertices.add(new ScreenPosition(15, 15)); builder.setVertices(vertices); builder.setLineSmoothing(true); builder.setLineType(LineType.GREAT_CIRCLE); builder.setRapidUpdate(true); PolylineRenderProperties renderProperties1 = new DefaultPolylineRenderProperties(65763, false, true); TimeConstraint timeConstraint = TimeConstraint.getTimeConstraint(TimeSpan.get(10L, 20L)); Constraints constraints1 = new Constraints(timeConstraint); GeoScreenPolylineGeometry geom = new GeoScreenPolylineGeometry(builder, renderProperties1, constraints1); AbstractRenderableGeometry absGeom = geom; ColorRenderProperties renderProperties2 = renderProperties1.clone(); Constraints constraints2 = new Constraints(timeConstraint); AbstractRenderableGeometry derived = absGeom.derive(renderProperties2, constraints2); Assert.assertNotSame(geom, derived); Assert.assertEquals(geom.getDataModelId(), derived.getDataModelId()); Assert.assertEquals(geom.isLineSmoothing(), ((GeoScreenPolylineGeometry)derived).isLineSmoothing()); Assert.assertEquals(geom.getLineType(), ((GeoScreenPolylineGeometry)derived).getLineType()); Assert.assertEquals(geom.getVertices(), ((GeoScreenPolylineGeometry)derived).getVertices()); Assert.assertEquals(geom.getAttachment(), ((GeoScreenPolylineGeometry)derived).getAttachment()); Assert.assertEquals(geom.isRapidUpdate(), derived.isRapidUpdate()); Assert.assertNotSame(geom.getRenderProperties(), derived.getRenderProperties()); Assert.assertSame(renderProperties2, derived.getRenderProperties()); Assert.assertNotSame(geom.getConstraints(), derived.getConstraints()); Assert.assertSame(constraints2, derived.getConstraints()); }