Index: /trunk/src/org/openstreetmap/josm/tools/HiDPISupport.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/HiDPISupport.java	(revision 12731)
+++ /trunk/src/org/openstreetmap/josm/tools/HiDPISupport.java	(revision 12732)
@@ -24,6 +24,5 @@
  *
  * Gives access to the class <code>BaseMultiResolutionImage</code> via reflection,
- * in case it is on classpath. This is to be expected for Java 9, but not for Java 8
- * runtime.
+ * in case it is on classpath. This is to be expected for Java 9, but not for Java 8 runtime.
  *
  * @since 12722
@@ -66,8 +65,8 @@
     public static Image getMultiResolutionImage(List<Image> imgs) {
         CheckParameterUtil.ensure(imgs, "imgs", "not empty", ls -> !ls.isEmpty());
-        if (getBaseMultiResolutionImageConstructor().isPresent()) {
-            Constructor<? extends Image> c = getBaseMultiResolutionImageConstructor().get();
+        Optional<Constructor<? extends Image>> baseMrImageConstructor = getBaseMultiResolutionImageConstructor();
+        if (baseMrImageConstructor.isPresent()) {
             try {
-                return c.newInstance((Object) imgs.toArray(new Image[0]));
+                return baseMrImageConstructor.get().newInstance((Object) imgs.toArray(new Image[0]));
             } catch (InstantiationException | IllegalAccessException | InvocationTargetException ex) {
                 Logging.error("Unexpected error while instantiating object of class BaseMultiResolutionImage: " + ex);
@@ -80,6 +79,5 @@
      * Wrapper for the method <code>java.awt.image.BaseMultiResolutionImage#getBaseImage()</code>.
      * <p>
-     * Will return the argument <code>img</code> unchanged, if it is not a multi-resolution
-     * image.
+     * Will return the argument <code>img</code> unchanged, if it is not a multi-resolution image.
      * @param img the image
      * @return if <code>img</code> is a <code>java.awt.image.BaseMultiResolutionImage</code>,
@@ -87,11 +85,13 @@
      */
     public static Image getBaseImage(Image img) {
-        if (!getBaseMultiResolutionImageClass().isPresent() || !getResolutionVariantsMethod().isPresent()) {
+        Optional<Class<? extends Image>> baseMrImageClass = getBaseMultiResolutionImageClass();
+        Optional<Method> resVariantsMethod = getResolutionVariantsMethod();
+        if (!baseMrImageClass.isPresent() || !resVariantsMethod.isPresent()) {
             return img;
         }
-        if (getBaseMultiResolutionImageClass().get().isInstance(img)) {
+        if (baseMrImageClass.get().isInstance(img)) {
             try {
                 @SuppressWarnings("unchecked")
-                List<Image> imgVars = (List) getResolutionVariantsMethod().get().invoke(img);
+                List<Image> imgVars = (List<Image>) resVariantsMethod.get().invoke(img);
                 if (!imgVars.isEmpty()) {
                     return imgVars.get(0);
@@ -107,6 +107,5 @@
      * Wrapper for the method <code>java.awt.image.MultiResolutionImage#getResolutionVariants()</code>.
      * <p>
-     * Will return the argument as a singleton list, in case it is not a multi-resolution
-     * image.
+     * Will return the argument as a singleton list, in case it is not a multi-resolution image.
      * @param img the image
      * @return if <code>img</code> is a <code>java.awt.image.BaseMultiResolutionImage</code>,
@@ -115,11 +114,13 @@
      */
     public static List<Image> getResolutionVariants(Image img) {
-        if (!getBaseMultiResolutionImageClass().isPresent() || !getResolutionVariantsMethod().isPresent()) {
+        Optional<Class<? extends Image>> baseMrImageClass = getBaseMultiResolutionImageClass();
+        Optional<Method> resVariantsMethod = getResolutionVariantsMethod();
+        if (!baseMrImageClass.isPresent() || !resVariantsMethod.isPresent()) {
             return Collections.singletonList(img);
         }
-        if (getBaseMultiResolutionImageClass().get().isInstance(img)) {
+        if (baseMrImageClass.get().isInstance(img)) {
             try {
                 @SuppressWarnings("unchecked")
-                List<Image> imgVars = (List) getResolutionVariantsMethod().get().invoke(img);
+                List<Image> imgVars = (List<Image>) resVariantsMethod.get().invoke(img);
                 if (!imgVars.isEmpty()) {
                     return imgVars;
@@ -205,5 +206,5 @@
                     try {
                         @SuppressWarnings("unchecked")
-                        Class<? extends Image> c = (Class) Class.forName("java.awt.image.BaseMultiResolutionImage");
+                        Class<? extends Image> c = (Class<? extends Image>) Class.forName("java.awt.image.BaseMultiResolutionImage");
                         baseMultiResolutionImageClass = Optional.ofNullable(c);
                     } catch (ClassNotFoundException ex) {
