public class com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum<E extends java.lang.Enum<E> extends com.oracle.truffle.js.runtime.builtins.BuiltinEnum<E>> extends com.oracle.truffle.js.builtins.JSBuiltinsContainer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum
  super_class: com.oracle.truffle.js.builtins.JSBuiltinsContainer
{
  private final java.lang.Class<E> enumType;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<TE;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 146
            ldc Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(java.lang.String, java.lang.Class<E>);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class enumType
         0: .line 150
            aload 0 /* this */
            aload 1 /* name */
            invokespecial com.oracle.truffle.js.builtins.JSBuiltinsContainer.<init>:(Ljava/lang/String;)V
         1: .line 151
            aload 0 /* this */
            aload 2 /* enumType */
            putfield com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.enumType:Ljava/lang/Class;
         2: .line 152
            aload 2 /* enumType */
            invokevirtual java.lang.Class.getEnumConstants:()[Ljava/lang/Object;
            checkcast java.lang.Enum[]
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 7
      StackMap locals: com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum java.lang.String java.lang.Class top int int java.lang.Enum[]
      StackMap stack:
         3: aload 6
            iload 4
            aaload
            astore 3 /* builtin */
        start local 3 // java.lang.Enum builtin
         4: .line 153
            aload 3 /* builtin */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isEnabled:()Z
            ifeq 6
            getstatic com.oracle.truffle.js.runtime.JSConfig.SubstrateVM:Z
            ifeq 5
            aload 3 /* builtin */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isAOTSupported:()Z
            ifeq 6
         5: .line 154
      StackMap locals: com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum java.lang.String java.lang.Class java.lang.Enum int int java.lang.Enum[]
      StackMap stack:
            aload 0 /* this */
            aload 3 /* builtin */
            invokevirtual com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.loadBuiltin:(Ljava/lang/Enum;)V
        end local 3 // java.lang.Enum builtin
         6: .line 152
      StackMap locals: com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum java.lang.String java.lang.Class top int int java.lang.Enum[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         7: iload 4
            iload 5
            if_icmplt 3
         8: .line 157
            return
        end local 2 // java.lang.Class enumType
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum<TE;>;
            0    9     1      name  Ljava/lang/String;
            0    9     2  enumType  Ljava/lang/Class<TE;>;
            4    6     3   builtin  TE;
    Signature: (Ljava/lang/String;Ljava/lang/Class<TE;>;)V
    MethodParameters:
          Name  Flags
      name      
      enumType  

  protected void <init>(java.lang.Class<E>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
        start local 1 // java.lang.Class enumType
         0: .line 160
            aload 0 /* this */
            aconst_null
            aload 1 /* enumType */
            invokespecial com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.<init>:(Ljava/lang/String;Ljava/lang/Class;)V
         1: .line 161
            return
        end local 1 // java.lang.Class enumType
        end local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum<TE;>;
            0    2     1  enumType  Ljava/lang/Class<TE;>;
    Signature: (Ljava/lang/Class<TE;>;)V
    MethodParameters:
          Name  Flags
      enumType  

  private void loadBuiltin();
    descriptor: (Ljava/lang/Enum;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
        start local 1 // java.lang.Enum builtinEnum
         0: .line 179
            new com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl
            dup
            aload 0 /* this */
            iconst_0
            iconst_0
            aload 1 /* builtinEnum */
            invokespecial com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl.<init>:(Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum;ZZLjava/lang/Enum;)V
            astore 2 /* call */
        start local 2 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory call
         1: .line 180
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isConstructor:()Z
            ifeq 2
            new com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl
            dup
            aload 0 /* this */
            iconst_1
            iconst_0
            aload 1 /* builtinEnum */
            invokespecial com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl.<init>:(Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum;ZZLjava/lang/Enum;)V
            goto 3
      StackMap locals: com.oracle.truffle.js.nodes.function.BuiltinNodeFactory
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl
         3: astore 3 /* construct */
        start local 3 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory construct
         4: .line 181
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isNewTargetConstructor:()Z
            ifeq 5
            new com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl
            dup
            aload 0 /* this */
            iconst_1
            iconst_1
            aload 1 /* builtinEnum */
            invokespecial com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl.<init>:(Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum;ZZLjava/lang/Enum;)V
            goto 6
      StackMap locals: com.oracle.truffle.js.nodes.function.BuiltinNodeFactory
      StackMap stack:
         5: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl
         6: astore 4 /* constructNewTarget */
        start local 4 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory constructNewTarget
         7: .line 182
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.builtins:Lorg/graalvm/collections/EconomicMap;
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.getName:()Ljava/lang/String;
            aload 0 /* this */
            aload 1 /* builtinEnum */
            aload 2 /* call */
            aload 3 /* construct */
            aload 4 /* constructNewTarget */
            invokevirtual com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.createBuiltin:(Ljava/lang/Enum;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;)Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
            invokeinterface org.graalvm.collections.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 183
            return
        end local 4 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory constructNewTarget
        end local 3 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory construct
        end local 2 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory call
        end local 1 // java.lang.Enum builtinEnum
        end local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    9     0                this  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum<TE;>;
            0    9     1         builtinEnum  TE;
            1    9     2                call  Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;
            4    9     3           construct  Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;
            7    9     4  constructNewTarget  Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;
    Signature: (TE;)V
    MethodParameters:
             Name  Flags
      builtinEnum  

  private com.oracle.truffle.js.nodes.function.JSBuiltin createBuiltin(E, com.oracle.truffle.js.nodes.function.BuiltinNodeFactory, com.oracle.truffle.js.nodes.function.BuiltinNodeFactory, com.oracle.truffle.js.nodes.function.BuiltinNodeFactory);
    descriptor: (Ljava/lang/Enum;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;)Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=11, locals=8, args_size=5
        start local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
        start local 1 // java.lang.Enum builtinEnum
        start local 2 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory functionNodeFactory
        start local 3 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory constructorNodeFactory
        start local 4 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory newTargetConstructorFactory
         0: .line 186
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.getKey:()Ljava/lang/Object;
            astore 5 /* key */
        start local 5 // java.lang.Object key
         1: .line 187
            getstatic com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.$assertionsDisabled:Z
            ifne 2
            aload 5 /* key */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isPropertyKey:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 188
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.getLength:()I
            istore 6 /* length */
        start local 6 // int length
         3: .line 189
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isConfigurable:()Z
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isEnumerable:()Z
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isWritable:()Z
            invokestatic com.oracle.truffle.js.runtime.objects.JSAttributes.fromConfigurableEnumerableWritable:(ZZZ)I
            istore 7 /* attributeFlags */
        start local 7 // int attributeFlags
         4: .line 190
            new com.oracle.truffle.js.nodes.function.JSBuiltin
            dup
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.getName:()Ljava/lang/String;
            aload 5 /* key */
            iload 6 /* length */
            iload 7 /* attributeFlags */
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.getECMAScriptVersion:()I
            aload 1 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.isAnnexB:()Z
            aload 2 /* functionNodeFactory */
            aload 3 /* constructorNodeFactory */
         5: .line 191
            aload 4 /* newTargetConstructorFactory */
         6: .line 190
            invokespecial com.oracle.truffle.js.nodes.function.JSBuiltin.<init>:(Ljava/lang/String;Ljava/lang/Object;IIIZLcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;)V
            areturn
        end local 7 // int attributeFlags
        end local 6 // int length
        end local 5 // java.lang.Object key
        end local 4 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory newTargetConstructorFactory
        end local 3 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory constructorNodeFactory
        end local 2 // com.oracle.truffle.js.nodes.function.BuiltinNodeFactory functionNodeFactory
        end local 1 // java.lang.Enum builtinEnum
        end local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0    7     0                         this  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum<TE;>;
            0    7     1                  builtinEnum  TE;
            0    7     2          functionNodeFactory  Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;
            0    7     3       constructorNodeFactory  Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;
            0    7     4  newTargetConstructorFactory  Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;
            1    7     5                          key  Ljava/lang/Object;
            3    7     6                       length  I
            4    7     7               attributeFlags  I
    Signature: (TE;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;Lcom/oracle/truffle/js/nodes/function/BuiltinNodeFactory;)Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    MethodParameters:
                             Name  Flags
      builtinEnum                  
      functionNodeFactory          
      constructorNodeFactory       
      newTargetConstructorFactory  

  public java.lang.Class<E> getEnumType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
         0: .line 195
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum.enumType:Ljava/lang/Class;
            areturn
        end local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum<TE;>;
    Signature: ()Ljava/lang/Class<TE;>;

  protected  createNode(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin, boolean, boolean, E);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;ZZLjava/lang/Enum;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
        start local 3 // boolean construct
        start local 4 // boolean newTarget
        start local 5 // java.lang.Enum builtinEnum
         0: .line 199
            aload 5 /* builtinEnum */
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            checkcast com.oracle.truffle.js.runtime.builtins.BuiltinEnum
            aload 1 /* context */
            aload 2 /* builtin */
            iload 3 /* construct */
            iload 4 /* newTarget */
            invokeinterface com.oracle.truffle.js.runtime.builtins.BuiltinEnum.createNode:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;ZZ)Ljava/lang/Object;
            areturn
        end local 5 // java.lang.Enum builtinEnum
        end local 4 // boolean newTarget
        end local 3 // boolean construct
        end local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer$SwitchEnum<TE;>;
            0    1     1      context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    1     2      builtin  Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
            0    1     3    construct  Z
            0    1     4    newTarget  Z
            0    1     5  builtinEnum  TE;
    Signature: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;ZZTE;)Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      context      
      builtin      
      construct    
      newTarget    
      builtinEnum  
}
Signature: <E:Ljava/lang/Enum<TE;>;:Lcom/oracle/truffle/js/runtime/builtins/BuiltinEnum<TE;>;>Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer;
SourceFile: "JSBuiltinsContainer.java"
NestHost: com.oracle.truffle.js.builtins.JSBuiltinsContainer
InnerClasses:
  public SwitchEnum = com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum of com.oracle.truffle.js.builtins.JSBuiltinsContainer
  FactoryImpl = com.oracle.truffle.js.builtins.JSBuiltinsContainer$SwitchEnum$1FactoryImpl