Index: trunk/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java	(revision 17333)
+++ trunk/test/unit/org/openstreetmap/josm/io/OverpassDownloadReaderTest.java	(revision 17336)
@@ -59,5 +59,5 @@
 
     private String getExpandedQuery(String search) {
-        final String query = SearchCompilerQueryWizard.getInstance().constructQuery(search);
+        final String query = SearchCompilerQueryWizard.constructQuery(search);
         final String request = new OverpassDownloadReader(new Bounds(1, 2, 3, 4), null, query)
                 .getRequestForBbox(1, 2, 3, 4)
Index: trunk/test/unit/org/openstreetmap/josm/tools/SearchCompilerQueryWizardTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/SearchCompilerQueryWizardTest.java	(revision 17333)
+++ trunk/test/unit/org/openstreetmap/josm/tools/SearchCompilerQueryWizardTest.java	(revision 17336)
@@ -24,5 +24,5 @@
 
     private static String constructQuery(String s) {
-        return SearchCompilerQueryWizard.getInstance().constructQuery(s);
+        return SearchCompilerQueryWizard.constructQuery(s);
     }
 
@@ -241,3 +241,14 @@
                 "type:relation and type=multipolygon and -landuse=* and -\"area:highway\"=*");
     }
+
+    /**
+     * Test for ticket <a href="https://josm.openstreetmap.de/ticket/20037>#20037</a>
+     */
+    @Test
+    void testTicket20037() {
+        assertQueryEquals(
+                "  node[~\"^.*$\"~\"forward\"];\n" +
+                "  node[~\"^.*$\"~\"backward\"];\n",
+                "type:node AND (*=forward OR *=backward)");
+    }
 }
