### Question:
EllipseGeometry extends PolygonGeometry { @Override public EllipseGeometry derive(BaseRenderProperties renderProperties, Constraints constraints) throws ClassCastException { return new EllipseGeometry(createBuilder(), (PolygonRenderProperties)renderProperties, constraints); } EllipseGeometry(EllipseGeometry.AngleBuilder<?> builder, PolygonRenderProperties renderProperties,
            Constraints constraints);  EllipseGeometry(EllipseGeometry.Builder<?> builder, PolygonRenderProperties renderProperties, Constraints constraints);  EllipseGeometry(EllipseGeometry.FocusBuilder<?> builder, PolygonRenderProperties renderProperties,
            Constraints constraints);  EllipseGeometry(EllipseGeometry.ProjectedBuilder builder, PolygonRenderProperties renderProperties,
            Constraints constraints); protected  EllipseGeometry(PolygonGeometry.Builder<?> builder, PolygonRenderProperties renderProperties,
            Constraints constraints); @Override EllipseGeometry clone(); @Override Builder<? extends Position> createBuilder(); @Override EllipseGeometry derive(BaseRenderProperties renderProperties, Constraints constraints); @Override Position getReferencePoint();  }### Answer:
@Test public void testDerive() { EllipseGeometry.AngleBuilder<GeographicPosition> builder = new EllipseGeometry.AngleBuilder<GeographicPosition>(); builder.setDataModelId(3423L); GeographicPosition position = new GeographicPosition(LatLonAlt.createFromDegrees(23., 56.)); builder.setCenter(position); builder.setAngle(45.); builder.setSemiMajorAxis(23f); builder.setSemiMinorAxis(26f); builder.setLineSmoothing(true); builder.setLineType(LineType.GREAT_CIRCLE); builder.setRapidUpdate(true); PolygonRenderProperties renderProperties1 = new DefaultPolygonRenderProperties(65763, false, true); TimeConstraint timeConstraint = TimeConstraint.getTimeConstraint(TimeSpan.get(10L, 20L)); Constraints constraints1 = new Constraints(timeConstraint); EllipseGeometry geom = new EllipseGeometry(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(), ((EllipseGeometry)derived).isLineSmoothing()); Assert.assertEquals(geom.getLineType(), ((EllipseGeometry)derived).getLineType()); Assert.assertEquals(geom.getVertices(), ((EllipseGeometry)derived).getVertices()); 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()); }