Index: trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 13637)
+++ trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 13638)
@@ -22,11 +22,12 @@
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.ILatLon;
 import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.IPrimitive;
 import org.openstreetmap.josm.data.osm.MultipolygonBuilder;
 import org.openstreetmap.josm.data.osm.MultipolygonBuilder.JoinedPolygon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.NodePositionComparator;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
@@ -527,9 +528,10 @@
      * @param path2d path to add to; can be null, then a new path is created
      * @return the path (LatLon coordinates)
-     */
-    public static Path2D buildPath2DLatLon(List<Node> polygon, Path2D path2d) {
+     * @since 13638 (signature)
+     */
+    public static Path2D buildPath2DLatLon(List<? extends ILatLon> polygon, Path2D path2d) {
         Path2D path = path2d != null ? path2d : new Path2D.Double();
         boolean begin = true;
-        for (Node n : polygon) {
+        for (ILatLon n : polygon) {
             if (begin) {
                 path.moveTo(n.lon(), n.lat());
@@ -701,6 +703,7 @@
      * @param osm the primitive to measure
      * @return area of the primitive, or {@code null}
-     */
-    public static Double computeArea(OsmPrimitive osm) {
+     * @since 13638 (signature)
+     */
+    public static Double computeArea(IPrimitive osm) {
         if (osm instanceof Way && ((Way) osm).isClosed()) {
             return closedWayArea((Way) osm);
@@ -1012,6 +1015,7 @@
      * @param projection the projection to use for the calculation, {@code null} defaults to {@link Main#getProjection()}
      * @return area and perimeter
-     */
-    public static AreaAndPerimeter getAreaAndPerimeter(List<Node> nodes, Projection projection) {
+     * @since 13638 (signature)
+     */
+    public static AreaAndPerimeter getAreaAndPerimeter(List<? extends ILatLon> nodes, Projection projection) {
         CheckParameterUtil.ensureParameterNotNull(nodes, "nodes");
         double area = 0;
@@ -1024,5 +1028,5 @@
             EastNorth p1 = nodes.get(0).getEastNorth(useProjection);
             for (int i = 1; i <= numSegments; i++) {
-                final Node node = nodes.get(i == numSegments ? 0 : i);
+                final ILatLon node = nodes.get(i == numSegments ? 0 : i);
                 final EastNorth p2 = node.getEastNorth(useProjection);
                 if (p1 != null && p2 != null) {
