public class com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator extends com.oracle.truffle.dsl.processor.generator.CodeTypeElementFactory<com.oracle.truffle.dsl.processor.model.TypeSystemData>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator
  super_class: com.oracle.truffle.dsl.processor.generator.CodeTypeElementFactory
{
  private static final java.lang.String LOCAL_VALUE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "value"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator this
         0: .line 75
            aload 0 /* this */
            invokespecial com.oracle.truffle.dsl.processor.generator.CodeTypeElementFactory.<init>:()V
            return
        end local 0 // com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator;

  static com.oracle.truffle.dsl.processor.java.model.CodeTree implicitCastFlat(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
         0: .line 80
            aload 0 /* typeSystem */
            aload 1 /* type */
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.asImplicitTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            aload 2 /* value */
            aload 3 /* state */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.callImplictMethodFlat:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
            0    1     2       value  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            0    1     3       state  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      value       
      state       

  static com.oracle.truffle.dsl.processor.java.model.CodeTree implicitCheckFlat(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
         0: .line 84
            aload 0 /* typeSystem */
            aload 1 /* type */
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.isImplicitTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            aload 2 /* value */
            aload 3 /* state */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.callImplictMethodFlat:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
            0    1     2       value  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            0    1     3       state  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      value       
      state       

  static com.oracle.truffle.dsl.processor.java.model.CodeTree implicitSpecializeFlat(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
         0: .line 88
            aload 0 /* typeSystem */
            aload 1 /* type */
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.specializeImplicitTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            aload 2 /* value */
            aconst_null
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.callImplictMethodFlat:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
            0    1     2       value  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      value       

  private static com.oracle.truffle.dsl.processor.java.model.CodeTree callImplictMethodFlat(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, java.lang.String, com.oracle.truffle.dsl.processor.java.model.CodeTree, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=5
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // java.lang.String methodName
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        start local 4 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
         0: .line 92
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isObject:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 2
         1: .line 93
            aload 3 /* value */
            areturn
         2: .line 95
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 5 /* builder */
        start local 5 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         3: .line 96
            aload 5 /* builder */
            aload 0 /* typeSystem */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.createTypeSystemGen:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeMirror;
            aload 2 /* methodName */
            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
         4: .line 97
            aload 4 /* state */
            ifnull 6
         5: .line 98
            aload 5 /* builder */
            aload 4 /* state */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         6: .line 100
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder
      StackMap stack:
            aload 5 /* builder */
            aload 3 /* value */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         7: .line 101
            aload 5 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         8: .line 102
            aload 5 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.build:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 5 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 4 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        end local 2 // java.lang.String methodName
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    9     1        type  Ljavax/lang/model/type/TypeMirror;
            0    9     2  methodName  Ljava/lang/String;
            0    9     3       value  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            0    9     4       state  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            3    9     5     builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      methodName  
      value       
      state       

  static com.oracle.truffle.dsl.processor.java.model.CodeTree implicitExpectFlat(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
         0: .line 106
            aload 0 /* typeSystem */
            aload 1 /* type */
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.expectImplicitTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            aload 2 /* value */
            aload 3 /* state */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.callImplictMethodFlat:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTree state
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree value
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
            0    1     2       value  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            0    1     3       state  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      value       
      state       

  static com.oracle.truffle.dsl.processor.java.model.CodeTree cast(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, java.lang.String);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // java.lang.String content
         0: .line 110
            aload 0 /* typeSystem */
            aload 1 /* type */
            aload 2 /* content */
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.singleString:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.cast:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 2 // java.lang.String content
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
            0    1     2     content  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      content     

  static com.oracle.truffle.dsl.processor.java.model.CodeTree invokeImplicitCast(com.oracle.truffle.dsl.processor.model.TypeSystemData, com.oracle.truffle.dsl.processor.model.ImplicitCastData, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree expression
         0: .line 114
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         1: .line 115
            aload 3 /* builder */
            aload 0 /* typeSystem */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.createTypeSystemGen:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeMirror;
            aload 1 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getMethodName:()Ljava/lang/String;
            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;
            aload 2 /* expression */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         2: .line 116
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         3: .line 117
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.build:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree expression
        end local 1 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    4     1        cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
            0    4     2  expression  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            1    4     3     builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
    MethodParameters:
            Name  Flags
      typeSystem  
      cast        
      expression  

  static com.oracle.truffle.dsl.processor.java.model.CodeTree cast(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree content
         0: .line 121
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 3 /* builder */
        start local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
         1: .line 123
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getCast:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/model/TypeCastData;
            astore 4 /* cast */
        start local 4 // com.oracle.truffle.dsl.processor.model.TypeCastData cast
         2: .line 124
            aload 4 /* cast */
            ifnonnull 5
         3: .line 125
            aload 3 /* builder */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.fillInGenericWildcards:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            aload 2 /* content */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.cast:(Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         4: .line 126
            goto 6
         5: .line 127
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder com.oracle.truffle.dsl.processor.model.TypeCastData
      StackMap stack:
            aload 3 /* builder */
            aload 0 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            aload 4 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeCastData.getMethodName:()Ljava/lang/String;
            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;
            aload 2 /* content */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)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
         6: .line 129
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.build:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 4 // com.oracle.truffle.dsl.processor.model.TypeCastData cast
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree content
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    7     1        type  Ljavax/lang/model/type/TypeMirror;
            0    7     2     content  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            1    7     3     builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            2    7     4        cast  Lcom/oracle/truffle/dsl/processor/model/TypeCastData;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      content     

  static com.oracle.truffle.dsl.processor.java.model.CodeTree expect(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree content
         0: .line 133
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isObject:(Ljavax/lang/model/type/TypeMirror;)Z
            ifne 1
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isVoid:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 2
         1: .line 134
      StackMap locals:
      StackMap stack:
            aload 2 /* content */
            areturn
         2: .line 136
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.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 137
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.hasType:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 6
         4: .line 138
            aload 3 /* builder */
            aload 0 /* typeSystem */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.createTypeSystemGen:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeMirror;
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.expectTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            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;
            aload 2 /* content */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)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
         5: .line 139
            goto 7
         6: .line 140
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder
      StackMap stack:
            aload 3 /* builder */
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.expectTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startCall:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 2 /* content */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)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 143
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.build:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree content
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    8     1        type  Ljavax/lang/model/type/TypeMirror;
            0    8     2     content  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            3    8     3     builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      content     

  static com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement createExpectMethod(javax.lang.model.element.Modifier, com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/element/Modifier;Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // javax.lang.model.element.Modifier visibility
        start local 1 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 2 // javax.lang.model.type.TypeMirror sourceTypeOriginal
        start local 3 // javax.lang.model.type.TypeMirror expectedTypeOriginal
         0: .line 147
            aload 3 /* expectedTypeOriginal */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.fillInGenericWildcards:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            astore 4 /* expectedType */
        start local 4 // javax.lang.model.type.TypeMirror expectedType
         1: .line 148
            aload 2 /* sourceTypeOriginal */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.fillInGenericWildcards:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            astore 5 /* sourceType */
        start local 5 // javax.lang.model.type.TypeMirror sourceType
         2: .line 149
            aload 4 /* expectedType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isObject:(Ljavax/lang/model/type/TypeMirror;)Z
            ifne 3
            aload 4 /* expectedType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isVoid:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 4
         3: .line 150
      StackMap locals: javax.lang.model.type.TypeMirror javax.lang.model.type.TypeMirror
      StackMap stack:
            aconst_null
            areturn
         4: .line 153
      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.STATIC:Ljavax/lang/model/element/Modifier;
            aastore
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.modifiers:([Ljavax/lang/model/element/Modifier;)Ljava/util/Set;
            aload 4 /* expectedType */
            aload 1 /* typeSystem */
            aload 4 /* expectedType */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.expectTypeMethodName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)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 6 /* method */
        start local 6 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
         5: .line 154
            aload 6 /* method */
            aload 0 /* visibility */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.setVisibility:(Ljavax/lang/model/element/Modifier;)V
         6: .line 155
            aload 6 /* method */
            new com.oracle.truffle.dsl.processor.java.model.CodeVariableElement
            dup
            aload 5 /* sourceType */
            ldc "value"
            invokespecial com.oracle.truffle.dsl.processor.java.model.CodeVariableElement.<init>:(Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)V
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.addParameter:(Ljavax/lang/model/element/VariableElement;)V
         7: .line 156
            aload 6 /* method */
            aload 1 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getContext:()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.UnexpectedResultException:Ljavax/lang/model/type/DeclaredType;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.addThrownType:(Ljavax/lang/model/type/TypeMirror;)V
         8: .line 158
            aload 6 /* method */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement.createBuilder:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            astore 7 /* body */
        start local 7 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder body
         9: .line 159
            aload 7 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startIf:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 1 /* typeSystem */
            aload 4 /* expectedType */
            ldc "value"
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.check:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)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;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startBlock:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        10: .line 160
            aload 7 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startReturn:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 1 /* typeSystem */
            aload 4 /* expectedType */
            ldc "value"
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.cast:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)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
        11: .line 161
            aload 7 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        12: .line 162
            aload 7 /* body */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startThrow:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            aload 1 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getContext:()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.UnexpectedResultException:Ljavax/lang/model/type/DeclaredType;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.startNew:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            ldc "value"
            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;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.end:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
        13: .line 163
            aload 6 /* method */
            areturn
        end local 7 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder body
        end local 6 // com.oracle.truffle.dsl.processor.java.model.CodeExecutableElement method
        end local 5 // javax.lang.model.type.TypeMirror sourceType
        end local 4 // javax.lang.model.type.TypeMirror expectedType
        end local 3 // javax.lang.model.type.TypeMirror expectedTypeOriginal
        end local 2 // javax.lang.model.type.TypeMirror sourceTypeOriginal
        end local 1 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        end local 0 // javax.lang.model.element.Modifier visibility
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0            visibility  Ljavax/lang/model/element/Modifier;
            0   14     1            typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0   14     2    sourceTypeOriginal  Ljavax/lang/model/type/TypeMirror;
            0   14     3  expectedTypeOriginal  Ljavax/lang/model/type/TypeMirror;
            1   14     4          expectedType  Ljavax/lang/model/type/TypeMirror;
            2   14     5            sourceType  Ljavax/lang/model/type/TypeMirror;
            5   14     6                method  Lcom/oracle/truffle/dsl/processor/java/model/CodeExecutableElement;
            9   14     7                  body  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
    MethodParameters:
                      Name  Flags
      visibility            
      typeSystem            
      sourceTypeOriginal    
      expectedTypeOriginal  

  private static com.oracle.truffle.dsl.processor.java.model.CodeTypeMirror createTypeSystemGen(com.oracle.truffle.dsl.processor.model.TypeSystemData);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeMirror;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
         0: .line 167
            new com.oracle.truffle.dsl.processor.java.model.GeneratedTypeMirror
            dup
            aload 0 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getPackageName:(Ljavax/lang/model/element/Element;)Ljava/lang/String;
            aload 0 /* typeSystem */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.typeName:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Ljava/lang/String;
            invokespecial com.oracle.truffle.dsl.processor.java.model.GeneratedTypeMirror.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    MethodParameters:
            Name  Flags
      typeSystem  

  private static com.oracle.truffle.dsl.processor.java.model.CodeTree check(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, java.lang.String);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // java.lang.String content
         0: .line 171
            aload 0 /* typeSystem */
            aload 1 /* type */
            aload 2 /* content */
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.singleString:(Ljava/lang/String;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.check:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 2 // java.lang.String content
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
            0    1     2     content  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      content     

  static com.oracle.truffle.dsl.processor.java.model.CodeTree check(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror, com.oracle.truffle.dsl.processor.java.model.CodeTree);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
        start local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree content
         0: .line 175
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.isObject:(Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 2
         1: .line 176
            aload 2 /* content */
            areturn
         2: .line 178
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.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 180
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getCheck:(Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/model/TypeCheckData;
            astore 4 /* check */
        start local 4 // com.oracle.truffle.dsl.processor.model.TypeCheckData check
         4: .line 181
            aload 4 /* check */
            ifnonnull 7
         5: .line 182
            aload 3 /* builder */
            aload 2 /* content */
            aload 0 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getContext:()Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            aload 1 /* type */
            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;
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.instanceOf:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            pop
         6: .line 183
            goto 8
         7: .line 184
      StackMap locals: com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder com.oracle.truffle.dsl.processor.model.TypeCheckData
      StackMap stack:
            aload 3 /* builder */
            aload 0 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            aload 4 /* check */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeCheckData.getMethodName:()Ljava/lang/String;
            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;
            aload 2 /* content */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.tree:(Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;)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
         8: .line 186
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            invokevirtual com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder.build:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            areturn
        end local 4 // com.oracle.truffle.dsl.processor.model.TypeCheckData check
        end local 3 // com.oracle.truffle.dsl.processor.java.model.CodeTreeBuilder builder
        end local 2 // com.oracle.truffle.dsl.processor.java.model.CodeTree content
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    9     1        type  Ljavax/lang/model/type/TypeMirror;
            0    9     2     content  Lcom/oracle/truffle/dsl/processor/java/model/CodeTree;
            3    9     3     builder  Lcom/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder;
            4    9     4       check  Lcom/oracle/truffle/dsl/processor/model/TypeCheckData;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        
      content     

  private static java.lang.String isTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 190
            new java.lang.StringBuilder
            dup
            ldc "is"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String getTypeId(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 194
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.boxType:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getTypeId:(Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String isImplicitTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 198
            new java.lang.StringBuilder
            dup
            ldc "isImplicit"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String asTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 202
            new java.lang.StringBuilder
            dup
            ldc "as"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String asImplicitTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 206
            new java.lang.StringBuilder
            dup
            ldc "asImplicit"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String specializeImplicitTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 210
            new java.lang.StringBuilder
            dup
            ldc "specializeImplicit"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String expectImplicitTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 214
            new java.lang.StringBuilder
            dup
            ldc "expectImplicit"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  private static java.lang.String expectTypeMethodName(com.oracle.truffle.dsl.processor.model.TypeSystemData, javax.lang.model.type.TypeMirror);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 218
            new java.lang.StringBuilder
            dup
            ldc "expect"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* typeSystem */
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.getTypeId:(Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1        type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
            Name  Flags
      typeSystem  
      type        

  static java.lang.String typeName(com.oracle.truffle.dsl.processor.model.TypeSystemData);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
         0: .line 222
            aload 0 /* typeSystem */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getSimpleName:(Ljavax/lang/model/element/TypeElement;)Ljava/lang/String;
            astore 1 /* name */
        start local 1 // java.lang.String name
         1: .line 223
            new java.lang.StringBuilder
            dup
            aload 1 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "Gen"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            1    2     1        name  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      typeSystem  

  private static java.lang.String singletonName(com.oracle.truffle.dsl.processor.model.TypeSystemData);
    descriptor: (Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData type
         0: .line 227
            aload 0 /* type */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getTemplateType:()Ljavax/lang/model/element/TypeElement;
            invokeinterface javax.lang.model.element.TypeElement.asType:()Ljavax/lang/model/type/TypeMirror;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getSimpleName:(Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.createConstantName:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    MethodParameters:
      Name  Flags
      type  

  public java.util.List<com.oracle.truffle.dsl.processor.java.model.CodeTypeElement> create(com.oracle.truffle.dsl.processor.ProcessorContext, com.oracle.truffle.dsl.processor.AnnotationProcessor<?>, com.oracle.truffle.dsl.processor.model.TypeSystemData);
    descriptor: (Lcom/oracle/truffle/dsl/processor/ProcessorContext;Lcom/oracle/truffle/dsl/processor/AnnotationProcessor;Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator this
        start local 1 // com.oracle.truffle.dsl.processor.ProcessorContext context
        start local 2 // com.oracle.truffle.dsl.processor.AnnotationProcessor processor
        start local 3 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
         0: .line 232
            new com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator$TypeClassFactory
            dup
            aload 1 /* context */
            aload 3 /* typeSystem */
            invokespecial com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator$TypeClassFactory.<init>:(Lcom/oracle/truffle/dsl/processor/ProcessorContext;Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)V
            invokevirtual com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator$TypeClassFactory.create:()Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
            astore 4 /* clazz */
        start local 4 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement clazz
         1: .line 233
            iconst_1
            anewarray com.oracle.truffle.dsl.processor.java.model.CodeTypeElement
            dup
            iconst_0
            aload 4 /* clazz */
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 4 // com.oracle.truffle.dsl.processor.java.model.CodeTypeElement clazz
        end local 3 // com.oracle.truffle.dsl.processor.model.TypeSystemData typeSystem
        end local 2 // com.oracle.truffle.dsl.processor.AnnotationProcessor processor
        end local 1 // com.oracle.truffle.dsl.processor.ProcessorContext context
        end local 0 // com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/dsl/processor/generator/TypeSystemCodeGenerator;
            0    2     1     context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            0    2     2   processor  Lcom/oracle/truffle/dsl/processor/AnnotationProcessor<*>;
            0    2     3  typeSystem  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            1    2     4       clazz  Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;
    Signature: (Lcom/oracle/truffle/dsl/processor/ProcessorContext;Lcom/oracle/truffle/dsl/processor/AnnotationProcessor<*>;Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Ljava/util/List<Lcom/oracle/truffle/dsl/processor/java/model/CodeTypeElement;>;
    MethodParameters:
            Name  Flags
      context     
      processor   
      typeSystem  

  public java.util.List create(com.oracle.truffle.dsl.processor.ProcessorContext, com.oracle.truffle.dsl.processor.AnnotationProcessor, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/dsl/processor/ProcessorContext;Lcom/oracle/truffle/dsl/processor/AnnotationProcessor;Ljava/lang/Object;)Ljava/util/List;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            aload 3
            checkcast com.oracle.truffle.dsl.processor.model.TypeSystemData
            invokevirtual com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator.create:(Lcom/oracle/truffle/dsl/processor/ProcessorContext;Lcom/oracle/truffle/dsl/processor/AnnotationProcessor;Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;)Ljava/util/List;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lcom/oracle/truffle/dsl/processor/generator/CodeTypeElementFactory<Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;>;
SourceFile: "TypeSystemCodeGenerator.java"
NestMembers:
  com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator$TypeClassFactory
InnerClasses:
  private TypeClassFactory = com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator$TypeClassFactory of com.oracle.truffle.dsl.processor.generator.TypeSystemCodeGenerator