public class org.apache.tomcat.util.compat.JreCompat
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.compat.JreCompat
  super_class: java.lang.Object
{
  private static final int RUNTIME_MAJOR_VERSION;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  private static final org.apache.tomcat.util.compat.JreCompat instance;
    descriptor: Lorg/apache/tomcat/util/compat/JreCompat;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean graalAvailable;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean jre11Available;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean jre9Available;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final java.lang.reflect.Method setApplicationProtocolsMethod;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final java.lang.reflect.Method getApplicationProtocolMethod;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=2, args_size=0
         0: .line 47
            ldc Lorg/apache/tomcat/util/compat/JreCompat;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.tomcat.util.compat.JreCompat.sm:Lorg/apache/tomcat/util/res/StringManager;
         1: .line 55
            invokestatic org.apache.tomcat.util.compat.GraalCompat.isSupported:()Z
            ifeq 6
         2: .line 56
            new org.apache.tomcat.util.compat.GraalCompat
            dup
            invokespecial org.apache.tomcat.util.compat.GraalCompat.<init>:()V
            putstatic org.apache.tomcat.util.compat.JreCompat.instance:Lorg/apache/tomcat/util/compat/JreCompat;
         3: .line 57
            iconst_1
            putstatic org.apache.tomcat.util.compat.JreCompat.graalAvailable:Z
         4: .line 58
            invokestatic org.apache.tomcat.util.compat.Jre9Compat.isSupported:()Z
            putstatic org.apache.tomcat.util.compat.JreCompat.jre9Available:Z
         5: .line 59
            goto 14
      StackMap locals:
      StackMap stack:
         6: invokestatic org.apache.tomcat.util.compat.Jre9Compat.isSupported:()Z
            ifeq 11
         7: .line 60
            new org.apache.tomcat.util.compat.Jre9Compat
            dup
            invokespecial org.apache.tomcat.util.compat.Jre9Compat.<init>:()V
            putstatic org.apache.tomcat.util.compat.JreCompat.instance:Lorg/apache/tomcat/util/compat/JreCompat;
         8: .line 61
            iconst_0
            putstatic org.apache.tomcat.util.compat.JreCompat.graalAvailable:Z
         9: .line 62
            iconst_1
            putstatic org.apache.tomcat.util.compat.JreCompat.jre9Available:Z
        10: .line 63
            goto 14
        11: .line 64
      StackMap locals:
      StackMap stack:
            new org.apache.tomcat.util.compat.JreCompat
            dup
            invokespecial org.apache.tomcat.util.compat.JreCompat.<init>:()V
            putstatic org.apache.tomcat.util.compat.JreCompat.instance:Lorg/apache/tomcat/util/compat/JreCompat;
        12: .line 65
            iconst_0
            putstatic org.apache.tomcat.util.compat.JreCompat.graalAvailable:Z
        13: .line 66
            iconst_0
            putstatic org.apache.tomcat.util.compat.JreCompat.jre9Available:Z
        14: .line 68
      StackMap locals:
      StackMap stack:
            getstatic org.apache.tomcat.util.compat.JreCompat.instance:Lorg/apache/tomcat/util/compat/JreCompat;
            invokevirtual org.apache.tomcat.util.compat.JreCompat.jarFileRuntimeMajorVersion:()I
            bipush 11
            if_icmplt 15
            iconst_1
            goto 16
      StackMap locals:
      StackMap stack:
        15: iconst_0
      StackMap locals:
      StackMap stack: int
        16: putstatic org.apache.tomcat.util.compat.JreCompat.jre11Available:Z
        17: .line 70
            aconst_null
            astore 0 /* m1 */
        start local 0 // java.lang.reflect.Method m1
        18: .line 71
            aconst_null
            astore 1 /* m2 */
        start local 1 // java.lang.reflect.Method m2
        19: .line 73
            ldc Ljavax/net/ssl/SSLParameters;
            ldc "setApplicationProtocols"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc [Ljava/lang/String;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 0 /* m1 */
        20: .line 74
            ldc Ljavax/net/ssl/SSLEngine;
            ldc "getApplicationProtocol"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 1 /* m2 */
        21: .line 75
            goto 23
      StackMap locals: java.lang.reflect.Method java.lang.reflect.Method
      StackMap stack: java.lang.Exception
        22: pop
        23: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* m1 */
            putstatic org.apache.tomcat.util.compat.JreCompat.setApplicationProtocolsMethod:Ljava/lang/reflect/Method;
        24: .line 79
            aload 1 /* m2 */
            putstatic org.apache.tomcat.util.compat.JreCompat.getApplicationProtocolMethod:Ljava/lang/reflect/Method;
        end local 1 // java.lang.reflect.Method m2
        end local 0 // java.lang.reflect.Method m1
        25: .line 80
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
           18   25     0    m1  Ljava/lang/reflect/Method;
           19   25     1    m2  Ljava/lang/reflect/Method;
      Exception table:
        from    to  target  type
          19    21      22  Class java.lang.ReflectiveOperationException
          19    21      22  Class java.lang.IllegalArgumentException

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;

  public static org.apache.tomcat.util.compat.JreCompat getInstance();
    descriptor: ()Lorg/apache/tomcat/util/compat/JreCompat;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 84
            getstatic org.apache.tomcat.util.compat.JreCompat.instance:Lorg/apache/tomcat/util/compat/JreCompat;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static boolean isGraalAvailable();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 89
            getstatic org.apache.tomcat.util.compat.JreCompat.graalAvailable:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static boolean isAlpnSupported();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 94
            getstatic org.apache.tomcat.util.compat.JreCompat.setApplicationProtocolsMethod:Ljava/lang/reflect/Method;
            ifnull 1
            getstatic org.apache.tomcat.util.compat.JreCompat.getApplicationProtocolMethod:Ljava/lang/reflect/Method;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static boolean isJre9Available();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 99
            getstatic org.apache.tomcat.util.compat.JreCompat.jre9Available:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static boolean isJre11Available();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 104
            getstatic org.apache.tomcat.util.compat.JreCompat.jre11Available:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public boolean isInstanceOfInaccessibleObjectException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.lang.Throwable t
         0: .line 121
            iconst_0
            ireturn
        end local 1 // java.lang.Throwable t
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  public void setApplicationProtocols(javax.net.ssl.SSLParameters, java.lang.String[]);
    descriptor: (Ljavax/net/ssl/SSLParameters;[Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // javax.net.ssl.SSLParameters sslParameters
        start local 2 // java.lang.String[] protocols
         0: .line 133
            getstatic org.apache.tomcat.util.compat.JreCompat.setApplicationProtocolsMethod:Ljava/lang/reflect/Method;
            ifnull 5
         1: .line 135
            getstatic org.apache.tomcat.util.compat.JreCompat.setApplicationProtocolsMethod:Ljava/lang/reflect/Method;
            aload 1 /* sslParameters */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* protocols */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 136
            goto 6
      StackMap locals:
      StackMap stack: java.lang.Exception
         3: astore 3 /* e */
        start local 3 // java.lang.Exception e
         4: .line 137
            new java.lang.UnsupportedOperationException
            dup
            aload 3 /* e */
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
         5: .line 140
      StackMap locals:
      StackMap stack:
            new java.lang.UnsupportedOperationException
            dup
            getstatic org.apache.tomcat.util.compat.JreCompat.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jreCompat.noApplicationProtocols"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 142
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String[] protocols
        end local 1 // javax.net.ssl.SSLParameters sslParameters
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    7     1  sslParameters  Ljavax/net/ssl/SSLParameters;
            0    7     2      protocols  [Ljava/lang/String;
            4    5     3              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.IllegalAccessException
           1     2       3  Class java.lang.IllegalArgumentException
           1     2       3  Class java.lang.reflect.InvocationTargetException
    MethodParameters:
               Name  Flags
      sslParameters  
      protocols      

  public java.lang.String getApplicationProtocol(javax.net.ssl.SSLEngine);
    descriptor: (Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // javax.net.ssl.SSLEngine sslEngine
         0: .line 155
            getstatic org.apache.tomcat.util.compat.JreCompat.getApplicationProtocolMethod:Ljava/lang/reflect/Method;
            ifnull 5
         1: .line 157
            getstatic org.apache.tomcat.util.compat.JreCompat.getApplicationProtocolMethod:Ljava/lang/reflect/Method;
            aload 1 /* sslEngine */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
         2: areturn
         3: .line 158
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         4: .line 159
            new java.lang.UnsupportedOperationException
            dup
            aload 2 /* e */
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
         5: .line 162
      StackMap locals:
      StackMap stack:
            new java.lang.UnsupportedOperationException
            dup
            getstatic org.apache.tomcat.util.compat.JreCompat.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jreCompat.noApplicationProtocol"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // javax.net.ssl.SSLEngine sslEngine
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    6     1  sslEngine  Ljavax/net/ssl/SSLEngine;
            4    5     2          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.IllegalAccessException
           1     2       3  Class java.lang.IllegalArgumentException
           1     2       3  Class java.lang.reflect.InvocationTargetException
    MethodParameters:
           Name  Flags
      sslEngine  

  public void disableCachingForJarUrlConnections();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
         0: .line 176
            new java.net.URL
            dup
            ldc "jar:file://dummy.jar!/"
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 1 /* url */
        start local 1 // java.net.URL url
         1: .line 177
            aload 1 /* url */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 2 /* uConn */
        start local 2 // java.net.URLConnection uConn
         2: .line 178
            aload 2 /* uConn */
            iconst_0
            invokevirtual java.net.URLConnection.setDefaultUseCaches:(Z)V
         3: .line 179
            return
        end local 2 // java.net.URLConnection uConn
        end local 1 // java.net.URL url
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/apache/tomcat/util/compat/JreCompat;
            1    4     1    url  Ljava/net/URL;
            2    4     2  uConn  Ljava/net/URLConnection;
    Exceptions:
      throws java.io.IOException

  public void addBootModulePath(java.util.Deque<java.net.URL>);
    descriptor: (Ljava/util/Deque;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.util.Deque classPathUrlsToProcess
         0: .line 191
            return
        end local 1 // java.util.Deque classPathUrlsToProcess
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    1     0                    this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1  classPathUrlsToProcess  Ljava/util/Deque<Ljava/net/URL;>;
    Signature: (Ljava/util/Deque<Ljava/net/URL;>;)V
    MethodParameters:
                        Name  Flags
      classPathUrlsToProcess  

  public final java.util.jar.JarFile jarFileNewInstance(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/jar/JarFile;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.lang.String s
         0: .line 206
            aload 0 /* this */
            new java.io.File
            dup
            aload 1 /* s */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance:(Ljava/io/File;)Ljava/util/jar/JarFile;
            areturn
        end local 1 // java.lang.String s
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1     s  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  public java.util.jar.JarFile jarFileNewInstance(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/util/jar/JarFile;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.io.File f
         0: .line 221
            new java.util.jar.JarFile
            dup
            aload 1 /* f */
            invokespecial java.util.jar.JarFile.<init>:(Ljava/io/File;)V
            areturn
        end local 1 // java.io.File f
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1     f  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      f     

  public boolean jarFileIsMultiRelease(java.util.jar.JarFile);
    descriptor: (Ljava/util/jar/JarFile;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.util.jar.JarFile jarFile
         0: .line 235
            iconst_0
            ireturn
        end local 1 // java.util.jar.JarFile jarFile
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1  jarFile  Ljava/util/jar/JarFile;
    MethodParameters:
         Name  Flags
      jarFile  

  public int jarFileRuntimeMajorVersion();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
         0: .line 240
            bipush 8
            ireturn
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;

  public boolean canAccess(java.lang.Object, java.lang.reflect.AccessibleObject);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/AccessibleObject;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.lang.Object base
        start local 2 // java.lang.reflect.AccessibleObject accessibleObject
         0: .line 256
            iconst_1
            ireturn
        end local 2 // java.lang.reflect.AccessibleObject accessibleObject
        end local 1 // java.lang.Object base
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1              base  Ljava/lang/Object;
            0    1     2  accessibleObject  Ljava/lang/reflect/AccessibleObject;
    MethodParameters:
                  Name  Flags
      base              
      accessibleObject  

  public boolean isExported(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.lang.Class type
         0: .line 269
            iconst_1
            ireturn
        end local 1 // java.lang.Class type
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      type  

  public java.lang.String getModuleName(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.compat.JreCompat this
        start local 1 // java.lang.Class type
         0: .line 282
            ldc "NO_MODULE_JAVA_8"
            areturn
        end local 1 // java.lang.Class type
        end local 0 // org.apache.tomcat.util.compat.JreCompat this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/compat/JreCompat;
            0    1     1  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/String;
    MethodParameters:
      Name  Flags
      type  
}
SourceFile: "JreCompat.java"