Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/HelpAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/HelpAction.java	(revision 13958)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/HelpAction.java	(revision 13959)
@@ -20,5 +20,5 @@
 import javax.swing.KeyStroke;
 
-import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.IRelation;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -40,5 +40,5 @@
 
     private final JTable membershipTable;
-    private final IntFunction<Relation> memberValueSupplier;
+    private final IntFunction<IRelation<?>> memberValueSupplier;
 
     /**
@@ -49,7 +49,8 @@
      * @param membershipTable The membership table. Can be null
      * @param memberValueSupplier Finds the parent relation from given row of membership table. Can be null
+     * @since 13959 (signature)
      */
     public HelpAction(JTable tagTable, IntFunction<String> tagKeySupplier, IntFunction<Map<String, Integer>> tagValuesSupplier,
-            JTable membershipTable, IntFunction<Relation> memberValueSupplier) {
+            JTable membershipTable, IntFunction<IRelation<?>> memberValueSupplier) {
         this.tagTable = Objects.requireNonNull(tagTable);
         this.tagKeySupplier = Objects.requireNonNull(tagKeySupplier);
@@ -128,6 +129,7 @@
      * @throws URISyntaxException in case of internal error
      * @since 13522
-     */
-    public static List<URI> getRelationURIs(String base, String lang, Relation rel) throws URISyntaxException {
+     * @since 13959 (signature)
+     */
+    public static List<URI> getRelationURIs(String base, String lang, IRelation<?> rel) throws URISyntaxException {
         List<URI> uris = new ArrayList<>();
         String type = rel.get("type");
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 13958)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 13959)
@@ -178,7 +178,7 @@
     private final transient DataSetListenerAdapter dataChangedAdapter = new DataSetListenerAdapter(this);
     private final HelpAction helpAction = new HelpAction(tagTable, editHelper::getDataKey, editHelper::getDataValues,
-            membershipTable, x -> (Relation) membershipData.getValueAt(x, 0));
+            membershipTable, x -> (IRelation<?>) membershipData.getValueAt(x, 0));
     private final TaginfoAction taginfoAction = new TaginfoAction(tagTable, editHelper::getDataKey, editHelper::getDataValues,
-            membershipTable, x -> (Relation) membershipData.getValueAt(x, 0));
+            membershipTable, x -> (IRelation<?>) membershipData.getValueAt(x, 0));
     private final PasteValueAction pasteValueAction = new PasteValueAction();
     private final CopyValueAction copyValueAction = new CopyValueAction(
@@ -378,7 +378,7 @@
             protected int checkTableSelection(JTable table, Point p) {
                 int row = super.checkTableSelection(table, p);
-                List<Relation> rels = new ArrayList<>();
+                List<IRelation<?>> rels = new ArrayList<>();
                 for (int i: table.getSelectedRows()) {
-                    rels.add((Relation) table.getValueAt(i, 0));
+                    rels.add((IRelation<?>) table.getValueAt(i, 0));
                 }
                 membershipMenuHandler.setPrimitives(rels);
@@ -569,5 +569,5 @@
         Collection<? extends IPrimitive> newSel = Main.main.getInProgressISelection();
         String selectedTag;
-        Relation selectedRelation = null;
+        IRelation<?> selectedRelation = null;
         selectedTag = editHelper.getChangedKey(); // select last added or last edited key by default
         if (selectedTag == null && tagTable.getSelectedRowCount() == 1) {
@@ -575,5 +575,5 @@
         }
         if (membershipTable.getSelectedRowCount() == 1) {
-            selectedRelation = (Relation) membershipData.getValueAt(membershipTable.getSelectedRow(), 0);
+            selectedRelation = (IRelation<?>) membershipData.getValueAt(membershipTable.getSelectedRow(), 0);
         }
 
@@ -775,5 +775,5 @@
             if (c instanceof JLabel) {
                 JLabel label = (JLabel) c;
-                Relation r = (Relation) value;
+                IRelation<?> r = (IRelation<?>) value;
                 label.setText(r.getDisplayName(DefaultNameFormatter.getInstance()));
                 if (r.isDisabledAndHidden()) {
@@ -792,5 +792,5 @@
                 return this;
             Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
-            boolean isDisabledAndHidden = ((Relation) table.getValueAt(row, 0)).isDisabledAndHidden();
+            boolean isDisabledAndHidden = ((IRelation<?>) table.getValueAt(row, 0)).isDisabledAndHidden();
             if (c instanceof JLabel) {
                 JLabel label = (JLabel) c;
@@ -809,5 +809,5 @@
                 boolean isSelected, boolean hasFocus, int row, int column) {
             Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
-            boolean isDisabledAndHidden = ((Relation) table.getValueAt(row, 0)).isDisabledAndHidden();
+            boolean isDisabledAndHidden = ((IRelation<?>) table.getValueAt(row, 0)).isDisabledAndHidden();
             if (c instanceof JLabel) {
                 JLabel label = (JLabel) c;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java	(revision 13958)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TaginfoAction.java	(revision 13959)
@@ -12,5 +12,5 @@
 
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.IRelation;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.tools.OpenBrowser;
@@ -30,5 +30,5 @@
 
     private final JTable membershipTable;
-    private final IntFunction<Relation> memberValueSupplier;
+    private final IntFunction<IRelation<?>> memberValueSupplier;
 
     /**
@@ -39,7 +39,8 @@
      * @param membershipTable The membership table. Can be null
      * @param memberValueSupplier Finds the parent relation from given row of membership table. Can be null
+     * @since 13959 (signature)
      */
     public TaginfoAction(JTable tagTable, IntFunction<String> tagKeySupplier, IntFunction<Map<String, Integer>> tagValuesSupplier,
-            JTable membershipTable, IntFunction<Relation> memberValueSupplier) {
+            JTable membershipTable, IntFunction<IRelation<?>> memberValueSupplier) {
         super(tr("Go to Taginfo"), "dialogs/taginfo", tr("Launch browser with Taginfo statistics for selected object"), null, false);
         this.tagTable = Objects.requireNonNull(tagTable);
