LineString ls = gf.createLineString(new Coordinate[] {new Coordinate(10, 15), new Coordinate(20, 25)});
ls.setUserData(CRS.decode("urn:x-ogc:def:crs:EPSG:6.11.2:4326"));
// make sure a class cast does not occur, see: http://jira.codehaus.org/browse/GEOS-1860
Function function = ff.function("geometryType", ff.property("geom"));
PropertyIsEqualTo original = ff.equals(ff.literal("Point"), function);
Filter clone = (Filter) original.accept(reprojector, null);
assertNotSame(original, clone);
assertEquals(original, clone);
// try the opposite, literal and function
original = ff.equals(function, ff.literal("Point"));
clone = (Filter) original.accept(reprojector, null);
assertNotSame(original, clone);
assertEquals(original, clone);
}