public class com.oracle.truffle.dsl.processor.model.TypeSystemData extends com.oracle.truffle.dsl.processor.model.Template
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.dsl.processor.model.TypeSystemData
  super_class: com.oracle.truffle.dsl.processor.model.Template
{
  private final java.util.List<com.oracle.truffle.dsl.processor.model.ImplicitCastData> implicitCasts;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;>;

  private final java.util.List<com.oracle.truffle.dsl.processor.model.TypeCastData> casts;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/TypeCastData;>;

  private final java.util.List<com.oracle.truffle.dsl.processor.model.TypeCheckData> checks;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/TypeCheckData;>;

  private final java.util.List<javax.lang.model.type.TypeMirror> legacyTypes;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;

  private java.util.Set<java.lang.String> legacyTypeIds;
    descriptor: Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final boolean isDefault;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.oracle.truffle.dsl.processor.ProcessorContext, javax.lang.model.element.TypeElement, javax.lang.model.element.AnnotationMirror, boolean);
    descriptor: (Lcom/oracle/truffle/dsl/processor/ProcessorContext;Ljavax/lang/model/element/TypeElement;Ljavax/lang/model/element/AnnotationMirror;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // com.oracle.truffle.dsl.processor.ProcessorContext context
        start local 2 // javax.lang.model.element.TypeElement templateType
        start local 3 // javax.lang.model.element.AnnotationMirror annotation
        start local 4 // boolean isDefault
         0: .line 68
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* templateType */
            aload 3 /* annotation */
            invokespecial com.oracle.truffle.dsl.processor.model.Template.<init>:(Lcom/oracle/truffle/dsl/processor/ProcessorContext;Ljavax/lang/model/element/TypeElement;Ljavax/lang/model/element/AnnotationMirror;)V
         1: .line 58
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.dsl.processor.model.TypeSystemData.implicitCasts:Ljava/util/List;
         2: .line 59
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.dsl.processor.model.TypeSystemData.casts:Ljava/util/List;
         3: .line 60
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.dsl.processor.model.TypeSystemData.checks:Ljava/util/List;
         4: .line 61
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypes:Ljava/util/List;
         5: .line 69
            aload 0 /* this */
            iload 4 /* isDefault */
            putfield com.oracle.truffle.dsl.processor.model.TypeSystemData.isDefault:Z
         6: .line 70
            return
        end local 4 // boolean isDefault
        end local 3 // javax.lang.model.element.AnnotationMirror annotation
        end local 2 // javax.lang.model.element.TypeElement templateType
        end local 1 // com.oracle.truffle.dsl.processor.ProcessorContext context
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    7     1       context  Lcom/oracle/truffle/dsl/processor/ProcessorContext;
            0    7     2  templateType  Ljavax/lang/model/element/TypeElement;
            0    7     3    annotation  Ljavax/lang/model/element/AnnotationMirror;
            0    7     4     isDefault  Z
    MethodParameters:
              Name  Flags
      context       
      templateType  
      annotation    
      isDefault     

  public boolean isDefault();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 73
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.isDefault:Z
            ireturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;

  public com.oracle.truffle.dsl.processor.model.TypeSystemData getTypeSystem();
    descriptor: ()Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 77
            aload 0 /* this */
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;

  public java.util.List<javax.lang.model.type.TypeMirror> getLegacyTypes();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 81
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypes:Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    Signature: ()Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;

  public com.oracle.truffle.dsl.processor.model.TypeCastData getCast(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/model/TypeCastData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror targetType
         0: .line 85
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.casts:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.TypeCastData
            astore 2 /* cast */
        start local 2 // com.oracle.truffle.dsl.processor.model.TypeCastData cast
         2: .line 86
            aload 2 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeCastData.getTargetType:()Ljavax/lang/model/type/TypeMirror;
            aload 1 /* targetType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 4
         3: .line 87
            aload 2 /* cast */
            areturn
        end local 2 // com.oracle.truffle.dsl.processor.model.TypeCastData cast
         4: .line 85
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 90
            aconst_null
            areturn
        end local 1 // javax.lang.model.type.TypeMirror targetType
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    6     1  targetType  Ljavax/lang/model/type/TypeMirror;
            2    4     2        cast  Lcom/oracle/truffle/dsl/processor/model/TypeCastData;
    MethodParameters:
            Name  Flags
      targetType  

  public com.oracle.truffle.dsl.processor.model.TypeCheckData getCheck(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/model/TypeCheckData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 94
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.checks:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.TypeCheckData
            astore 2 /* check */
        start local 2 // com.oracle.truffle.dsl.processor.model.TypeCheckData check
         2: .line 95
            aload 2 /* check */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeCheckData.getCheckedType:()Ljavax/lang/model/type/TypeMirror;
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 4
         3: .line 96
            aload 2 /* check */
            areturn
        end local 2 // com.oracle.truffle.dsl.processor.model.TypeCheckData check
         4: .line 94
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 99
            aconst_null
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    6     1   type  Ljavax/lang/model/type/TypeMirror;
            2    4     2  check  Lcom/oracle/truffle/dsl/processor/model/TypeCheckData;
    MethodParameters:
      Name  Flags
      type  

  public java.util.List<com.oracle.truffle.dsl.processor.model.ImplicitCastData> getImplicitCasts();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 103
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.implicitCasts:Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;>;

  public java.util.List<com.oracle.truffle.dsl.processor.model.TypeCastData> getCasts();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 107
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.casts:Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/TypeCastData;>;

  public java.util.List<com.oracle.truffle.dsl.processor.model.TypeCheckData> getChecks();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 111
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.checks:Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/TypeCheckData;>;

  protected java.util.List<com.oracle.truffle.dsl.processor.model.MessageContainer> findChildContainers();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 116
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* sinks */
        start local 1 // java.util.List sinks
         1: .line 117
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.checks:Ljava/util/List;
            ifnull 3
         2: .line 118
            aload 1 /* sinks */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.checks:Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         3: .line 120
      StackMap locals: java.util.List
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.casts:Ljava/util/List;
            ifnull 5
         4: .line 121
            aload 1 /* sinks */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.casts:Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         5: .line 123
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.implicitCasts:Ljava/util/List;
            ifnull 7
         6: .line 124
            aload 1 /* sinks */
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.implicitCasts:Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         7: .line 126
      StackMap locals:
      StackMap stack:
            aload 1 /* sinks */
            areturn
        end local 1 // java.util.List sinks
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            1    8     1  sinks  Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/MessageContainer;>;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/MessageContainer;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 131
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "[template = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            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;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;

  public java.util.List<com.oracle.truffle.dsl.processor.model.ImplicitCastData> lookupByTargetType(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror targetType
         0: .line 135
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            ifnonnull 2
         1: .line 136
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         2: .line 138
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* foundCasts */
        start local 2 // java.util.List foundCasts
         3: .line 139
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.ImplicitCastData
            astore 3 /* cast */
        start local 3 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         5: .line 140
            aload 3 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getTargetType:()Ljavax/lang/model/type/TypeMirror;
            aload 1 /* targetType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 7
         6: .line 141
            aload 2 /* foundCasts */
            aload 3 /* cast */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         7: .line 139
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 144
            aload 2 /* foundCasts */
            areturn
        end local 2 // java.util.List foundCasts
        end local 1 // javax.lang.model.type.TypeMirror targetType
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    9     1  targetType  Ljavax/lang/model/type/TypeMirror;
            3    9     2  foundCasts  Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;>;
            5    7     3        cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    Signature: (Ljavax/lang/model/type/TypeMirror;)Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;>;
    MethodParameters:
            Name  Flags
      targetType  

  public com.oracle.truffle.dsl.processor.model.ImplicitCastData lookupCast(javax.lang.model.type.TypeMirror, javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror sourceType
        start local 2 // javax.lang.model.type.TypeMirror targetType
         0: .line 148
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            ifnonnull 2
         1: .line 149
            aconst_null
            areturn
         2: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror javax.lang.model.type.TypeMirror top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.ImplicitCastData
            astore 3 /* cast */
        start local 3 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         4: .line 152
            aload 3 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getSourceType:()Ljavax/lang/model/type/TypeMirror;
            aload 1 /* sourceType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 6
            aload 3 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getTargetType:()Ljavax/lang/model/type/TypeMirror;
            aload 2 /* targetType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 6
         5: .line 153
            aload 3 /* cast */
            areturn
        end local 3 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         6: .line 151
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         7: .line 156
            aconst_null
            areturn
        end local 2 // javax.lang.model.type.TypeMirror targetType
        end local 1 // javax.lang.model.type.TypeMirror sourceType
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    8     1  sourceType  Ljavax/lang/model/type/TypeMirror;
            0    8     2  targetType  Ljavax/lang/model/type/TypeMirror;
            4    6     3        cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  public boolean hasImplicitSourceTypes(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror targetType
         0: .line 160
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            ifnonnull 2
         1: .line 161
            iconst_0
            ireturn
         2: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.ImplicitCastData
            astore 2 /* cast */
        start local 2 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         4: .line 164
            aload 2 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getTargetType:()Ljavax/lang/model/type/TypeMirror;
            aload 1 /* targetType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 6
         5: .line 165
            iconst_1
            ireturn
        end local 2 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         6: .line 163
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         7: .line 168
            iconst_0
            ireturn
        end local 1 // javax.lang.model.type.TypeMirror targetType
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    8     1  targetType  Ljavax/lang/model/type/TypeMirror;
            4    6     2        cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    MethodParameters:
            Name  Flags
      targetType  

  public java.util.List<javax.lang.model.type.TypeMirror> lookupTargetTypes();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
         0: .line 172
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* sourceTypes */
        start local 1 // java.util.List sourceTypes
         1: .line 173
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.ImplicitCastData
            astore 2 /* cast */
        start local 2 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         3: .line 174
            aload 1 /* sourceTypes */
            aload 2 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getTargetType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         4: .line 173
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 176
            aload 1 /* sourceTypes */
            iconst_1
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.uniqueSortedTypes:(Ljava/util/Collection;Z)Ljava/util/List;
            areturn
        end local 1 // java.util.List sourceTypes
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            1    6     1  sourceTypes  Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;
            3    4     2         cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    Signature: ()Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;

  public java.util.List<javax.lang.model.type.TypeMirror> lookupSourceTypes(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror targetType
         0: .line 180
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* sourceTypes */
        start local 2 // java.util.List sourceTypes
         1: .line 181
            aload 2 /* sourceTypes */
            aload 1 /* targetType */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 182
            aload 0 /* this */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.getImplicitCasts:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.ImplicitCastData
            astore 3 /* cast */
        start local 3 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         4: .line 183
            aload 3 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getTargetType:()Ljavax/lang/model/type/TypeMirror;
            aload 1 /* targetType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.typeEquals:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 6
         5: .line 184
            aload 2 /* sourceTypes */
            aload 3 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getSourceType:()Ljavax/lang/model/type/TypeMirror;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         6: .line 182
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         7: .line 187
            aload 2 /* sourceTypes */
            iconst_1
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.uniqueSortedTypes:(Ljava/util/Collection;Z)Ljava/util/List;
            areturn
        end local 2 // java.util.List sourceTypes
        end local 1 // javax.lang.model.type.TypeMirror targetType
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    8     1   targetType  Ljavax/lang/model/type/TypeMirror;
            1    8     2  sourceTypes  Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;
            4    6     3         cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    Signature: (Ljavax/lang/model/type/TypeMirror;)Ljava/util/List<Ljavax/lang/model/type/TypeMirror;>;
    MethodParameters:
            Name  Flags
      targetType  

  public boolean isImplicitSubtypeOf(javax.lang.model.type.TypeMirror, javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror source
        start local 2 // javax.lang.model.type.TypeMirror target
         0: .line 191
            aload 0 /* this */
            aload 2 /* target */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.lookupByTargetType:(Ljavax/lang/model/type/TypeMirror;)Ljava/util/List;
            astore 3 /* targetCasts */
        start local 3 // java.util.List targetCasts
         1: .line 192
            aload 3 /* targetCasts */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 5
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror javax.lang.model.type.TypeMirror java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.dsl.processor.model.ImplicitCastData
            astore 4 /* cast */
        start local 4 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         3: .line 193
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.boxType:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            aload 0 /* this */
            aload 4 /* cast */
            invokevirtual com.oracle.truffle.dsl.processor.model.ImplicitCastData.getSourceType:()Ljavax/lang/model/type/TypeMirror;
            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.isSubtype:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ifeq 5
         4: .line 194
            iconst_1
            ireturn
        end local 4 // com.oracle.truffle.dsl.processor.model.ImplicitCastData cast
         5: .line 192
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 197
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.dsl.processor.model.TypeSystemData.boxType:(Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
            aload 0 /* this */
            aload 2 /* target */
            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.isSubtype:(Ljavax/lang/model/type/TypeMirror;Ljavax/lang/model/type/TypeMirror;)Z
            ireturn
        end local 3 // java.util.List targetCasts
        end local 2 // javax.lang.model.type.TypeMirror target
        end local 1 // javax.lang.model.type.TypeMirror source
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    7     1       source  Ljavax/lang/model/type/TypeMirror;
            0    7     2       target  Ljavax/lang/model/type/TypeMirror;
            1    7     3  targetCasts  Ljava/util/List<Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;>;
            3    5     4         cast  Lcom/oracle/truffle/dsl/processor/model/ImplicitCastData;
    MethodParameters:
        Name  Flags
      source  
      target  

  public javax.lang.model.type.TypeMirror boxType(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Ljavax/lang/model/type/TypeMirror;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 201
            aload 0 /* this */
            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;
            areturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    1     1  type  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
      Name  Flags
      type  

  public boolean hasType(javax.lang.model.type.TypeMirror);
    descriptor: (Ljavax/lang/model/type/TypeMirror;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
        start local 1 // javax.lang.model.type.TypeMirror type
         0: .line 205
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypeIds:Ljava/util/Set;
            ifnonnull 6
         1: .line 206
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypeIds:Ljava/util/Set;
         2: .line 207
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypes:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.lang.model.type.TypeMirror
            astore 2 /* legacyType */
        start local 2 // javax.lang.model.type.TypeMirror legacyType
         4: .line 208
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypeIds:Ljava/util/Set;
            aload 2 /* legacyType */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getTypeId:(Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // javax.lang.model.type.TypeMirror legacyType
         5: .line 207
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 211
      StackMap locals: com.oracle.truffle.dsl.processor.model.TypeSystemData javax.lang.model.type.TypeMirror
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.dsl.processor.model.TypeSystemData.legacyTypeIds:Ljava/util/Set;
            aload 1 /* type */
            invokestatic com.oracle.truffle.dsl.processor.java.ElementUtils.getTypeId:(Ljavax/lang/model/type/TypeMirror;)Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // javax.lang.model.type.TypeMirror type
        end local 0 // com.oracle.truffle.dsl.processor.model.TypeSystemData this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/oracle/truffle/dsl/processor/model/TypeSystemData;
            0    7     1        type  Ljavax/lang/model/type/TypeMirror;
            4    5     2  legacyType  Ljavax/lang/model/type/TypeMirror;
    MethodParameters:
      Name  Flags
      type  
}
SourceFile: "TypeSystemData.java"