public void testPrimFactCRS() throws UnsupportedOperationException, FactoryException {
    CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
    GeometryBuilder builder = new GeometryBuilder(crs);

    CoordinateReferenceSystem crs2 = CRS.parseWKT(crs.toWKT());
    GeometryBuilder builder2 = new GeometryBuilder(crs2);

    // create a list of connected positions
    List<Position> dps = new ArrayList<Position>();
    dps.add(builder.createDirectPosition(new double[] {20, 10}));
    dps.add(builder.createDirectPosition(new double[] {40, 10}));
    dps.add(builder.createDirectPosition(new double[] {50, 40}));
    dps.add(builder.createDirectPosition(new double[] {30, 50}));
    dps.add(builder.createDirectPosition(new double[] {10, 30}));
    dps.add(builder.createDirectPosition(new double[] {20, 10}));

    // create linestring from directpositions
    LineString line = builder.createLineString(dps);

    // create curvesegments from line
    ArrayList<CurveSegment> segs = new ArrayList<CurveSegment>();
    segs.add(line);

    // Create list of OrientableCurves that make up the surface
    OrientableCurve curve = builder.createCurve(segs);
    List<OrientableCurve> orientableCurves = new ArrayList<OrientableCurve>();
    orientableCurves.add(curve);

    // create the interior ring and a list of empty interior rings (holes)
    Ring extRing = builder2.createRing(orientableCurves);
    List<Ring> intRings = new ArrayList<Ring>();

    // create the surfaceboundary from the rings
    SurfaceBoundary sb = builder2.createSurfaceBoundary(extRing, intRings);

    // create the surface
    Surface surface = builder2.createSurface(sb);
  }