public class com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory
  super_class: java.lang.Object
{
  private final com.oracle.truffle.dsl.processor.ProcessorContext context;
    descriptor: Lcom/oracle/truffle/dsl/processor/ProcessorContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.dsl.processor.model.NodeData node;
    descriptor: Lcom/oracle/truffle/dsl/processor/model/NodeData;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.dsl.processor.java.model.CodeTypeElement createdFactoryElement;
    descriptor: Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.dsl.processor.TruffleTypes types;
    descriptor: Lcom/oracle/truffle/dsl/processor/TruffleTypes;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.oracle.truffle.dsl.processor.ProcessorContext, com.oracle.truffle.dsl.processor.model.NodeData, com.oracle.truffle.dsl.processor.java.model.CodeTypeElement);
    descriptor: (Lcom/oracle/truffle/dsl/processor/ProcessorContext;Lcom/oracle/truffle/dsl/processor/model/NodeData;Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
        start local 1 // com.oracle.truffle.dsl.processor.ProcessorContext context
        start local 2 // com.oracle.truffle.dsl.processor.model.NodeData node
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement createdClass
         0: .line 78
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 79
            aload 0 /* this */
            aload 1 /* context */
            putfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
         2: .line 80
            aload 0 /* this */
            aload 2 /* node */
            putfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
         3: .line 81
            aload 0 /* this */
            aload 3 /* createdClass */
            putfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createdFactoryElement:Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
         4: .line 82
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            putfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
         5: .line 83
            return
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement createdClass
        end local 2 // com.oracle.truffle.dsl.processor.model.NodeData node
        end local 1 // com.oracle.truffle.dsl.processor.ProcessorContext context
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            0    6     1       context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            0    6     2          node  Lcom/oracle/truffle/dsl/processor/model/NodeData;
            0    6     3  createdClass  Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
    MethodParameters:
              Name  Flags
      context       
      node          
      createdClass  

  public static java.lang.String factoryClassName(javax.lang.model.element.Element);
    descriptor: (Ljavax/lang/model/element/Element;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // javax.lang.model.element.Element type
         0: .line 86
            new java.lang.StringBuilder
            dup
            aload 0 /* type */
            invokeinterface javax.lang.model.element.Element.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "Factory"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // javax.lang.model.element.Element type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljavax/lang/model/element/Element;
    MethodParameters:
      Name  Flags
      type  

  public com.oracle.truffle.dsl.processor.java.model.CodeTypeElement create();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 90
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokeinterface javax.lang.model.element.TypeElement.getModifiers:()Ljava/util/Set;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getVisibility:(Ljava/util/Set;)Ljavax/lang/model/element/Modifier;
            astore 1 /* visibility */
        start local 1 // javax.lang.model.element.Modifier visibility
         1: .line 91
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getTypes:()Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.NodeFactory:Ljavax/lang/model/type/DeclaredType;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.fromTypeMirror:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/TypeElement;
            iconst_1
            anewarray javax.lang.model.type.TypeMirror
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getDeclaredType:(Ljavax/lang/model/element/TypeElement;[Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/DeclaredType;
            astore 2 /* nodeFactory */
        start local 2 // javax.lang.model.type.TypeMirror nodeFactory
         2: .line 93
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            aconst_null
            iconst_0
            anewarray javax.lang.model.element.Modifier
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.factoryClassName:(Ljavax/lang/model/element/Element;)Ljava/lang/String;
            aconst_null
            invokestatic com.oracle.truffle.dsl.processor.generator.GeneratorUtils.createClass:(Lcom/oracle/truffle/dsl/processor/model/Template;Lcom/oracle/truffle/dsl/processor/model/TemplateMethod;Ljava/util/Set;Ljava/lang/String;Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            astore 3 /* clazz */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement clazz
         3: .line 94
            aload 1 /* visibility */
            ifnull 5
         4: .line 95
            aload 3 /* clazz */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getModifiers:()Ljava/util/Set;
            aload 1 /* visibility */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 97
      StackMap locals: javax.lang.model.element.Modifier javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeTypeElement
      StackMap stack:
            aload 3 /* clazz */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.FINAL:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 99
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createdFactoryElement:Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            ifnull 22
         7: .line 100
            aload 3 /* clazz */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getImplements:()Ljava/util/List;
            aload 2 /* nodeFactory */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 102
            aload 3 /* clazz */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createNodeFactoryConstructor:()Ljavax/lang/model/element/Element;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
         9: .line 103
            aload 3 /* clazz */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createCreateGetNodeClass:()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        10: .line 104
            aload 3 /* clazz */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createCreateGetExecutionSignature:()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        11: .line 105
            aload 3 /* clazz */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createCreateGetNodeSignatures:()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        12: .line 106
            aload 3 /* clazz */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createCreateNodeMethod:()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        13: .line 107
            aload 3 /* clazz */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createGetUncached:()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.addOptional:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        14: .line 108
            aload 3 /* clazz */
            aload 0 /* this */
            aload 1 /* visibility */
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createGetInstanceMethod:(Ljavax/lang/model/element/Modifier;)Ljavax/lang/model/element/ExecutableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        15: .line 109
            aload 3 /* clazz */
            aload 0 /* this */
            aload 3 /* clazz */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createInstanceConstant:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        16: .line 110
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createdFactoryElement:Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.generator.GeneratorUtils.findUserConstructors:(Ljavax/lang/model/type/TypeMirror;)Ljava/util/List;
            astore 4 /* constructors */
        start local 4 // java.util.List constructors
        17: .line 111
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            aload 4 /* constructors */
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createFactoryMethods:(Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljava/util/List;)Ljava/util/List;
            astore 5 /* factoryMethods */
        start local 5 // java.util.List factoryMethods
        18: .line 112
            aload 5 /* factoryMethods */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 21
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.element.Modifier javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeTypeElement java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        19: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            astore 6 /* method */
        start local 6 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        20: .line 113
            aload 3 /* clazz */
            aload 6 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.add:(Ljavax/lang/model/element/Element;)Ljavax/lang/model/element/Element;
            pop
        end local 6 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        21: .line 112
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 19
        end local 5 // java.util.List factoryMethods
        end local 4 // java.util.List constructors
        22: .line 117
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.element.Modifier javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeTypeElement
      StackMap stack:
            aload 3 /* clazz */
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement clazz
        end local 2 // javax.lang.model.type.TypeMirror nodeFactory
        end local 1 // javax.lang.model.element.Modifier visibility
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   23     0            this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            1   23     1      visibility  Ljavax/lang/model/element/Modifier;
            2   23     2     nodeFactory  Ljavax/lang/model/type/TypeMirror;
            3   23     3           clazz  Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
           17   22     4    constructors  Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;
           18   22     5  factoryMethods  Ljava/util/List<Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;>;
           20   21     6          method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;

  private javax.lang.model.element.Element createNodeFactoryConstructor();
    descriptor: ()Ljavax/lang/model/element/Element;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 121
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_1
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PRIVATE:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aconst_null
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.factoryClassName:(Ljavax/lang/model/element/Element;)Ljava/lang/String;
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 1 /* method */
        start local 1 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         1: .line 122
            aload 1 /* method */
            areturn
        end local 1 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            1    2     1  method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;

  private com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createCreateGetNodeClass();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 126
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            ldc Ljava/lang/Class;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.fromTypeMirror:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/TypeElement;
            iconst_1
            anewarray javax.lang.model.type.TypeMirror
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getDeclaredType:(Ljavax/lang/model/element/TypeElement;[Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/DeclaredType;
            astore 1 /* returnValue */
        start local 1 // javax.lang.model.type.TypeMirror returnValue
         1: .line 127
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_1
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 1 /* returnValue */
            ldc "getNodeClass"
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 2 /* method */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         2: .line 128
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.typeLiteral:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         3: .line 129
            aload 2 /* method */
            areturn
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 1 // javax.lang.model.type.TypeMirror returnValue
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            1    4     1  returnValue  Ljavax/lang/model/type/TypeMirror;
            2    4     2       method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;

  private com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createCreateGetNodeSignatures();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 133
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.NodeFactory:Ljavax/lang/model/type/DeclaredType;
            ldc "getNodeSignatures"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findMethod:(Ljavax/lang/model/type/DeclaredType;Ljava/lang/String;)Ljavax/lang/model/element/ExecutableElement;
            invokeinterface javax.lang.model.element.ExecutableElement.getReturnType:()Ljavax/lang/model/type/TypeMirror;
            astore 1 /* returnType */
        start local 1 // javax.lang.model.type.TypeMirror returnType
         1: .line 134
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_1
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 1 /* returnType */
            ldc "getNodeSignatures"
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 2 /* method */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         2: .line 135
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         3: .line 136
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         4: .line 138
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startGroup:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         5: .line 139
            aload 3 /* builder */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            ldc Ljava/util/Arrays;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            ldc "asList"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         6: .line 140
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createdFactoryElement:Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.generator.GeneratorUtils.findUserConstructors:(Ljavax/lang/model/type/TypeMirror;)Ljava/util/List;
            astore 4 /* constructors */
        start local 4 // java.util.List constructors
         7: .line 141
            aload 4 /* constructors */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 17
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List top java.util.Iterator
      StackMap stack:
         8: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.ExecutableElement
            astore 5 /* constructor */
        start local 5 // javax.lang.model.element.ExecutableElement constructor
         9: .line 142
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startGroup:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        10: .line 143
            aload 3 /* builder */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            ldc Ljava/util/Arrays;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            ldc "asList"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        11: .line 144
            aload 5 /* constructor */
            invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 14
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List javax.lang.model.element.ExecutableElement java.util.Iterator top java.util.Iterator
      StackMap stack:
        12: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.VariableElement
            astore 7 /* var */
        start local 7 // javax.lang.model.element.VariableElement var
        13: .line 145
            aload 3 /* builder */
            aload 7 /* var */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.typeLiteral:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 7 // javax.lang.model.element.VariableElement var
        14: .line 144
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 147
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        16: .line 148
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 5 // javax.lang.model.element.ExecutableElement constructor
        17: .line 141
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        18: .line 150
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        19: .line 151
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        20: .line 153
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        21: .line 154
            aload 2 /* method */
            areturn
        end local 4 // java.util.List constructors
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 1 // javax.lang.model.type.TypeMirror returnType
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   22     0          this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            1   22     1    returnType  Ljavax/lang/model/type/TypeMirror;
            2   22     2        method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            3   22     3       builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            7   22     4  constructors  Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;
            9   17     5   constructor  Ljavax/lang/model/element/ExecutableElement;
           13   14     7           var  Ljavax/lang/model/element/VariableElement;

  private com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createCreateGetExecutionSignature();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 158
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.NodeFactory:Ljavax/lang/model/type/DeclaredType;
            ldc "getExecutionSignature"
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.findMethod:(Ljavax/lang/model/type/DeclaredType;Ljava/lang/String;)Ljavax/lang/model/element/ExecutableElement;
            astore 1 /* overriddenMethod */
        start local 1 // javax.lang.model.element.ExecutableElement overriddenMethod
         1: .line 159
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_1
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 1 /* overriddenMethod */
            invokeinterface javax.lang.model.element.ExecutableElement.getReturnType:()Ljavax/lang/model/type/TypeMirror;
            ldc "getExecutionSignature"
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 2 /* method */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         2: .line 160
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         3: .line 161
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         4: .line 163
            aload 3 /* builder */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            ldc Ljava/util/Arrays;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            ldc "asList"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startStaticCall:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         5: .line 164
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getChildExecutions:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 12
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder top java.util.Iterator
      StackMap stack:
         6: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.NodeExecutionData
            astore 4 /* execution */
        start local 4 // com.oracle.truffle.dsl.processor.model.NodeExecutionData execution
         7: .line 165
            aload 4 /* execution */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeExecutionData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            astore 6 /* nodeType */
        start local 6 // javax.lang.model.type.TypeMirror nodeType
         8: .line 166
            aload 6 /* nodeType */
            ifnull 11
         9: .line 167
            aload 3 /* builder */
            aload 6 /* nodeType */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.typeLiteral:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        10: .line 168
            goto 12
        11: .line 169
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder com.oracle.truffle.dsl.processor.model.NodeExecutionData java.util.Iterator javax.lang.model.type.TypeMirror
      StackMap stack:
            aload 3 /* builder */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.Node:Ljavax/lang/model/type/DeclaredType;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.typeLiteral:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 6 // javax.lang.model.type.TypeMirror nodeType
        end local 4 // com.oracle.truffle.dsl.processor.model.NodeExecutionData execution
        12: .line 164
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        13: .line 172
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        14: .line 174
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        15: .line 175
            aload 2 /* method */
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 1 // javax.lang.model.element.ExecutableElement overriddenMethod
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   16     0              this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            1   16     1  overriddenMethod  Ljavax/lang/model/element/ExecutableElement;
            2   16     2            method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            3   16     3           builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            7   12     4         execution  Lcom/oracle/truffle/dsl/processor/model/NodeExecutionData;
            8   12     6          nodeType  Ljavax/lang/model/type/TypeMirror;

  private com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createGetUncached();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 179
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.isGenerateUncached:()Z
            ifne 2
         1: .line 180
            aconst_null
            areturn
         2: .line 182
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_1
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            ldc "getUncachedInstance"
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 1 /* method */
        start local 1 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         3: .line 183
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createdFactoryElement:Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            astore 2 /* className */
        start local 2 // java.lang.String className
         4: .line 184
            aload 1 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         5: .line 185
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         6: .line 186
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.isGenerateFactory:()Z
            ifeq 9
         7: .line 187
            aload 3 /* builder */
            aload 2 /* className */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            ldc "."
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            ldc "UNCACHED"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         8: .line 188
            goto 10
         9: .line 189
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement java.lang.String com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder
      StackMap stack:
            aload 3 /* builder */
            ldc "UNCACHED"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        10: .line 191
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        11: .line 192
            aload 1 /* method */
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // java.lang.String className
        end local 1 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            3   12     1     method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            4   12     2  className  Ljava/lang/String;
            5   12     3    builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;

  private com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createCreateNodeMethod();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
         0: .line 196
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_1
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            ldc "createNode"
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 1 /* method */
        start local 1 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         1: .line 197
            new com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            ldc Ljava/lang/Object;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            ldc "arguments"
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeVariableElement.<init>:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)V
            astore 2 /* arguments */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeVariableElement arguments
         2: .line 198
            aload 1 /* method */
            iconst_1
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.setVarArgs:(Z)V
         3: .line 199
            aload 1 /* method */
            aload 2 /* arguments */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.addParameter:(Ljavax/lang/model/element/VariableElement;)V
         4: .line 201
            aload 1 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         5: .line 202
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createdFactoryElement:Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.generator.GeneratorUtils.findUserConstructors:(Ljavax/lang/model/type/TypeMirror;)Ljava/util/List;
            astore 4 /* signatures */
        start local 4 // java.util.List signatures
         6: .line 203
            iconst_0
            istore 5 /* ifStarted */
        start local 5 // boolean ifStarted
         7: .line 205
            aload 4 /* signatures */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 43
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int top java.util.Iterator
      StackMap stack:
         8: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.ExecutableElement
            astore 6 /* element */
        start local 6 // javax.lang.model.element.ExecutableElement element
         9: .line 206
            aload 3 /* builder */
            iload 5 /* ifStarted */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startIf:(Z)Z
            istore 5 /* ifStarted */
        10: .line 207
            aload 3 /* builder */
            new java.lang.StringBuilder
            dup
            ldc "arguments.length == "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* element */
            invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        11: .line 209
            iconst_0
            istore 8 /* index */
        start local 8 // int index
        12: .line 210
            aload 6 /* element */
            invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 25
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int javax.lang.model.element.ExecutableElement java.util.Iterator int top java.util.Iterator
      StackMap stack:
        13: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.VariableElement
            astore 9 /* param */
        start local 9 // javax.lang.model.element.VariableElement param
        14: .line 211
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isObject:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 17
        15: .line 212
            iinc 8 /* index */ 1
        16: .line 213
            goto 25
        17: .line 215
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int javax.lang.model.element.ExecutableElement java.util.Iterator int javax.lang.model.element.VariableElement java.util.Iterator
      StackMap stack:
            aload 3 /* builder */
            ldc " && "
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        18: .line 216
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifne 20
        19: .line 217
            aload 3 /* builder */
            new java.lang.StringBuilder
            dup
            ldc "(arguments["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 8 /* index */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] == null || "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        20: .line 219
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            new java.lang.StringBuilder
            dup
            ldc "arguments["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 8 /* index */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] instanceof "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        21: .line 220
            aload 3 /* builder */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.boxType:(Lcom/oracle/truffle/dsl/processor/ProcessorContext;Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.eraseGenericTypes:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.type:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        22: .line 221
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface javax.lang.model.type.TypeMirror.getKind:()Ljavax/lang/model/type/TypeKind;
            invokevirtual javax.lang.model.type.TypeKind.isPrimitive:()Z
            ifne 24
        23: .line 222
            aload 3 /* builder */
            ldc ")"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        24: .line 224
      StackMap locals:
      StackMap stack:
            iinc 8 /* index */ 1
        end local 9 // javax.lang.model.element.VariableElement param
        25: .line 210
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int javax.lang.model.element.ExecutableElement java.util.Iterator int top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        26: .line 226
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        27: .line 227
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startBlock:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        28: .line 229
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            ldc "create"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startCall:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        29: .line 230
            iconst_0
            istore 8 /* index */
        30: .line 231
            aload 6 /* element */
            invokeinterface javax.lang.model.element.ExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 40
      StackMap locals:
      StackMap stack:
        31: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.VariableElement
            astore 9 /* param */
        start local 9 // javax.lang.model.element.VariableElement param
        32: .line 232
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startGroup:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        33: .line 233
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isObject:(Ljavax/lang/model/type/TypeMirror;)Z
            ifne 37
        34: .line 234
            aload 3 /* builder */
            ldc "("
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.type:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            ldc ") "
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        35: .line 235
            aload 9 /* param */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.hasGenericTypes:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 37
        36: .line 236
            aload 1 /* method */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "unchecked"
            aastore
            invokestatic com.oracle.truffle.dsl.processor.generator.GeneratorUtils.mergeSupressWarnings:(Lcom/oracle/truffle/dsl/processor/java/model/CodeElement;[Ljava/lang/String;)V
        37: .line 239
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int javax.lang.model.element.ExecutableElement java.util.Iterator int javax.lang.model.element.VariableElement java.util.Iterator
      StackMap stack:
            aload 3 /* builder */
            ldc "arguments["
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            iload 8 /* index */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            ldc "]"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        38: .line 240
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        39: .line 241
            iinc 8 /* index */ 1
        end local 9 // javax.lang.model.element.VariableElement param
        40: .line 231
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int javax.lang.model.element.ExecutableElement java.util.Iterator int top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 31
        41: .line 243
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        42: .line 245
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 8 // int index
        end local 6 // javax.lang.model.element.ExecutableElement element
        43: .line 205
      StackMap locals: com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeVariableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder java.util.List int top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        44: .line 248
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startElseBlock:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        45: .line 249
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startThrow:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.context:Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            ldc Ljava/lang/IllegalArgumentException;
            invokevirtual com.oracle.truffle.dsl.processor.ProcessorContext.getType:(Ljava/lang/Class;)Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        46: .line 250
            aload 3 /* builder */
            ldc "Invalid create signature."
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.doubleQuote:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        47: .line 251
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        48: .line 252
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        49: .line 253
            aload 1 /* method */
            areturn
        end local 5 // boolean ifStarted
        end local 4 // java.util.List signatures
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeVariableElement arguments
        end local 1 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   50     0        this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            1   50     1      method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            2   50     2   arguments  Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;
            5   50     3     builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            6   50     4  signatures  Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;
            7   50     5   ifStarted  Z
            9   43     6     element  Ljavax/lang/model/element/ExecutableElement;
           12   43     8       index  I
           14   25     9       param  Ljavax/lang/model/element/VariableElement;
           32   40     9       param  Ljavax/lang/model/element/VariableElement;

  private javax.lang.model.element.ExecutableElement createGetInstanceMethod(javax.lang.model.element.Modifier);
    descriptor: (Ljavax/lang/model/element/Modifier;)Ljavax/lang/model/element/ExecutableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
        start local 1 // javax.lang.model.element.Modifier visibility
         0: .line 257
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.types:Lcom/oracle/truffle/dsl/processor/TruffleTypes;
            getfield com.oracle.truffle.dsl.processor.TruffleTypes.NodeFactory:Ljavax/lang/model/type/DeclaredType;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.fromTypeMirror:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/TypeElement;
            astore 2 /* nodeFactoryType */
        start local 2 // javax.lang.model.element.TypeElement nodeFactoryType
         1: .line 258
            aload 2 /* nodeFactoryType */
            iconst_1
            anewarray javax.lang.model.type.TypeMirror
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getDeclaredType:(Ljavax/lang/model/element/TypeElement;[Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/DeclaredType;
            astore 3 /* returnType */
        start local 3 // javax.lang.model.type.TypeMirror returnType
         2: .line 260
            new com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            dup
            iconst_0
            anewarray javax.lang.model.element.Modifier
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 3 /* returnType */
            ldc "getInstance"
            iconst_0
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;[Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;)V
            astore 4 /* method */
        start local 4 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         3: .line 261
            aload 1 /* visibility */
            ifnull 5
         4: .line 262
            aload 4 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            aload 1 /* visibility */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 264
      StackMap locals: javax.lang.model.element.TypeElement javax.lang.model.type.TypeMirror com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
      StackMap stack:
            aload 4 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 265
            aload 4 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.instanceVarName:(Lcom/oracle/truffle/dsl/processor/model/NodeData;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         7: .line 266
            aload 4 /* method */
            areturn
        end local 4 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 3 // javax.lang.model.type.TypeMirror returnType
        end local 2 // javax.lang.model.element.TypeElement nodeFactoryType
        end local 1 // javax.lang.model.element.Modifier visibility
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            0    8     1       visibility  Ljavax/lang/model/element/Modifier;
            1    8     2  nodeFactoryType  Ljavax/lang/model/element/TypeElement;
            2    8     3       returnType  Ljavax/lang/model/type/TypeMirror;
            3    8     4           method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    MethodParameters:
            Name  Flags
      visibility  

  private static java.lang.String instanceVarName(com.oracle.truffle.dsl.processor.model.NodeData);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/NodeData;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
         0: .line 270
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getDeclaringNode:()Lcom/oracle/truffle/dsl/processor/model/NodeData;
            ifnull 2
         1: .line 271
            new java.lang.StringBuilder
            dup
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.factoryClassName:(Ljavax/lang/model/element/Element;)Ljava/lang/String;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.createConstantName:(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
            ldc "_INSTANCE"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         2: .line 273
      StackMap locals:
      StackMap stack:
            ldc "INSTANCE"
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  node  Lcom/oracle/truffle/dsl/processor/model/NodeData;
    MethodParameters:
      Name  Flags
      node  

  private com.oracle.truffle.dsl.processor.java.model.CodeVariableElement createInstanceConstant(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
        start local 1 // javax.lang.model.type.TypeMirror factoryType
         0: .line 278
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.instanceVarName:(Lcom/oracle/truffle/dsl/processor/model/NodeData;)Ljava/lang/String;
            astore 2 /* varName */
        start local 2 // java.lang.String varName
         1: .line 279
            new com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            dup
            iconst_3
            anewarray javax.lang.model.element.Modifier
            dup
            iconst_0
            getstatic javax.lang.model.element.Modifier.PRIVATE:Ljavax/lang/model/element/Modifier;
            aastore
            dup
            iconst_1
            getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
            aastore
            dup
            iconst_2
            getstatic javax.lang.model.element.Modifier.FINAL:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 1 /* factoryType */
            aload 2 /* varName */
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeVariableElement.<init>:(Ljava/util/Set;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)V
            astore 3 /* var */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeVariableElement var
         2: .line 280
            aload 3 /* var */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeVariableElement.createInitBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.node:Lcom/oracle/truffle/dsl/processor/model/NodeData;
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.factoryClassName:(Ljavax/lang/model/element/Element;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         3: .line 281
            aload 3 /* var */
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeVariableElement var
        end local 2 // java.lang.String varName
        end local 1 // javax.lang.model.type.TypeMirror factoryType
        end local 0 // com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lcom/oracle/truffle/dsl/processor/generator/NodeFactoryFactory;
            0    4     1  factoryType  Ljavax/lang/model/type/TypeMirror;
            1    4     2      varName  Ljava/lang/String;
            2    4     3          var  Lcom/oracle/truffle/dsl/processor/java/model/CodeVariableElement;
    MethodParameters:
             Name  Flags
      factoryType  

  public static java.util.List<com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement> createFactoryMethods(com.oracle.truffle.dsl.processor.model.NodeData, java.util.List<javax.lang.model.element.ExecutableElement>);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljava/util/List;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
        start local 1 // java.util.List constructors
         0: .line 285
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* methods */
        start local 2 // java.util.List methods
         1: .line 286
            aload 1 /* constructors */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 8
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.ExecutableElement
            astore 3 /* constructor */
        start local 3 // javax.lang.model.element.ExecutableElement constructor
         3: .line 287
            aload 2 /* methods */
            aload 0 /* node */
            aload 3 /* constructor */
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createCreateMethod:(Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 288
            aload 3 /* constructor */
            instanceof com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement
            ifeq 6
         5: .line 289
            aload 3 /* constructor */
            invokeinterface javax.lang.model.element.ExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.PRIVATE:Ljavax/lang/model/element/Modifier;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.setVisibility:(Ljava/util/Set;Ljavax/lang/model/element/Modifier;)V
         6: .line 291
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData java.util.List java.util.List javax.lang.model.element.ExecutableElement java.util.Iterator
      StackMap stack:
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.isGenerateUncached:()Z
            ifeq 8
         7: .line 292
            aload 2 /* methods */
            aload 0 /* node */
            aload 3 /* constructor */
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeFactoryFactory.createGetUncached:(Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // javax.lang.model.element.ExecutableElement constructor
         8: .line 286
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData java.util.List java.util.List top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         9: .line 296
            aload 2 /* methods */
            areturn
        end local 2 // java.util.List methods
        end local 1 // java.util.List constructors
        end local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          node  Lcom/oracle/truffle/dsl/processor/model/NodeData;
            0   10     1  constructors  Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;
            1   10     2       methods  Ljava/util/List<Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;>;
            3    8     3   constructor  Ljavax/lang/model/element/ExecutableElement;
    Signature: (Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljava/util/List<Ljavax/lang/model/element/ExecutableElement;>;)Ljava/util/List<Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;>;
    MethodParameters:
              Name  Flags
      node          
      constructors  

  private static com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createGetUncached(com.oracle.truffle.dsl.processor.model.NodeData, javax.lang.model.element.ExecutableElement);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
        start local 1 // javax.lang.model.element.ExecutableElement constructor
         0: .line 300
            aload 1 /* constructor */
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.clone:(Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            astore 2 /* method */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         1: .line 301
            aload 2 /* method */
            ldc "getUncached"
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeNames.of:(Ljava/lang/String;)Ljavax/lang/model/element/Name;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.setSimpleName:(Ljavax/lang/model/element/Name;)V
         2: .line 302
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            invokeinterface java.util.Set.clear:()V
         3: .line 303
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 304
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 305
            aload 2 /* method */
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.setReturnType:(Ljavax/lang/model/type/TypeMirror;)V
         6: .line 306
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* body */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder body
         7: .line 307
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         8: .line 308
            aload 0 /* node */
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.nodeType:(Lcom/oracle/truffle/dsl/processor/model/NodeData;)Ljavax/lang/model/type/TypeMirror;
            astore 4 /* type */
        start local 4 // javax.lang.model.type.TypeMirror type
         9: .line 309
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.hasErrors:()Z
            ifeq 17
        10: .line 310
            aload 3 /* body */
            aload 4 /* type */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        11: .line 311
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 14
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder javax.lang.model.type.TypeMirror top java.util.Iterator
      StackMap stack:
        12: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.VariableElement
            astore 5 /* var */
        start local 5 // javax.lang.model.element.VariableElement var
        13: .line 312
            aload 3 /* body */
            aload 5 /* var */
            invokeinterface javax.lang.model.element.VariableElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.defaultValue:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 5 // javax.lang.model.element.VariableElement var
        14: .line 311
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 314
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        16: .line 315
            goto 19
        17: .line 316
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder javax.lang.model.type.TypeMirror
      StackMap stack:
            aload 4 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.castTypeElement:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/element/TypeElement;
            astore 5 /* typeElement */
        start local 5 // javax.lang.model.element.TypeElement typeElement
        18: .line 317
            aload 3 /* body */
            aload 5 /* typeElement */
            invokeinterface javax.lang.model.element.TypeElement.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            ldc ".UNCACHED"
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 5 // javax.lang.model.element.TypeElement typeElement
        19: .line 319
      StackMap locals:
      StackMap stack:
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        20: .line 320
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.clear:()V
        21: .line 321
            aload 2 /* method */
            areturn
        end local 4 // javax.lang.model.type.TypeMirror type
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder body
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 1 // javax.lang.model.element.ExecutableElement constructor
        end local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         node  Lcom/oracle/truffle/dsl/processor/model/NodeData;
            0   22     1  constructor  Ljavax/lang/model/element/ExecutableElement;
            1   22     2       method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            7   22     3         body  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            9   22     4         type  Ljavax/lang/model/type/TypeMirror;
           13   14     5          var  Ljavax/lang/model/element/VariableElement;
           18   19     5  typeElement  Ljavax/lang/model/element/TypeElement;
    MethodParameters:
             Name  Flags
      node         
      constructor  

  private static com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createCreateMethod(com.oracle.truffle.dsl.processor.model.NodeData, javax.lang.model.element.ExecutableElement);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/NodeData;Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
        start local 1 // javax.lang.model.element.ExecutableElement constructor
         0: .line 325
            aload 1 /* constructor */
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.clone:(Ljavax/lang/model/element/ExecutableElement;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            astore 2 /* method */
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         1: .line 326
            aload 2 /* method */
            ldc "create"
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeNames.of:(Ljava/lang/String;)Ljavax/lang/model/element/Name;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.setSimpleName:(Ljavax/lang/model/element/Name;)V
         2: .line 327
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            invokeinterface java.util.Set.clear:()V
         3: .line 328
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.PUBLIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 329
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getModifiers:()Ljava/util/Set;
            getstatic javax.lang.model.element.Modifier.STATIC:Ljavax/lang/model/element/Modifier;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 330
            aload 2 /* method */
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getNodeType:()Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.setReturnType:(Ljavax/lang/model/type/TypeMirror;)V
         6: .line 332
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* body */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder body
         7: .line 333
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         8: .line 334
            aload 0 /* node */
            invokevirtual com.oracle.truffle.dsl.processor.model.NodeData.getSpecializations:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 11
         9: .line 335
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.nullLiteral:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        10: .line 336
            goto 17
        11: .line 337
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder
      StackMap stack:
            aload 3 /* body */
            aload 0 /* node */
            invokestatic com.oracle.truffle.dsl.processor.generator.NodeCodeGenerator.nodeType:(Lcom/oracle/truffle/dsl/processor/model/NodeData;)Ljavax/lang/model/type/TypeMirror;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        12: .line 338
            aload 2 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.getParameters:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 15
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder top java.util.Iterator
      StackMap stack:
        13: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.element.VariableElement
            astore 4 /* var */
        start local 4 // javax.lang.model.element.VariableElement var
        14: .line 339
            aload 3 /* body */
            aload 4 /* var */
            invokeinterface javax.lang.model.element.VariableElement.getSimpleName:()Ljavax/lang/model/element/Name;
            invokeinterface javax.lang.model.element.Name.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.string:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        end local 4 // javax.lang.model.element.VariableElement var
        15: .line 338
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 341
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        17: .line 344
      StackMap locals: com.oracle.truffle.dsl.processor.model.NodeData javax.lang.model.element.ExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder
      StackMap stack:
            aload 3 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        18: .line 345
            aload 2 /* method */
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder body
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 1 // javax.lang.model.element.ExecutableElement constructor
        end local 0 // com.oracle.truffle.dsl.processor.model.NodeData node
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         node  Lcom/oracle/truffle/dsl/processor/model/NodeData;
            0   19     1  constructor  Ljavax/lang/model/element/ExecutableElement;
            1   19     2       method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            7   19     3         body  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
           14   15     4          var  Ljavax/lang/model/element/VariableElement;
    MethodParameters:
             Name  Flags
      node         
      constructor  
}
SourceFile: "NodeFactoryFactory.java"