### Question:
ProjectedShape implements Shape, Serializable { public static Shape wrap(final Shape shape, final MathTransform2D projection) { if (projection == null || projection.isIdentity()) { return shape; } if (projection instanceof AffineTransform) { return new TransformedShape(shape, (AffineTransform) projection); } return new ProjectedShape(shape, projection); } protected  ProjectedShape(final Shape shape, final MathTransform2D projection); static Shape wrap(final Shape shape, final MathTransform2D projection); @Override boolean contains(final double x, final double y); @Override boolean contains(final Point2D p); @Override boolean contains(final double x, final double y, final double width, final double height); @Override boolean contains(final Rectangle2D r); @Override boolean intersects(double x, double y, double width, double height); @Override boolean intersects(final Rectangle2D r); @Override Rectangle getBounds(); @Override Rectangle2D getBounds2D(); @Override PathIterator getPathIterator(final AffineTransform at); @Override PathIterator getPathIterator(final AffineTransform at, final double flatness); @Override int hashCode(); @Override boolean equals(final Object object);  }### Answer:
@Test public void testWithLambert() throws FactoryException, TransformException { final ProjectedCRS crs = (ProjectedCRS) CRS.fromWKT(WKT.PROJCS_LAMBERT_CONIC_NTF); final GeneralPath path = new GeneralPath(); path.moveTo(10.000000f, 10.0000000f); path.lineTo(56.666667f, -6.6666667f); path.lineTo(56.666667f, -40.000000f); path.lineTo(80.000000f, 10.0000000f); path.lineTo(56.666667f, 60.0000000f); path.lineTo(56.666667f, 26.6666667f); path.closePath(); final Shape reference = createReferenceShape(path, (MathTransform2D) crs.getConversionFromBase().getMathTransform()); final Shape target = ProjectedShape.wrap(path, projection); show(target, reference, false); }