Index: src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 17322)
+++ src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(working copy)
@@ -416,7 +416,7 @@
                 for (String key : way.keySet()) {
                     if (!values.containsKey(key)) { //relation values take precedence
                         values.put(key, way.get(key));
-                    } else if (!relation.hasKey(key) && !values.get(key).equals(way.get(key))) {
+                    } else if (!values.get(key).equals(way.get(key))) {
                         conflictingKeys.add(key);
                     }
                 }
Index: test/data/regress/20110/data.osm
===================================================================
--- test/data/regress/20110/data.osm	(nonexistent)
+++ test/data/regress/20110/data.osm	(working copy)
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<osm version='0.6' upload='never' generator='JOSM'>
+  <node id='-101770' action='modify' visible='true' lat='52.8825296301' lon='8.42060908349' />
+  <node id='-101771' action='modify' visible='true' lat='52.88854640489' lon='8.44962466717' />
+  <node id='-101772' action='modify' visible='true' lat='52.89813899419' lon='8.46022478752' />
+  <node id='-101773' action='modify' visible='true' lat='52.90491214264' lon='8.45681118944' />
+  <node id='-101774' action='modify' visible='true' lat='52.88388483241' lon='8.41512936025' />
+  <node id='-101775' action='modify' visible='true' lat='52.88290329214' lon='8.41611375352' />
+  <node id='-101777' action='modify' visible='true' lat='52.88990212311' lon='8.4328166643' />
+  <node id='-101778' action='modify' visible='true' lat='52.89224037406' lon='8.43774185623' />
+  <node id='-101779' action='modify' visible='true' lat='52.88839193568' lon='8.43854926475' />
+  <way id='-101791' action='modify' visible='true'>
+    <nd ref='-101770' />
+    <nd ref='-101771' />
+    <nd ref='-101772' />
+    <nd ref='-101773' />
+    <tag k='natural' v='coastline' />
+  </way>
+  <way id='-101795' action='modify' visible='true'>
+    <nd ref='-101774' />
+    <nd ref='-101775' />
+    <nd ref='-101770' />
+  </way>
+  <way id='-101799' action='modify' visible='true'>
+    <nd ref='-101773' />
+    <nd ref='-101774' />
+    <tag k='natural' v='coastline' />
+  </way>
+  <way id='-101805' action='modify' visible='true'>
+    <nd ref='-101777' />
+    <nd ref='-101778' />
+    <nd ref='-101779' />
+    <nd ref='-101777' />
+  </way>
+  <relation id='-99748' action='modify' visible='true'>
+    <member type='way' ref='-101795' role='outer' />
+    <member type='way' ref='-101799' role='outer' />
+    <member type='way' ref='-101791' role='outer' />
+    <tag k='natural' v='wetland' />
+    <tag k='type' v='multipolygon' />
+  </relation>
+</osm>
Index: test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java	(revision 17322)
+++ test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java	(working copy)
@@ -3,6 +3,7 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.nio.file.Files;
@@ -11,8 +12,8 @@
 import java.util.Map;
 import java.util.TreeMap;
 
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -155,4 +156,21 @@
         }
 
     }
+
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/20110">Bug #20110</a>.
+     * @throws Exception if an error occurs
+     */
+    @Test
+    void testTicket20110() throws Exception {
+        DataSet ds = OsmReader.parseDataSet(TestUtils.getRegressionDataStream(20110, "data.osm"), null);
+        assertEquals(1, ds.getRelations().size());
+        Relation mp = ds.getRelations().iterator().next();
+        assertEquals("wetland", mp.get("natural"));
+        long numCoastlineWays = ds.getWays().stream().filter(w -> "coastline".equals(w.get("natural"))).count();
+        Relation modMp = createMultipolygon(ds.getWays(), "type:way", mp, false);
+        assertNotNull(modMp);
+        assertEquals("wetland", modMp.get("natural"));
+        assertEquals(numCoastlineWays, ds.getWays().stream().filter(w -> "coastline".equals(w.get("natural"))).count());
+    }
 }
