Index: trunk/src/org/openstreetmap/josm/io/AbstractReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/AbstractReader.java	(revision 11918)
+++ trunk/src/org/openstreetmap/josm/io/AbstractReader.java	(revision 11919)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -23,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
 /**
@@ -202,3 +204,5 @@
         }
     }
+
+    protected abstract DataSet doParseDataSet(InputStream source, ProgressMonitor progressMonitor) throws IllegalDataException;
 }
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 11918)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 11919)
@@ -585,4 +585,5 @@
     }
 
+    @Override
     protected DataSet doParseDataSet(InputStream source, ProgressMonitor progressMonitor) throws IllegalDataException {
         if (progressMonitor == null) {
Index: trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 11918)
+++ trunk/src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 11919)
@@ -99,5 +99,5 @@
     static final Pattern OUTPUT_FORMAT_STATEMENT = Pattern.compile(".*\\[out:([a-z]{3,})\\].*", Pattern.DOTALL);
 
-    static final Map<OverpassOutpoutFormat, Class<? extends OsmReader>> outputFormatReaders = new ConcurrentHashMap<>();
+    static final Map<OverpassOutpoutFormat, Class<? extends AbstractReader>> outputFormatReaders = new ConcurrentHashMap<>();
 
     final String overpassServer;
@@ -123,6 +123,6 @@
      * @return the previous value associated with {@code format}, or {@code null} if there was no mapping
      */
-    public static final Class<? extends OsmReader> registerOverpassOutpoutFormatReader(
-            OverpassOutpoutFormat format, Class<? extends OsmReader> readerClass) {
+    public static final Class<? extends AbstractReader> registerOverpassOutpoutFormatReader(
+            OverpassOutpoutFormat format, Class<? extends AbstractReader> readerClass) {
         return outputFormatReaders.put(Objects.requireNonNull(format), Objects.requireNonNull(readerClass));
     }
@@ -230,8 +230,8 @@
     @Override
     protected DataSet parseDataSet(InputStream source, ProgressMonitor progressMonitor) throws IllegalDataException {
-        OsmReader reader = null;
+        AbstractReader reader = null;
         Matcher m = OUTPUT_FORMAT_STATEMENT.matcher(overpassQuery);
         if (m.matches()) {
-            Class<? extends OsmReader> readerClass = outputFormatReaders.get(OverpassOutpoutFormat.from(m.group(1)));
+            Class<? extends AbstractReader> readerClass = outputFormatReaders.get(OverpassOutpoutFormat.from(m.group(1)));
             if (readerClass != null) {
                 try {
