diff -ur srcs/javax/xml/bind/JAXB.java srcs-patched/javax/xml/bind/JAXB.java
--- srcs/javax/xml/bind/JAXB.java	2018-09-12 06:26:24.000000000 +0200
+++ srcs-patched/javax/xml/bind/JAXB.java	2019-04-16 17:17:25.118768524 +0200
@@ -46,7 +46,6 @@
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
-import java.beans.Introspector;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -593,7 +592,30 @@
     }
 
     private static String inferName(Class clazz) {
-        return Introspector.decapitalize(clazz.getSimpleName());
+      String name = clazz.getSimpleName();
+      try {
+        if (!Character.isUpperCase(name.charAt(0))) {
+          return name;
+        } else {
+          try {
+            if(Character.isUpperCase(name.charAt(1))) {
+              return name;
+            } else {
+              char[] c = name.toCharArray();
+              c[0] = Character.toLowerCase(c[0]);
+              return new String(c);
+            }
+          } catch(StringIndexOutOfBoundsException E) {
+            char[] c = new char[1];
+            c[0] = Character.toLowerCase(name.charAt(0));
+            return new String(c);
+          }
+        }
+      } catch(StringIndexOutOfBoundsException E) {
+        return name;
+      } catch(NullPointerException E) {
+        return null;
+      }
     }
 
     /**
diff -ur srcs/module-info.java srcs-patched/module-info.java
--- srcs/module-info.java	2018-09-12 06:26:24.000000000 +0200
+++ srcs-patched/module-info.java	2019-04-16 17:17:16.038792433 +0200
@@ -42,7 +42,6 @@
     requires transitive java.activation;
     requires transitive java.xml;
     requires java.logging;
-    requires java.desktop;
 
     exports javax.xml.bind;
     exports javax.xml.bind.annotation;
