public class android.os.GraphicsEnvironment
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.os.GraphicsEnvironment
  super_class: java.lang.Object
{
  private static final android.os.GraphicsEnvironment sInstance;
    descriptor: Landroid/os/GraphicsEnvironment;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "GraphicsEnvironment"

  private static final java.lang.String PROPERTY_GFX_DRIVER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "ro.gfx.driver.0"

  private java.lang.ClassLoader mClassLoader;
    descriptor: Ljava/lang/ClassLoader;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String mLayerPath;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String mDebugLayerPath;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 35
            new android.os.GraphicsEnvironment
            dup
            invokespecial android.os.GraphicsEnvironment.<init>:()V
            putstatic android.os.GraphicsEnvironment.sInstance:Landroid/os/GraphicsEnvironment;
         1: .line 46
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.os.GraphicsEnvironment this
         0: .line 33
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // android.os.GraphicsEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/GraphicsEnvironment;

  public static android.os.GraphicsEnvironment getInstance();
    descriptor: ()Landroid/os/GraphicsEnvironment;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            getstatic android.os.GraphicsEnvironment.sInstance:Landroid/os/GraphicsEnvironment;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void setup(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.os.GraphicsEnvironment this
        start local 1 // android.content.Context context
         0: .line 56
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual android.os.GraphicsEnvironment.setupGpuLayers:(Landroid/content/Context;)V
         1: .line 57
            aload 1 /* context */
            invokestatic android.os.GraphicsEnvironment.chooseDriver:(Landroid/content/Context;)V
         2: .line 58
            return
        end local 1 // android.content.Context context
        end local 0 // android.os.GraphicsEnvironment this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Landroid/os/GraphicsEnvironment;
            0    3     1  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      context  

  private static boolean isDebuggable(android.content.Context);
    descriptor: (Landroid/content/Context;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.content.Context context
         0: .line 64
            aload 0 /* context */
            invokevirtual android.content.Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo;
            getfield android.content.pm.ApplicationInfo.flags:I
            iconst_2
            iand
            ifle 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      context  

  public void setLayerPaths(java.lang.ClassLoader, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // android.os.GraphicsEnvironment this
        start local 1 // java.lang.ClassLoader classLoader
        start local 2 // java.lang.String layerPath
        start local 3 // java.lang.String debugLayerPath
         0: .line 75
            aload 0 /* this */
            aload 1 /* classLoader */
            putfield android.os.GraphicsEnvironment.mClassLoader:Ljava/lang/ClassLoader;
         1: .line 76
            aload 0 /* this */
            aload 2 /* layerPath */
            putfield android.os.GraphicsEnvironment.mLayerPath:Ljava/lang/String;
         2: .line 77
            aload 0 /* this */
            aload 3 /* debugLayerPath */
            putfield android.os.GraphicsEnvironment.mDebugLayerPath:Ljava/lang/String;
         3: .line 78
            return
        end local 3 // java.lang.String debugLayerPath
        end local 2 // java.lang.String layerPath
        end local 1 // java.lang.ClassLoader classLoader
        end local 0 // android.os.GraphicsEnvironment this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Landroid/os/GraphicsEnvironment;
            0    4     1     classLoader  Ljava/lang/ClassLoader;
            0    4     2       layerPath  Ljava/lang/String;
            0    4     3  debugLayerPath  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      classLoader     
      layerPath       
      debugLayerPath  

  private void setupGpuLayers(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // android.os.GraphicsEnvironment this
        start local 1 // android.content.Context context
         0: .line 86
            ldc ""
            astore 2 /* layerPaths */
        start local 2 // java.lang.String layerPaths
         1: .line 93
            aload 1 /* context */
            invokestatic android.os.GraphicsEnvironment.isDebuggable:(Landroid/content/Context;)Z
            ifeq 21
         2: .line 95
            aload 1 /* context */
            invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
         3: .line 96
            ldc "enable_gpu_debug_layers"
            iconst_0
         4: .line 95
            invokestatic android.provider.Settings$Global.getInt:(Landroid/content/ContentResolver;Ljava/lang/String;I)I
            istore 3 /* enable */
        start local 3 // int enable
         5: .line 98
            iload 3 /* enable */
            ifeq 21
         6: .line 100
            aload 1 /* context */
            invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
         7: .line 101
            ldc "gpu_debug_app"
         8: .line 100
            invokestatic android.provider.Settings$Global.getString:(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* gpuDebugApp */
        start local 4 // java.lang.String gpuDebugApp
         9: .line 103
            aload 1 /* context */
            invokevirtual android.content.Context.getPackageName:()Ljava/lang/String;
            astore 5 /* packageName */
        start local 5 // java.lang.String packageName
        10: .line 105
            aload 4 /* gpuDebugApp */
            ifnull 21
            aload 5 /* packageName */
            ifnull 21
        11: .line 106
            aload 4 /* gpuDebugApp */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 21
            aload 5 /* packageName */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 21
        12: .line 107
            aload 4 /* gpuDebugApp */
            aload 5 /* packageName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 21
        13: .line 108
            ldc "GraphicsEnvironment"
            new java.lang.StringBuilder
            dup
            ldc "GPU debug layers enabled for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* packageName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.i:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        14: .line 113
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield android.os.GraphicsEnvironment.mDebugLayerPath:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* layerPaths */
        15: .line 115
            aload 1 /* context */
            invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
        16: .line 116
            ldc "gpu_debug_layers"
        17: .line 115
            invokestatic android.provider.Settings$Global.getString:(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* layers */
        start local 6 // java.lang.String layers
        18: .line 118
            ldc "GraphicsEnvironment"
            new java.lang.StringBuilder
            dup
            ldc "Debug layer list: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* layers */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.i:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        19: .line 119
            aload 6 /* layers */
            ifnull 21
            aload 6 /* layers */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 21
        20: .line 120
            aload 6 /* layers */
            invokestatic android.os.GraphicsEnvironment.setDebugLayers:(Ljava/lang/String;)V
        end local 6 // java.lang.String layers
        end local 5 // java.lang.String packageName
        end local 4 // java.lang.String gpuDebugApp
        end local 3 // int enable
        21: .line 128
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 2 /* layerPaths */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield android.os.GraphicsEnvironment.mLayerPath:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* layerPaths */
        22: .line 130
            aload 0 /* this */
            getfield android.os.GraphicsEnvironment.mClassLoader:Ljava/lang/ClassLoader;
            aload 2 /* layerPaths */
            invokestatic android.os.GraphicsEnvironment.setLayerPaths:(Ljava/lang/ClassLoader;Ljava/lang/String;)V
        23: .line 131
            return
        end local 2 // java.lang.String layerPaths
        end local 1 // android.content.Context context
        end local 0 // android.os.GraphicsEnvironment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   24     0         this  Landroid/os/GraphicsEnvironment;
            0   24     1      context  Landroid/content/Context;
            1   24     2   layerPaths  Ljava/lang/String;
            5   21     3       enable  I
            9   21     4  gpuDebugApp  Ljava/lang/String;
           10   21     5  packageName  Ljava/lang/String;
           18   21     6       layers  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  

  private static void chooseDriver(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // android.content.Context context
         0: .line 137
            ldc "ro.gfx.driver.0"
            invokestatic android.os.SystemProperties.get:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* driverPackageName */
        start local 1 // java.lang.String driverPackageName
         1: .line 138
            aload 1 /* driverPackageName */
            ifnull 2
            aload 1 /* driverPackageName */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 3
         2: .line 139
      StackMap locals: java.lang.String
      StackMap stack:
            return
         3: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            invokevirtual android.content.Context.getApplicationInfo:()Landroid/content/pm/ApplicationInfo;
            astore 2 /* ai */
        start local 2 // android.content.pm.ApplicationInfo ai
         4: .line 145
            aload 2 /* ai */
            invokevirtual android.content.pm.ApplicationInfo.isPrivilegedApp:()Z
            ifne 5
            aload 2 /* ai */
            invokevirtual android.content.pm.ApplicationInfo.isSystemApp:()Z
            ifeq 6
            aload 2 /* ai */
            invokevirtual android.content.pm.ApplicationInfo.isUpdatedSystemApp:()Z
            ifne 6
         5: .line 147
      StackMap locals: android.content.pm.ApplicationInfo
      StackMap stack:
            return
         6: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            invokevirtual android.content.Context.getPackageManager:()Landroid/content/pm/PackageManager;
            aload 1 /* driverPackageName */
         7: .line 152
            ldc 1048576
         8: .line 151
            invokevirtual android.content.pm.PackageManager.getApplicationInfo:(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
            astore 3 /* driverInfo */
        start local 3 // android.content.pm.ApplicationInfo driverInfo
         9: .line 153
            goto 13
        end local 3 // android.content.pm.ApplicationInfo driverInfo
      StackMap locals:
      StackMap stack: android.content.pm.PackageManager$NameNotFoundException
        10: pop
        11: .line 154
            ldc "GraphicsEnvironment"
            new java.lang.StringBuilder
            dup
            ldc "driver package '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* driverPackageName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' not installed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        12: .line 155
            return
        start local 3 // android.content.pm.ApplicationInfo driverInfo
        13: .line 157
      StackMap locals: android.content.pm.ApplicationInfo
      StackMap stack:
            aload 3 /* driverInfo */
            invokestatic android.os.GraphicsEnvironment.chooseAbi:(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
            astore 4 /* abi */
        start local 4 // java.lang.String abi
        14: .line 158
            aload 4 /* abi */
            ifnonnull 16
        15: .line 165
            return
        16: .line 167
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* driverInfo */
            getfield android.content.pm.ApplicationInfo.targetSdkVersion:I
            bipush 26
            if_icmpge 19
        17: .line 170
            ldc "GraphicsEnvironment"
            ldc "updated driver package is not known to be compatible with O"
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        18: .line 171
            return
        19: .line 174
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 5 /* sb */
        start local 5 // java.lang.StringBuilder sb
        20: .line 175
            aload 5 /* sb */
            aload 3 /* driverInfo */
            getfield android.content.pm.ApplicationInfo.nativeLibraryDir:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 176
            getstatic java.io.File.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 177
            aload 5 /* sb */
            aload 3 /* driverInfo */
            getfield android.content.pm.ApplicationInfo.sourceDir:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 178
            ldc "!/lib/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: .line 179
            aload 4 /* abi */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 180
            aload 5 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* paths */
        start local 6 // java.lang.String paths
        26: .line 183
            aload 6 /* paths */
            invokestatic android.os.GraphicsEnvironment.setDriverPath:(Ljava/lang/String;)V
        27: .line 184
            return
        end local 6 // java.lang.String paths
        end local 5 // java.lang.StringBuilder sb
        end local 4 // java.lang.String abi
        end local 3 // android.content.pm.ApplicationInfo driverInfo
        end local 2 // android.content.pm.ApplicationInfo ai
        end local 1 // java.lang.String driverPackageName
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   28     0            context  Landroid/content/Context;
            1   28     1  driverPackageName  Ljava/lang/String;
            4   28     2                 ai  Landroid/content/pm/ApplicationInfo;
            9   10     3         driverInfo  Landroid/content/pm/ApplicationInfo;
           13   28     3         driverInfo  Landroid/content/pm/ApplicationInfo;
           14   28     4                abi  Ljava/lang/String;
           20   28     5                 sb  Ljava/lang/StringBuilder;
           26   28     6              paths  Ljava/lang/String;
      Exception table:
        from    to  target  type
           6     9      10  Class android.content.pm.PackageManager$NameNotFoundException
    MethodParameters:
         Name  Flags
      context  

  public static void earlyInitEGL();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 197
            new java.lang.Thread
            dup
         1: .line 198
            invokedynamic run()Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  android/os/GraphicsEnvironment.lambda$0()V (6)
                  ()V
         2: .line 201
            ldc "EGL Init"
         3: .line 197
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;Ljava/lang/String;)V
            astore 0 /* eglInitThread */
        start local 0 // java.lang.Thread eglInitThread
         4: .line 202
            aload 0 /* eglInitThread */
            invokevirtual java.lang.Thread.start:()V
         5: .line 203
            return
        end local 0 // java.lang.Thread eglInitThread
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            4    6     0  eglInitThread  Ljava/lang/Thread;

  private static java.lang.String chooseAbi(android.content.pm.ApplicationInfo);
    descriptor: (Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 206
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tVMRuntime cannot be resolved\n\tVMRuntime cannot be resolved\n\tVMRuntime cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      ai    

  private static native void setLayerPaths(java.lang.ClassLoader, java.lang.String);
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/String;)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
             Name  Flags
      classLoader  
      layerPaths   

  private static native void setDebugLayers(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
        Name  Flags
      layers  

  private static native void setDriverPath(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
      Name  Flags
      path  

  private static void lambda$0();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 199
            iconst_0
            invokestatic android.opengl.EGL14.eglGetDisplay:(I)Landroid/opengl/EGLDisplay;
            pop
         1: .line 200
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "GraphicsEnvironment.java"
InnerClasses:
  public NameNotFoundException = android.content.pm.PackageManager$NameNotFoundException of android.content.pm.PackageManager
  public final Global = android.provider.Settings$Global of android.provider.Settings
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles