public final class org.h2.util.MemoryUnmapper
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.h2.util.MemoryUnmapper
  super_class: java.lang.Object
{
  private static final boolean ENABLED;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Object UNSAFE;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.reflect.Method INVOKE_CLEANER;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=5, args_size=0
         0: .line 28
            getstatic org.h2.engine.SysProperties.NIO_CLEANER_HACK:Z
            istore 0 /* enabled */
        start local 0 // boolean enabled
         1: .line 29
            aconst_null
            astore 1 /* unsafe */
        start local 1 // java.lang.Object unsafe
         2: .line 30
            aconst_null
            astore 2 /* invokeCleaner */
        start local 2 // java.lang.reflect.Method invokeCleaner
         3: .line 31
            iload 0 /* enabled */
            ifeq 15
         4: .line 33
            ldc "sun.misc.Unsafe"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 3 /* clazz */
        start local 3 // java.lang.Class clazz
         5: .line 34
            aload 3 /* clazz */
            ldc "theUnsafe"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 4 /* field */
        start local 4 // java.lang.reflect.Field field
         6: .line 35
            aload 4 /* field */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         7: .line 36
            aload 4 /* field */
            aconst_null
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* unsafe */
         8: .line 38
            aload 3 /* clazz */
            ldc "invokeCleaner"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/nio/ByteBuffer;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 2 /* invokeCleaner */
        end local 4 // java.lang.reflect.Field field
        end local 3 // java.lang.Class clazz
         9: .line 39
            goto 15
      StackMap locals: int java.lang.Object java.lang.reflect.Method
      StackMap stack: java.lang.ReflectiveOperationException
        10: pop
        11: .line 41
            aconst_null
            astore 1 /* unsafe */
            goto 15
        12: .line 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
        13: .line 46
            iconst_0
            istore 0 /* enabled */
        14: .line 47
            aconst_null
            astore 1 /* unsafe */
        15: .line 51
      StackMap locals:
      StackMap stack:
            iload 0 /* enabled */
            putstatic org.h2.util.MemoryUnmapper.ENABLED:Z
        16: .line 52
            aload 1 /* unsafe */
            putstatic org.h2.util.MemoryUnmapper.UNSAFE:Ljava/lang/Object;
        17: .line 53
            aload 2 /* invokeCleaner */
            putstatic org.h2.util.MemoryUnmapper.INVOKE_CLEANER:Ljava/lang/reflect/Method;
        end local 2 // java.lang.reflect.Method invokeCleaner
        end local 1 // java.lang.Object unsafe
        end local 0 // boolean enabled
        18: .line 54
            return
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            1   18     0        enabled  Z
            2   18     1         unsafe  Ljava/lang/Object;
            3   18     2  invokeCleaner  Ljava/lang/reflect/Method;
            5    9     3          clazz  Ljava/lang/Class<*>;
            6    9     4          field  Ljava/lang/reflect/Field;
      Exception table:
        from    to  target  type
           4     9      10  Class java.lang.ReflectiveOperationException
           4     9      12  Class java.lang.Throwable

  public static boolean unmap(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // java.nio.ByteBuffer buffer
         0: .line 66
            getstatic org.h2.util.MemoryUnmapper.ENABLED:Z
            ifne 2
         1: .line 67
            iconst_0
            ireturn
         2: .line 70
      StackMap locals:
      StackMap stack:
            getstatic org.h2.util.MemoryUnmapper.INVOKE_CLEANER:Ljava/lang/reflect/Method;
            ifnull 5
         3: .line 72
            getstatic org.h2.util.MemoryUnmapper.INVOKE_CLEANER:Ljava/lang/reflect/Method;
            getstatic org.h2.util.MemoryUnmapper.UNSAFE:Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* buffer */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 73
            iconst_1
            ireturn
         5: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* buffer */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "cleaner"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 1 /* cleanerMethod */
        start local 1 // java.lang.reflect.Method cleanerMethod
         6: .line 77
            aload 1 /* cleanerMethod */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
         7: .line 78
            aload 1 /* cleanerMethod */
            aload 0 /* buffer */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* cleaner */
        start local 2 // java.lang.Object cleaner
         8: .line 79
            aload 2 /* cleaner */
            ifnull 11
         9: .line 80
            aload 2 /* cleaner */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "clean"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 3 /* clearMethod */
        start local 3 // java.lang.reflect.Method clearMethod
        10: .line 81
            aload 3 /* clearMethod */
            aload 2 /* cleaner */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.lang.reflect.Method clearMethod
        11: .line 83
      StackMap locals: java.lang.reflect.Method java.lang.Object
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.lang.Object cleaner
        end local 1 // java.lang.reflect.Method cleanerMethod
        12: .line 84
      StackMap locals: java.nio.ByteBuffer
      StackMap stack: java.lang.Throwable
            pop
        13: .line 85
            iconst_0
            ireturn
        end local 0 // java.nio.ByteBuffer buffer
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0         buffer  Ljava/nio/ByteBuffer;
            6   12     1  cleanerMethod  Ljava/lang/reflect/Method;
            8   12     2        cleaner  Ljava/lang/Object;
           10   11     3    clearMethod  Ljava/lang/reflect/Method;
      Exception table:
        from    to  target  type
           2     4      12  Class java.lang.Throwable
           5    11      12  Class java.lang.Throwable
    MethodParameters:
        Name  Flags
      buffer  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.util.MemoryUnmapper this
         0: .line 89
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 90
            return
        end local 0 // org.h2.util.MemoryUnmapper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/util/MemoryUnmapper;
}
SourceFile: "MemoryUnmapper.java"