public abstract class javax.el.ExpressionFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: javax.el.ExpressionFactory
  super_class: java.lang.Object
{
  private static final boolean IS_SECURITY_ENABLED;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String SERVICE_RESOURCE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "META-INF/services/javax.el.ExpressionFactory"

  private static final java.lang.String PROPERTY_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.el.ExpressionFactory"

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

  private static final javax.el.ExpressionFactory$CacheValue nullTcclFactory;
    descriptor: Ljavax/el/ExpressionFactory$CacheValue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Map<javax.el.ExpressionFactory$CacheKey, javax.el.ExpressionFactory$CacheValue> factoryCache;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljavax/el/ExpressionFactory$CacheKey;Ljavax/el/ExpressionFactory$CacheValue;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 48
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
         2: .line 47
      StackMap locals:
      StackMap stack: int
            putstatic javax.el.ExpressionFactory.IS_SECURITY_ENABLED:Z
         3: .line 57
            new javax.el.ExpressionFactory$CacheValue
            dup
            invokespecial javax.el.ExpressionFactory$CacheValue.<init>:()V
            putstatic javax.el.ExpressionFactory.nullTcclFactory:Ljavax/el/ExpressionFactory$CacheValue;
         4: .line 58
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic javax.el.ExpressionFactory.factoryCache:Ljava/util/Map;
         5: .line 61
            getstatic javax.el.ExpressionFactory.IS_SECURITY_ENABLED:Z
            ifeq 9
         6: .line 63
            new javax.el.ExpressionFactory$1
            dup
            invokespecial javax.el.ExpressionFactory$1.<init>:()V
         7: .line 62
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            putstatic javax.el.ExpressionFactory.PROPERTY_FILE:Ljava/lang/String;
         8: .line 72
            goto 12
         9: .line 73
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "java.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "lib"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 74
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "el.properties"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 73
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic javax.el.ExpressionFactory.PROPERTY_FILE:Ljava/lang/String;
        12: .line 76
      StackMap locals:
      StackMap stack:
            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 // javax.el.ExpressionFactory this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // javax.el.ExpressionFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/el/ExpressionFactory;

  public static javax.el.ExpressionFactory newInstance();
    descriptor: ()Ljavax/el/ExpressionFactory;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 91
            aconst_null
            invokestatic javax.el.ExpressionFactory.newInstance:(Ljava/util/Properties;)Ljavax/el/ExpressionFactory;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static javax.el.ExpressionFactory newInstance(java.util.Properties);
    descriptor: (Ljava/util/Properties;)Ljavax/el/ExpressionFactory;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=9, args_size=1
        start local 0 // java.util.Properties properties
         0: .line 102
            aconst_null
            astore 1 /* result */
        start local 1 // javax.el.ExpressionFactory result
         1: .line 104
            invokestatic javax.el.Util.getContextClassLoader:()Ljava/lang/ClassLoader;
            astore 2 /* tccl */
        start local 2 // java.lang.ClassLoader tccl
         2: .line 109
            aload 2 /* tccl */
            ifnonnull 5
         3: .line 110
            getstatic javax.el.ExpressionFactory.nullTcclFactory:Ljavax/el/ExpressionFactory$CacheValue;
            astore 3 /* cacheValue */
        start local 3 // javax.el.ExpressionFactory$CacheValue cacheValue
         4: .line 111
            goto 12
        end local 3 // javax.el.ExpressionFactory$CacheValue cacheValue
         5: .line 112
      StackMap locals: javax.el.ExpressionFactory java.lang.ClassLoader
      StackMap stack:
            new javax.el.ExpressionFactory$CacheKey
            dup
            aload 2 /* tccl */
            invokespecial javax.el.ExpressionFactory$CacheKey.<init>:(Ljava/lang/ClassLoader;)V
            astore 5 /* key */
        start local 5 // javax.el.ExpressionFactory$CacheKey key
         6: .line 113
            getstatic javax.el.ExpressionFactory.factoryCache:Ljava/util/Map;
            aload 5 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.el.ExpressionFactory$CacheValue
            astore 3 /* cacheValue */
        start local 3 // javax.el.ExpressionFactory$CacheValue cacheValue
         7: .line 114
            aload 3 /* cacheValue */
            ifnonnull 12
         8: .line 115
            new javax.el.ExpressionFactory$CacheValue
            dup
            invokespecial javax.el.ExpressionFactory$CacheValue.<init>:()V
            astore 6 /* newCacheValue */
        start local 6 // javax.el.ExpressionFactory$CacheValue newCacheValue
         9: .line 116
            getstatic javax.el.ExpressionFactory.factoryCache:Ljava/util/Map;
            aload 5 /* key */
            aload 6 /* newCacheValue */
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.el.ExpressionFactory$CacheValue
            astore 3 /* cacheValue */
        10: .line 117
            aload 3 /* cacheValue */
            ifnonnull 12
        11: .line 118
            aload 6 /* newCacheValue */
            astore 3 /* cacheValue */
        end local 6 // javax.el.ExpressionFactory$CacheValue newCacheValue
        end local 5 // javax.el.ExpressionFactory$CacheKey key
        12: .line 123
      StackMap locals: javax.el.ExpressionFactory$CacheValue
      StackMap stack:
            aload 3 /* cacheValue */
            invokevirtual javax.el.ExpressionFactory$CacheValue.getLock:()Ljava/util/concurrent/locks/ReadWriteLock;
            invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
            astore 5 /* readLock */
        start local 5 // java.util.concurrent.locks.Lock readLock
        13: .line 124
            aload 5 /* readLock */
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
        14: .line 126
            aload 3 /* cacheValue */
            invokevirtual javax.el.ExpressionFactory$CacheValue.getFactoryClass:()Ljava/lang/Class;
            astore 4 /* clazz */
        start local 4 // java.lang.Class clazz
        15: .line 127
            goto 19
        end local 4 // java.lang.Class clazz
      StackMap locals: java.util.Properties javax.el.ExpressionFactory java.lang.ClassLoader javax.el.ExpressionFactory$CacheValue top java.util.concurrent.locks.Lock
      StackMap stack: java.lang.Throwable
        16: astore 6
        17: .line 128
            aload 5 /* readLock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        18: .line 129
            aload 6
            athrow
        start local 4 // java.lang.Class clazz
        19: .line 128
      StackMap locals: java.util.Properties javax.el.ExpressionFactory java.lang.ClassLoader javax.el.ExpressionFactory$CacheValue java.lang.Class java.util.concurrent.locks.Lock
      StackMap stack:
            aload 5 /* readLock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        20: .line 131
            aload 4 /* clazz */
            ifnonnull 41
        21: .line 132
            aconst_null
            astore 6 /* className */
        start local 6 // java.lang.String className
        22: .line 134
            aload 3 /* cacheValue */
            invokevirtual javax.el.ExpressionFactory$CacheValue.getLock:()Ljava/util/concurrent/locks/ReadWriteLock;
            invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
            astore 7 /* writeLock */
        start local 7 // java.util.concurrent.locks.Lock writeLock
        23: .line 135
            aload 7 /* writeLock */
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
        24: .line 137
            aload 3 /* cacheValue */
            invokevirtual javax.el.ExpressionFactory$CacheValue.getFactoryClassName:()Ljava/lang/String;
            astore 6 /* className */
        25: .line 138
            aload 6 /* className */
            ifnonnull 28
        26: .line 139
            aload 2 /* tccl */
            invokestatic javax.el.ExpressionFactory.discoverClassName:(Ljava/lang/ClassLoader;)Ljava/lang/String;
            astore 6 /* className */
        27: .line 140
            aload 3 /* cacheValue */
            aload 6 /* className */
            invokevirtual javax.el.ExpressionFactory$CacheValue.setFactoryClassName:(Ljava/lang/String;)V
        28: .line 142
      StackMap locals: java.lang.String java.util.concurrent.locks.Lock
      StackMap stack:
            aload 2 /* tccl */
            ifnonnull 31
        29: .line 143
            aload 6 /* className */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 4 /* clazz */
        30: .line 144
            goto 32
        31: .line 145
      StackMap locals:
      StackMap stack:
            aload 2 /* tccl */
            aload 6 /* className */
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 4 /* clazz */
        32: .line 147
      StackMap locals:
      StackMap stack:
            aload 3 /* cacheValue */
            aload 4 /* clazz */
            invokevirtual javax.el.ExpressionFactory$CacheValue.setFactoryClass:(Ljava/lang/Class;)V
        33: .line 148
            goto 37
      StackMap locals:
      StackMap stack: java.lang.Throwable
        34: astore 8
        35: .line 149
            aload 7 /* writeLock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        36: .line 150
            aload 8
            athrow
        37: .line 149
      StackMap locals:
      StackMap stack:
            aload 7 /* writeLock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        end local 7 // java.util.concurrent.locks.Lock writeLock
        38: .line 151
            goto 41
      StackMap locals: java.util.Properties javax.el.ExpressionFactory java.lang.ClassLoader javax.el.ExpressionFactory$CacheValue java.lang.Class java.util.concurrent.locks.Lock java.lang.String
      StackMap stack: java.lang.ClassNotFoundException
        39: astore 7 /* e */
        start local 7 // java.lang.ClassNotFoundException e
        40: .line 152
            new javax.el.ELException
            dup
            aconst_null
            ldc "expressionFactory.cannotFind"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* className */
            aastore
            invokestatic javax.el.Util.message:(Ljavax/el/ELContext;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 7 /* e */
            invokespecial javax.el.ELException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.ClassNotFoundException e
        end local 6 // java.lang.String className
        41: .line 157
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* constructor */
        start local 6 // java.lang.reflect.Constructor constructor
        42: .line 159
            aload 0 /* properties */
            ifnull 48
        43: .line 161
            aload 4 /* clazz */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/util/Properties;
            aastore
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 6 /* constructor */
        44: .line 162
            goto 48
      StackMap locals: java.util.Properties javax.el.ExpressionFactory java.lang.ClassLoader javax.el.ExpressionFactory$CacheValue java.lang.Class java.util.concurrent.locks.Lock java.lang.reflect.Constructor
      StackMap stack: java.lang.SecurityException
        45: astore 7 /* se */
        start local 7 // java.lang.SecurityException se
        46: .line 163
            new javax.el.ELException
            dup
            aload 7 /* se */
            invokespecial javax.el.ELException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.SecurityException se
        47: .line 164
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
        48: .line 169
      StackMap locals:
      StackMap stack:
            aload 6 /* constructor */
            ifnonnull 51
        49: .line 170
            aload 4 /* clazz */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.el.ExpressionFactory
            astore 1 /* result */
        50: .line 171
            goto 60
        51: .line 173
      StackMap locals:
      StackMap stack:
            aload 6 /* constructor */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* properties */
            aastore
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.el.ExpressionFactory
        52: .line 172
            astore 1 /* result */
        end local 6 // java.lang.reflect.Constructor constructor
        53: .line 176
            goto 60
      StackMap locals: java.util.Properties javax.el.ExpressionFactory java.lang.ClassLoader javax.el.ExpressionFactory$CacheValue java.lang.Class java.util.concurrent.locks.Lock
      StackMap stack: java.lang.reflect.InvocationTargetException
        54: astore 6 /* e */
        start local 6 // java.lang.reflect.InvocationTargetException e
        55: .line 177
            aload 6 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getCause:()Ljava/lang/Throwable;
            astore 7 /* cause */
        start local 7 // java.lang.Throwable cause
        56: .line 178
            aload 7 /* cause */
            invokestatic javax.el.Util.handleThrowable:(Ljava/lang/Throwable;)V
        57: .line 179
            new javax.el.ELException
            dup
            aconst_null
            ldc "expressionFactory.cannotCreate"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            invokestatic javax.el.Util.message:(Ljavax/el/ELContext;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 6 /* e */
            invokespecial javax.el.ELException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.Throwable cause
        end local 6 // java.lang.reflect.InvocationTargetException e
        58: .line 180
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        59: .line 181
            new javax.el.ELException
            dup
            aconst_null
            ldc "expressionFactory.cannotCreate"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            invokestatic javax.el.Util.message:(Ljavax/el/ELContext;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 6 /* e */
            invokespecial javax.el.ELException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.Exception e
        60: .line 184
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 5 // java.util.concurrent.locks.Lock readLock
        end local 4 // java.lang.Class clazz
        end local 3 // javax.el.ExpressionFactory$CacheValue cacheValue
        end local 2 // java.lang.ClassLoader tccl
        end local 1 // javax.el.ExpressionFactory result
        end local 0 // java.util.Properties properties
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   61     0     properties  Ljava/util/Properties;
            1   61     1         result  Ljavax/el/ExpressionFactory;
            2   61     2           tccl  Ljava/lang/ClassLoader;
            4    5     3     cacheValue  Ljavax/el/ExpressionFactory$CacheValue;
            7   61     3     cacheValue  Ljavax/el/ExpressionFactory$CacheValue;
           15   16     4          clazz  Ljava/lang/Class<*>;
           19   61     4          clazz  Ljava/lang/Class<*>;
            6   12     5            key  Ljavax/el/ExpressionFactory$CacheKey;
            9   12     6  newCacheValue  Ljavax/el/ExpressionFactory$CacheValue;
           13   61     5       readLock  Ljava/util/concurrent/locks/Lock;
           22   41     6      className  Ljava/lang/String;
           23   38     7      writeLock  Ljava/util/concurrent/locks/Lock;
           40   41     7              e  Ljava/lang/ClassNotFoundException;
           42   53     6    constructor  Ljava/lang/reflect/Constructor<*>;
           46   47     7             se  Ljava/lang/SecurityException;
           55   58     6              e  Ljava/lang/reflect/InvocationTargetException;
           56   58     7          cause  Ljava/lang/Throwable;
           59   60     6              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          14    16      16  any
          24    34      34  any
          22    38      39  Class java.lang.ClassNotFoundException
          43    44      45  Class java.lang.SecurityException
          43    44      47  Class java.lang.NoSuchMethodException
          41    53      54  Class java.lang.reflect.InvocationTargetException
          41    53      58  Class java.lang.ReflectiveOperationException
          41    53      58  Class java.lang.IllegalArgumentException
    MethodParameters:
            Name  Flags
      properties  

  public abstract javax.el.ValueExpression createValueExpression(javax.el.ELContext, java.lang.String, java.lang.Class<?>);
    descriptor: (Ljavax/el/ELContext;Ljava/lang/String;Ljava/lang/Class;)Ljavax/el/ValueExpression;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljavax/el/ELContext;Ljava/lang/String;Ljava/lang/Class<*>;)Ljavax/el/ValueExpression;
    MethodParameters:
              Name  Flags
      context       
      expression    
      expectedType  

  public abstract javax.el.ValueExpression createValueExpression(, java.lang.Class<?>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Ljavax/el/ValueExpression;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;)Ljavax/el/ValueExpression;
    MethodParameters:
              Name  Flags
      instance      
      expectedType  

  public abstract javax.el.MethodExpression createMethodExpression(javax.el.ELContext, java.lang.String, java.lang.Class<?>, java.lang.Class<?>[]);
    descriptor: (Ljavax/el/ELContext;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Class;)Ljavax/el/MethodExpression;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljavax/el/ELContext;Ljava/lang/String;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljavax/el/MethodExpression;
    MethodParameters:
                    Name  Flags
      context             
      expression          
      expectedReturnType  
      expectedParamTypes  

  public abstract  coerceToType(, java.lang.Class<?>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;)Ljava/lang/Object;
    MethodParameters:
              Name  Flags
      obj           
      expectedType  

  public javax.el.ELResolver getStreamELResolver();
    descriptor: ()Ljavax/el/ELResolver;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.el.ExpressionFactory this
         0: .line 248
            aconst_null
            areturn
        end local 0 // javax.el.ExpressionFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/el/ExpressionFactory;

  public java.util.Map<java.lang.String, java.lang.reflect.Method> getInitFunctionMap();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.el.ExpressionFactory this
         0: .line 257
            aconst_null
            areturn
        end local 0 // javax.el.ExpressionFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/el/ExpressionFactory;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/reflect/Method;>;

  private static java.lang.String discoverClassName(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.ClassLoader tccl
         0: .line 332
            aconst_null
            astore 1 /* className */
        start local 1 // java.lang.String className
         1: .line 335
            aload 0 /* tccl */
            invokestatic javax.el.ExpressionFactory.getClassNameServices:(Ljava/lang/ClassLoader;)Ljava/lang/String;
            astore 1 /* className */
         2: .line 336
            aload 1 /* className */
            ifnonnull 8
         3: .line 337
            getstatic javax.el.ExpressionFactory.IS_SECURITY_ENABLED:Z
            ifeq 7
         4: .line 339
            new javax.el.ExpressionFactory$2
            dup
            invokespecial javax.el.ExpressionFactory$2.<init>:()V
         5: .line 338
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* className */
         6: .line 346
            goto 8
         7: .line 348
      StackMap locals: java.lang.String
      StackMap stack:
            invokestatic javax.el.ExpressionFactory.getClassNameJreDir:()Ljava/lang/String;
            astore 1 /* className */
         8: .line 351
      StackMap locals:
      StackMap stack:
            aload 1 /* className */
            ifnonnull 14
         9: .line 352
            getstatic javax.el.ExpressionFactory.IS_SECURITY_ENABLED:Z
            ifeq 13
        10: .line 354
            new javax.el.ExpressionFactory$3
            dup
            invokespecial javax.el.ExpressionFactory$3.<init>:()V
        11: .line 353
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* className */
        12: .line 361
            goto 14
        13: .line 363
      StackMap locals:
      StackMap stack:
            invokestatic javax.el.ExpressionFactory.getClassNameSysProp:()Ljava/lang/String;
            astore 1 /* className */
        14: .line 366
      StackMap locals:
      StackMap stack:
            aload 1 /* className */
            ifnonnull 16
        15: .line 368
            ldc "org.apache.el.ExpressionFactoryImpl"
            astore 1 /* className */
        16: .line 370
      StackMap locals:
      StackMap stack:
            aload 1 /* className */
            areturn
        end local 1 // java.lang.String className
        end local 0 // java.lang.ClassLoader tccl
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0       tccl  Ljava/lang/ClassLoader;
            1   17     1  className  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      tccl  

  private static java.lang.String getClassNameServices(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=9, args_size=1
        start local 0 // java.lang.ClassLoader tccl
         0: .line 374
            aconst_null
            astore 1 /* is */
        start local 1 // java.io.InputStream is
         1: .line 376
            aload 0 /* tccl */
            ifnonnull 4
         2: .line 377
            ldc "META-INF/services/javax.el.ExpressionFactory"
            invokestatic java.lang.ClassLoader.getSystemResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 1 /* is */
         3: .line 378
            goto 5
         4: .line 379
      StackMap locals: java.io.InputStream
      StackMap stack:
            aload 0 /* tccl */
            ldc "META-INF/services/javax.el.ExpressionFactory"
            invokevirtual java.lang.ClassLoader.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 1 /* is */
         5: .line 382
      StackMap locals:
      StackMap stack:
            aload 1 /* is */
            ifnull 44
         6: .line 383
            aconst_null
            astore 2 /* line */
        start local 2 // java.lang.String line
         7: .line 384
            aconst_null
            astore 3
            aconst_null
            astore 4
         8: new java.io.InputStreamReader
            dup
            aload 1 /* is */
            ldc "UTF-8"
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/lang/String;)V
            astore 5 /* isr */
        start local 5 // java.io.InputStreamReader isr
         9: .line 385
            new java.io.BufferedReader
            dup
            aload 5 /* isr */
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 6 /* br */
        start local 6 // java.io.BufferedReader br
        10: .line 386
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 2 /* line */
        11: .line 387
            aload 2 /* line */
            ifnull 19
            aload 2 /* line */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifle 19
        12: .line 388
            aload 2 /* line */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 8
        13: .line 390
            aload 6 /* br */
            ifnull 14
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
      StackMap locals: java.lang.ClassLoader java.io.InputStream java.lang.String java.lang.Throwable java.lang.Throwable java.io.InputStreamReader java.io.BufferedReader top java.lang.String
      StackMap stack:
        14: aload 5 /* isr */
            ifnull 15
            aload 5 /* isr */
            invokevirtual java.io.InputStreamReader.close:()V
        15: .line 397
      StackMap locals:
      StackMap stack:
            aload 1 /* is */
            invokevirtual java.io.InputStream.close:()V
        16: .line 398
            goto 18
      StackMap locals:
      StackMap stack: java.io.IOException
        17: pop
        18: .line 388
      StackMap locals:
      StackMap stack:
            aload 8
            areturn
        19: .line 390
      StackMap locals: java.lang.ClassLoader java.io.InputStream java.lang.String java.lang.Throwable java.lang.Throwable java.io.InputStreamReader java.io.BufferedReader
      StackMap stack:
            aload 6 /* br */
            ifnull 22
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
            goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 3
            aload 6 /* br */
            ifnull 21
            aload 6 /* br */
            invokevirtual java.io.BufferedReader.close:()V
        end local 6 // java.io.BufferedReader br
      StackMap locals:
      StackMap stack:
        21: aload 3
            athrow
      StackMap locals:
      StackMap stack:
        22: aload 5 /* isr */
            ifnull 41
            aload 5 /* isr */
            invokevirtual java.io.InputStreamReader.close:()V
            goto 41
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 4
            aload 3
            ifnonnull 24
            aload 4
            astore 3
            goto 25
      StackMap locals:
      StackMap stack:
        24: aload 3
            aload 4
            if_acmpeq 25
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        25: aload 5 /* isr */
            ifnull 26
            aload 5 /* isr */
            invokevirtual java.io.InputStreamReader.close:()V
        end local 5 // java.io.InputStreamReader isr
      StackMap locals:
      StackMap stack:
        26: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        27: astore 4
            aload 3
            ifnonnull 28
            aload 4
            astore 3
            goto 29
      StackMap locals:
      StackMap stack:
        28: aload 3
            aload 4
            if_acmpeq 29
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        29: aload 3
            athrow
      StackMap locals: java.lang.ClassLoader java.io.InputStream java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
        30: pop
        31: .line 397
            aload 1 /* is */
            invokevirtual java.io.InputStream.close:()V
        32: .line 398
            goto 44
      StackMap locals:
      StackMap stack: java.io.IOException
        33: pop
            goto 44
        34: .line 393
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
        35: .line 394
            new javax.el.ELException
            dup
            aconst_null
            ldc "expressionFactory.readFailed"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "META-INF/services/javax.el.ExpressionFactory"
            aastore
            invokestatic javax.el.Util.message:(Ljavax/el/ELContext;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 3 /* e */
            invokespecial javax.el.ELException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException e
        36: .line 395
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        37: .line 397
            aload 1 /* is */
            invokevirtual java.io.InputStream.close:()V
        38: .line 398
            goto 40
      StackMap locals: java.lang.ClassLoader java.io.InputStream java.lang.String top top top top java.lang.Throwable
      StackMap stack: java.io.IOException
        39: pop
        40: .line 399
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        41: .line 397
      StackMap locals: java.lang.ClassLoader java.io.InputStream java.lang.String
      StackMap stack:
            aload 1 /* is */
            invokevirtual java.io.InputStream.close:()V
        42: .line 398
            goto 44
      StackMap locals:
      StackMap stack: java.io.IOException
        43: pop
        end local 2 // java.lang.String line
        44: .line 402
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.io.InputStream is
        end local 0 // java.lang.ClassLoader tccl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   45     0  tccl  Ljava/lang/ClassLoader;
            1   45     1    is  Ljava/io/InputStream;
            7   44     2  line  Ljava/lang/String;
            9   26     5   isr  Ljava/io/InputStreamReader;
           10   21     6    br  Ljava/io/BufferedReader;
           35   36     3     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          15    16      17  Class java.io.IOException
          10    13      20  any
           9    14      23  any
          19    22      23  any
           8    15      27  any
          19    27      27  any
           7    15      30  Class java.io.UnsupportedEncodingException
          19    30      30  Class java.io.UnsupportedEncodingException
          31    32      33  Class java.io.IOException
           7    15      34  Class java.io.IOException
          19    30      34  Class java.io.IOException
           7    15      36  any
          19    31      36  any
          34    36      36  any
          37    38      39  Class java.io.IOException
          41    42      43  Class java.io.IOException
    MethodParameters:
      Name  Flags
      tccl  

  private static java.lang.String getClassNameJreDir();
    descriptor: ()Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=6, args_size=0
         0: .line 406
            new java.io.File
            dup
            getstatic javax.el.ExpressionFactory.PROPERTY_FILE:Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 0 /* file */
        start local 0 // java.io.File file
         1: .line 407
            aload 0 /* file */
            invokevirtual java.io.File.canRead:()Z
            ifeq 20
         2: .line 408
            aconst_null
            astore 1
            aconst_null
            astore 2
         3: new java.io.FileInputStream
            dup
            aload 0 /* file */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 3 /* is */
        start local 3 // java.io.InputStream is
         4: .line 409
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 4 /* props */
        start local 4 // java.util.Properties props
         5: .line 410
            aload 4 /* props */
            aload 3 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         6: .line 411
            aload 4 /* props */
            ldc "javax.el.ExpressionFactory"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* value */
        start local 5 // java.lang.String value
         7: .line 412
            aload 5 /* value */
            ifnull 11
            aload 5 /* value */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifle 11
         8: .line 413
            aload 5 /* value */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
         9: .line 415
            aload 3 /* is */
            ifnull 10
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        10: .line 413
      StackMap locals: java.io.File java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.Properties java.lang.String
      StackMap stack: java.lang.String
            areturn
        end local 5 // java.lang.String value
        end local 4 // java.util.Properties props
        11: .line 415
      StackMap locals:
      StackMap stack:
            aload 3 /* is */
            ifnull 20
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 1
            aload 3 /* is */
            ifnull 13
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 3 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        13: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 2
            aload 1
            ifnonnull 15
            aload 2
            astore 1
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 1
            aload 2
            if_acmpeq 16
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 1
            athrow
      StackMap locals: java.io.File
      StackMap stack: java.io.FileNotFoundException
        17: pop
            goto 20
        18: .line 417
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
        19: .line 418
            new javax.el.ELException
            dup
            aconst_null
            ldc "expressionFactory.readFailed"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            getstatic javax.el.ExpressionFactory.PROPERTY_FILE:Ljava/lang/String;
            aastore
            invokestatic javax.el.Util.message:(Ljavax/el/ELContext;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* e */
            invokespecial javax.el.ELException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        20: .line 421
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1   21     0   file  Ljava/io/File;
            4   13     3     is  Ljava/io/InputStream;
            5   11     4  props  Ljava/util/Properties;
            7   11     5  value  Ljava/lang/String;
           19   20     1      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     9      12  any
           3    10      14  any
          11    14      14  any
           2    10      17  Class java.io.FileNotFoundException
          11    17      17  Class java.io.FileNotFoundException
           2    10      18  Class java.io.IOException
          11    17      18  Class java.io.IOException

  private static final java.lang.String getClassNameSysProp();
    descriptor: ()Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=0
         0: .line 425
            ldc "javax.el.ExpressionFactory"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* value */
        start local 0 // java.lang.String value
         1: .line 426
            aload 0 /* value */
            ifnull 3
            aload 0 /* value */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifle 3
         2: .line 427
            aload 0 /* value */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            areturn
         3: .line 429
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1    4     0  value  Ljava/lang/String;
}
SourceFile: "ExpressionFactory.java"
NestMembers:
  javax.el.ExpressionFactory$1  javax.el.ExpressionFactory$2  javax.el.ExpressionFactory$3  javax.el.ExpressionFactory$CacheKey  javax.el.ExpressionFactory$CacheValue
InnerClasses:
  javax.el.ExpressionFactory$1
  javax.el.ExpressionFactory$2
  javax.el.ExpressionFactory$3
  private CacheKey = javax.el.ExpressionFactory$CacheKey of javax.el.ExpressionFactory
  private CacheValue = javax.el.ExpressionFactory$CacheValue of javax.el.ExpressionFactory