diff --git a/dx/src/com/android/dx/cf/direct/DirectClassFile.java b/dx/src/com/android/dx/cf/direct/DirectClassFile.java
index 4aa1224..623c303 100644
--- a/dx/src/com/android/dx/cf/direct/DirectClassFile.java
+++ b/dx/src/com/android/dx/cf/direct/DirectClassFile.java
@@ -52,11 +52,9 @@
      * See http://en.wikipedia.org/wiki/Java_class_file for an up-to-date
      * list of version numbers. Currently known (taken from that table) are:
      *
-     *     Java SE 9 = 53 (0x35 hex),
-     *     Java SE 8 = 52 (0x34 hex),
-     *     Java SE 7 = 51 (0x33 hex),
-     *     Java SE 6.0 = 50 (0x32 hex),
-     *     Java SE 5.0 = 49 (0x31 hex),
+     *     J2SE 7.0 = 51 (0x33 hex),
+     *     J2SE 6.0 = 50 (0x32 hex),
+     *     J2SE 5.0 = 49 (0x31 hex),
      *     JDK 1.4 = 48 (0x30 hex),
      *     JDK 1.3 = 47 (0x2F hex),
      *     JDK 1.2 = 46 (0x2E hex),
@@ -73,7 +71,7 @@
      *
      * Note: if you change this, please change "java.class.version" in System.java.
      */
-    private static final int CLASS_FILE_MAX_MAJOR_VERSION = 53;
+    private static final int CLASS_FILE_MAX_MAJOR_VERSION = 52;
 
     /** maximum {@code .class} file minor version */
     private static final int CLASS_FILE_MAX_MINOR_VERSION = 0;
diff --git a/dx/src/com/android/dx/command/dexer/Main.java b/dx/src/com/android/dx/command/dexer/Main.java
index 99d2715..10189a7 100644
--- a/dx/src/com/android/dx/command/dexer/Main.java
+++ b/dx/src/com/android/dx/command/dexer/Main.java
@@ -567,15 +567,13 @@
                 }
 
                 // remaining files
-                FileNameFilter filter = new RemoveModuleInfoFilter(new NotFilter(mainPassFilter));
                 for (int i = 0; i < fileNames.length; i++) {
-                    processOne(fileNames[i], filter);
+                    processOne(fileNames[i], new NotFilter(mainPassFilter));
                 }
             } else {
                 // without --main-dex-list
-                FileNameFilter filter = new RemoveModuleInfoFilter(ClassPathOpener.acceptAll);
                 for (int i = 0; i < fileNames.length; i++) {
-                    processOne(fileNames[i], filter);
+                    processOne(fileNames[i], ClassPathOpener.acceptAll);
                 }
             }
         } catch (StopProcessing ex) {
@@ -1162,22 +1160,6 @@
     }
 
     /**
-     * Filters "module-info.class" out of the paths accepted by delegate.
-     */
-    private static class RemoveModuleInfoFilter implements FileNameFilter {
-        protected final FileNameFilter delegate;
-
-        public RemoveModuleInfoFilter(FileNameFilter delegate) {
-            this.delegate = delegate;
-        }
-
-        @Override
-        public boolean accept(String path) {
-            return delegate.accept(path) && !("module-info.class".equals(path));
-        }
-    }
-
-    /**
      * A quick and accurate filter for when file path can be trusted.
      */
     private class MainDexListFilter implements FileNameFilter {
