public class org.eclipse.jdt.internal.corext.dom.TypeRules
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.internal.corext.dom.TypeRules
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.corext.dom.TypeRules this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.eclipse.jdt.internal.corext.dom.TypeRules this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/corext/dom/TypeRules;

  public static boolean canAssign(org.eclipse.jdt.core.dom.ITypeBinding, org.eclipse.jdt.core.dom.ITypeBinding);
    descriptor: (Lorg/eclipse/jdt/core/dom/ITypeBinding;Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.eclipse.jdt.core.dom.ITypeBinding typeToAssign
        start local 1 // org.eclipse.jdt.core.dom.ITypeBinding definedType
         0: .line 41
            new org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TypeEnvironment
            dup
            iconst_0
            iconst_1
            invokespecial org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TypeEnvironment.<init>:(ZZ)V
            astore 2 /* typeEnvironment */
        start local 2 // org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TypeEnvironment typeEnvironment
         1: .line 42
            aload 2 /* typeEnvironment */
            aload 1 /* definedType */
            invokevirtual org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TypeEnvironment.create:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Lorg/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/TType;
            astore 3 /* defined */
        start local 3 // org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType defined
         2: .line 43
            aload 2 /* typeEnvironment */
            aload 0 /* typeToAssign */
            invokevirtual org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TypeEnvironment.create:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Lorg/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/TType;
            astore 4 /* toAssign */
        start local 4 // org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType toAssign
         3: .line 44
            aload 4 /* toAssign */
            aload 3 /* defined */
            invokevirtual org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType.canAssignTo:(Lorg/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/TType;)Z
            ireturn
        end local 4 // org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType toAssign
        end local 3 // org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TType defined
        end local 2 // org.eclipse.jdt.internal.corext.refactoring.typeconstraints.types.TypeEnvironment typeEnvironment
        end local 1 // org.eclipse.jdt.core.dom.ITypeBinding definedType
        end local 0 // org.eclipse.jdt.core.dom.ITypeBinding typeToAssign
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0     typeToAssign  Lorg/eclipse/jdt/core/dom/ITypeBinding;
            0    4     1      definedType  Lorg/eclipse/jdt/core/dom/ITypeBinding;
            1    4     2  typeEnvironment  Lorg/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/TypeEnvironment;
            2    4     3          defined  Lorg/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/TType;
            3    4     4         toAssign  Lorg/eclipse/jdt/internal/corext/refactoring/typeconstraints/types/TType;
    MethodParameters:
              Name  Flags
      typeToAssign  
      definedType   

  public static boolean isArrayCompatible(org.eclipse.jdt.core.dom.ITypeBinding);
    descriptor: (Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.eclipse.jdt.core.dom.ITypeBinding definedType
         0: .line 48
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isTopLevel:()Z
            ifeq 7
         1: .line 49
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isClass:()Z
            ifeq 4
         2: .line 50
            ldc "Object"
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
            ldc "java.lang"
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getPackage:()Lorg/eclipse/jdt/core/dom/IPackageBinding;
            invokeinterface org.eclipse.jdt.core.dom.IPackageBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 52
      StackMap locals:
      StackMap stack:
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getQualifiedName:()Ljava/lang/String;
            astore 1 /* qualifiedName */
        start local 1 // java.lang.String qualifiedName
         5: .line 53
            ldc "java.io.Serializable"
            aload 1 /* qualifiedName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            ldc "java.lang.Cloneable"
            aload 1 /* qualifiedName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            iconst_0
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         6: iconst_1
            ireturn
        end local 1 // java.lang.String qualifiedName
         7: .line 56
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // org.eclipse.jdt.core.dom.ITypeBinding definedType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0    definedType  Lorg/eclipse/jdt/core/dom/ITypeBinding;
            5    7     1  qualifiedName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      definedType  

  public static boolean isJavaLangObject(org.eclipse.jdt.core.dom.ITypeBinding);
    descriptor: (Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.core.dom.ITypeBinding definedType
         0: .line 60
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isTopLevel:()Z
            ifeq 1
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isClass:()Z
            ifeq 1
            ldc "Object"
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 1
            ldc "java.lang"
            aload 0 /* definedType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getPackage:()Lorg/eclipse/jdt/core/dom/IPackageBinding;
            invokeinterface org.eclipse.jdt.core.dom.IPackageBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.eclipse.jdt.core.dom.ITypeBinding definedType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0  definedType  Lorg/eclipse/jdt/core/dom/ITypeBinding;
    MethodParameters:
             Name  Flags
      definedType  

  public static boolean canCast(org.eclipse.jdt.core.dom.ITypeBinding, org.eclipse.jdt.core.dom.ITypeBinding);
    descriptor: (Lorg/eclipse/jdt/core/dom/ITypeBinding;Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.eclipse.jdt.core.dom.ITypeBinding castType
        start local 1 // org.eclipse.jdt.core.dom.ITypeBinding bindingToCast
         0: .line 72
            getstatic org.eclipse.jdt.core.dom.PrimitiveType.VOID:Lorg/eclipse/jdt/core/dom/PrimitiveType$Code;
            invokevirtual org.eclipse.jdt.core.dom.PrimitiveType$Code.toString:()Ljava/lang/String;
            astore 2 /* voidName */
        start local 2 // java.lang.String voidName
         1: .line 74
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isAnonymous:()Z
            ifne 2
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isNullType:()Z
            ifne 2
            aload 2 /* voidName */
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 75
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         3: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* castType */
            aload 1 /* bindingToCast */
            if_acmpne 5
         4: .line 79
            iconst_1
            ireturn
         5: .line 82
      StackMap locals:
      StackMap stack:
            aload 2 /* voidName */
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 83
            iconst_0
            ireturn
         7: .line 86
      StackMap locals:
      StackMap stack:
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isArray:()Z
            ifeq 20
         8: .line 87
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isArray:()Z
            ifne 10
         9: .line 88
            aload 0 /* castType */
            invokestatic org.eclipse.jdt.internal.corext.dom.TypeRules.isArrayCompatible:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ireturn
        10: .line 91
      StackMap locals:
      StackMap stack:
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getDimensions:()I
            istore 3 /* toCastDim */
        start local 3 // int toCastDim
        11: .line 92
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getDimensions:()I
            istore 4 /* castTypeDim */
        start local 4 // int castTypeDim
        12: .line 93
            iload 3 /* toCastDim */
            iload 4 /* castTypeDim */
            if_icmpne 17
        13: .line 94
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getElementType:()Lorg/eclipse/jdt/core/dom/ITypeBinding;
            astore 1 /* bindingToCast */
        14: .line 95
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getElementType:()Lorg/eclipse/jdt/core/dom/ITypeBinding;
            astore 0 /* castType */
        15: .line 96
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isPrimitive:()Z
            ifeq 20
            aload 0 /* castType */
            aload 1 /* bindingToCast */
            if_acmpeq 20
        16: .line 97
            iconst_0
            ireturn
        17: .line 100
      StackMap locals: int int
      StackMap stack:
            iload 3 /* toCastDim */
            iload 4 /* castTypeDim */
            if_icmpge 19
        18: .line 101
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getElementType:()Lorg/eclipse/jdt/core/dom/ITypeBinding;
            invokestatic org.eclipse.jdt.internal.corext.dom.TypeRules.isArrayCompatible:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ireturn
        19: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getElementType:()Lorg/eclipse/jdt/core/dom/ITypeBinding;
            invokestatic org.eclipse.jdt.internal.corext.dom.TypeRules.isArrayCompatible:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ireturn
        end local 4 // int castTypeDim
        end local 3 // int toCastDim
        20: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isPrimitive:()Z
            ifeq 26
        21: .line 107
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isPrimitive:()Z
            ifne 23
        22: .line 108
            iconst_0
            ireturn
        23: .line 110
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jdt.core.dom.PrimitiveType.BOOLEAN:Lorg/eclipse/jdt/core/dom/PrimitiveType$Code;
            invokevirtual org.eclipse.jdt.core.dom.PrimitiveType$Code.toString:()Ljava/lang/String;
            astore 3 /* boolName */
        start local 3 // java.lang.String boolName
        24: .line 111
            aload 3 /* boolName */
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 25
            aload 3 /* boolName */
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 25
            iconst_1
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
        25: iconst_0
            ireturn
        end local 3 // java.lang.String boolName
        26: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isPrimitive:()Z
            ifeq 28
        27: .line 114
            iconst_0
            ireturn
        28: .line 116
      StackMap locals:
      StackMap stack:
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isArray:()Z
            ifeq 30
        29: .line 117
            aload 1 /* bindingToCast */
            invokestatic org.eclipse.jdt.internal.corext.dom.TypeRules.isArrayCompatible:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ireturn
        30: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isInterface:()Z
            ifeq 34
        31: .line 120
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getModifiers:()I
            bipush 16
            iand
            ifeq 33
        32: .line 121
            aload 0 /* castType */
            aload 1 /* bindingToCast */
            invokestatic org.eclipse.jdt.internal.corext.dom.Bindings.isSuperType:(Lorg/eclipse/jdt/core/dom/ITypeBinding;Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ireturn
        33: .line 123
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        34: .line 126
      StackMap locals:
      StackMap stack:
            aload 1 /* bindingToCast */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.isInterface:()Z
            ifeq 38
        35: .line 127
            aload 0 /* castType */
            invokeinterface org.eclipse.jdt.core.dom.ITypeBinding.getModifiers:()I
            bipush 16
            iand
            ifeq 37
        36: .line 128
            aload 1 /* bindingToCast */
            aload 0 /* castType */
            invokestatic org.eclipse.jdt.internal.corext.dom.Bindings.isSuperType:(Lorg/eclipse/jdt/core/dom/ITypeBinding;Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ireturn
        37: .line 130
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        38: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* castType */
            invokestatic org.eclipse.jdt.internal.corext.dom.TypeRules.isJavaLangObject:(Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ifeq 40
        39: .line 134
            iconst_1
            ireturn
        40: .line 137
      StackMap locals:
      StackMap stack:
            aload 1 /* bindingToCast */
            aload 0 /* castType */
            invokestatic org.eclipse.jdt.internal.corext.dom.Bindings.isSuperType:(Lorg/eclipse/jdt/core/dom/ITypeBinding;Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ifne 41
            aload 0 /* castType */
            aload 1 /* bindingToCast */
            invokestatic org.eclipse.jdt.internal.corext.dom.Bindings.isSuperType:(Lorg/eclipse/jdt/core/dom/ITypeBinding;Lorg/eclipse/jdt/core/dom/ITypeBinding;)Z
            ifne 41
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        41: iconst_1
            ireturn
        end local 2 // java.lang.String voidName
        end local 1 // org.eclipse.jdt.core.dom.ITypeBinding bindingToCast
        end local 0 // org.eclipse.jdt.core.dom.ITypeBinding castType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   42     0       castType  Lorg/eclipse/jdt/core/dom/ITypeBinding;
            0   42     1  bindingToCast  Lorg/eclipse/jdt/core/dom/ITypeBinding;
            1   42     2       voidName  Ljava/lang/String;
           11   20     3      toCastDim  I
           12   20     4    castTypeDim  I
           24   26     3       boolName  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      castType       
      bindingToCast  
}
SourceFile: "TypeRules.java"
InnerClasses:
  public Code = org.eclipse.jdt.core.dom.PrimitiveType$Code of org.eclipse.jdt.core.dom.PrimitiveType