if (g2 instanceof GeoPoint) {
GeoPoint p2 = (GeoPoint) g2;
return new Point_Point(p1, p2);
} else if (g2 instanceof LineString) {
LineString l2 = (LineString) g2;
return new Point_LineString(p1, l2);
} else if (g2 instanceof Polygon) {
Polygon a2 = (Polygon) g2;
return new Point_Polygon(p1, a2);
} else if (g2 instanceof GeometryCollection) {