Index: trunk/test/unit/org/openstreetmap/josm/io/OsmReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/OsmReaderTest.java	(revision 16636)
+++ trunk/test/unit/org/openstreetmap/josm/io/OsmReaderTest.java	(revision 16641)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.OsmReader.Options;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
@@ -83,6 +84,17 @@
         try (InputStream in = new ByteArrayInputStream(
                 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
-            assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, parseUnknownAttributes).allPrimitives()
+            assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS).allPrimitives()
                     .isEmpty());
+        }
+        testUnknown(osm, parseUnknownAttributes, true);
+        testUnknown(osm, parseUnknownAttributes, true);
+    }
+
+    private static void testUnknown(String osm, boolean parseUnknownAttributes, boolean keepOriginalId)
+            throws Exception {
+        try (InputStream in = new ByteArrayInputStream(
+                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
+            assertTrue(OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS, Options.SAVE_ORIGINAL_ID)
+                    .allPrimitives().isEmpty());
         }
     }
@@ -141,12 +153,12 @@
      * Test valid data.
      * @param osm OSM data without XML prefix
-     * @param parseUnknownAttributes if true, attempt to parse unknown xml attributes
+     * @param options The options to use to parse the data
      * @return parsed data set
      * @throws Exception if any error occurs
      */
-    private static DataSet testValidData(String osm, boolean parseUnknownAttributes) throws Exception {
-        try (InputStream in = new ByteArrayInputStream(
-                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
-            return OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, parseUnknownAttributes);
+    private static DataSet testValidData(String osm, Options... options) throws Exception {
+        try (InputStream in = new ByteArrayInputStream(
+                ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
+            return OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, options);
         }
     }
@@ -183,5 +195,5 @@
         try (InputStream in = new ByteArrayInputStream(
                 ("<?xml version='1.0' encoding='UTF-8'?>" + osm).getBytes(StandardCharsets.UTF_8))) {
-            OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, parseUnknownAttributes);
+            OsmReader.parseDataSet(in, NullProgressMonitor.INSTANCE, Options.CONVERT_UNKNOWN_TO_TAGS);
             fail("should throw exception");
         } catch (IllegalDataException e) {
@@ -325,6 +337,8 @@
         String gdprChangeset = "<osm version='0.6'><node id='1' version='1' changeset='0'/></osm>";
         testValidData(gdprChangeset);
-        testValidData(gdprChangeset, true);
-        testValidData(gdprChangeset, false);
+        testValidData(gdprChangeset, Options.CONVERT_UNKNOWN_TO_TAGS);
+        testValidData(gdprChangeset, (Options) null);
+        testValidData(gdprChangeset, Options.SAVE_ORIGINAL_ID);
+        testValidData(gdprChangeset, Options.values());
     }
 
@@ -406,5 +420,6 @@
                 "<remark>runtime error: Query ran out of memory in \"query\" at line 5.</remark>\r\n" +
                 "</osm>";
-        for (DataSet ds : Arrays.asList(testValidData(query), testValidData(query, true), testValidData(query, false))) {
+        for (DataSet ds : Arrays.asList(testValidData(query), testValidData(query, Options.CONVERT_UNKNOWN_TO_TAGS), testValidData(query, (Options) null),
+                testValidData(query, Options.SAVE_ORIGINAL_ID), testValidData(query, Options.values()))) {
             assertEquals("runtime error: Query ran out of memory in \"query\" at line 5.", ds.getRemark());
         }
@@ -421,12 +436,16 @@
         DataSet ds = testValidData(testData);
         assertEquals(0, ds.getNodes().iterator().next().getKeys().size());
-
-        ds = testValidData(testData, true);
+        assertEquals(1, ds.getNodes().iterator().next().getUniqueId());
+
+        ds = testValidData(testData, Options.CONVERT_UNKNOWN_TO_TAGS);
         Node firstNode = ds.getNodes().iterator().next();
         assertEquals(1, firstNode.getKeys().size());
         assertEquals("randomvalue", firstNode.get("randomkey"));
-
-        ds = testValidData(testData, false);
+        assertEquals(1, ds.getNodes().iterator().next().getUniqueId());
+
+
+        ds = testValidData(testData, (Options) null);
         assertEquals(0, ds.getNodes().iterator().next().getKeys().size());
+        assertEquals(1, ds.getNodes().iterator().next().getUniqueId());
     }
 }
