package com.redhat.ceylon.compiler.java.test.statement.trycatch;

@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
interface Intersect {
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public static final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $TypeDescriptor$ = .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.Intersect.class);
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
@.com.redhat.ceylon.compiler.java.metadata.SatisfiedTypes({"com.redhat.ceylon.compiler.java.test.statement.trycatch::Intersect"})
@.com.redhat.ceylon.compiler.java.metadata.Class(extendsType = "ceylon.language::Exception")
class ExceptionIntersection extends .ceylon.language.Exception implements .com.redhat.ceylon.compiler.java.test.statement.trycatch.Intersect {
    
    ExceptionIntersection() {
        super();
    }
    
    @.java.lang.Override
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $getType$() {
        return .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection.$TypeDescriptor$;
    }
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public static final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $TypeDescriptor$ = .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection.class);
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
@.com.redhat.ceylon.compiler.java.metadata.Class(extendsType = "ceylon.language::Exception")
class ExceptionSub extends .ceylon.language.Exception {
    
    ExceptionSub() {
        super();
    }
    
    @.java.lang.Override
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $getType$() {
        return .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub.$TypeDescriptor$;
    }
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public static final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $TypeDescriptor$ = .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub.class);
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
@.com.redhat.ceylon.compiler.java.metadata.SatisfiedTypes({"com.redhat.ceylon.compiler.java.test.statement.trycatch::Intersect"})
@.com.redhat.ceylon.compiler.java.metadata.Class(extendsType = "com.redhat.ceylon.compiler.java.test.statement.trycatch::ExceptionSub")
class ExceptionSubIntersection extends .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub implements .com.redhat.ceylon.compiler.java.test.statement.trycatch.Intersect {
    
    ExceptionSubIntersection() {
        super();
    }
    
    @.java.lang.Override
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $getType$() {
        return .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSubIntersection.$TypeDescriptor$;
    }
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public static final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $TypeDescriptor$ = .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSubIntersection.class);
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
@.com.redhat.ceylon.compiler.java.metadata.TypeParameters({@.com.redhat.ceylon.compiler.java.metadata.TypeParameter(
        value = "T",
        variance = .com.redhat.ceylon.compiler.java.metadata.Variance.NONE,
        satisfies = {},
        caseTypes = {})})
@.com.redhat.ceylon.compiler.java.metadata.Class(extendsType = "ceylon.language::Exception")
class ExceptionGeneric<T> extends .ceylon.language.Exception {
    
    ExceptionGeneric(@.com.redhat.ceylon.compiler.java.metadata.Ignore
    final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $reified$T) {
        super();
        this.$reified$T = $reified$T;
    }
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    private final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $reified$T;
    
    @.java.lang.Override
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $getType$() {
        return .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, $reified$T);
    }
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
@.com.redhat.ceylon.compiler.java.metadata.Class(extendsType = "com.redhat.ceylon.compiler.java.test.statement.trycatch::ExceptionGeneric<ceylon.language::Integer>")
class ExceptionGenericSub extends .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer> {
    
    ExceptionGenericSub() {
        super(.ceylon.language.Integer.$TypeDescriptor$);
    }
    
    @.java.lang.Override
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $getType$() {
        return .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGenericSub.$TypeDescriptor$;
    }
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public static final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $TypeDescriptor$ = .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGenericSub.class);
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
class TryCatchGenericIntersection implements .com.redhat.ceylon.compiler.java.runtime.model.ReifiedType, .java.io.Serializable {
    
    TryCatchGenericIntersection() {
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchIntersection(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .java.lang.Exception exception$0) {
            if (exception$0 instanceof .java.lang.Exception && exception$0 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.Intersect) {
                final .java.lang.Object e = exception$0;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught Exception&Intersect"));
            } else throw exception$0;
        }
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchExceptionSubIntersection(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub exception$1) {
            if (exception$1 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub && exception$1 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.Intersect) {
                final .java.lang.Object e = exception$1;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionSub&Intersect"));
            } else throw exception$1;
        }
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchExceptionGenericString(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric exception$2) {
            if (.com.redhat.ceylon.compiler.java.Util.isReified(exception$2, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.String.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$2;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<String>"));
            } else throw exception$2;
        }
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchExceptionGenericStringOrInteger(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric exception$3) {
            if (.com.redhat.ceylon.compiler.java.Util.isReified(exception$3, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.String.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$3;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<String>"));
            } else if (.com.redhat.ceylon.compiler.java.Util.isReified(exception$3, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Integer.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$3;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<Integer>"));
            } else throw exception$3;
        }
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchExceptionGenericStringOrInteger2(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric exception$4) {
            if (.com.redhat.ceylon.compiler.java.Util.isReified(exception$4, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.String.$TypeDescriptor$)) || .com.redhat.ceylon.compiler.java.Util.isReified(exception$4, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Integer.$TypeDescriptor$))) {
                final .java.lang.Object e = exception$4;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<String>|ExceptionGeneric<Integer>"));
            } else throw exception$4;
        }
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchExceptionGenericStringOrIntegerOrExceptionSub(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .java.lang.Throwable exception$5) {
            if (exception$5 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(exception$5, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.String.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$5;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<String>"));
            } else if (exception$5 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(exception$5, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Integer.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$5;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<Integer>"));
            } else if (exception$5 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub)exception$5;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionSub"));
            } else throw exception$5;
        }
    }
    
    @.ceylon.language.SharedAnnotation$annotation$
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    public final void catchExceptionGenericStringOrIntegerOrExceptionSubIntersect(@.com.redhat.ceylon.compiler.java.metadata.Name("exception")
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Exception")
    final .java.lang.Exception exception) {
        try {
            throw exception;
        } catch (final .java.lang.Throwable exception$6) {
            if (exception$6 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(exception$6, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.String.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$6;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<String>"));
            } else if (exception$6 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(exception$6, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Integer.$TypeDescriptor$))) {
                final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer> e = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)exception$6;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionGeneric<Integer>"));
            } else if (exception$6 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub && exception$6 instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.Intersect) {
                final .java.lang.Object e = exception$6;
                .ceylon.language.print_.print(.ceylon.language.String.instance("Caught ExceptionSub&Intersect"));
            } else throw exception$6;
        }
    }
    
    @.java.lang.Override
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $getType$() {
        return .com.redhat.ceylon.compiler.java.test.statement.trycatch.TryCatchGenericIntersection.$TypeDescriptor$;
    }
    @.com.redhat.ceylon.compiler.java.metadata.Ignore
    public static final .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor $TypeDescriptor$ = .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.TryCatchGenericIntersection.class);
}
@.com.redhat.ceylon.compiler.java.metadata.Ceylon(major = 8)
@.com.redhat.ceylon.compiler.java.metadata.Method
final class tryCatchGenericIntersection_ {
    
    private tryCatchGenericIntersection_() {
    }
    
    @.com.redhat.ceylon.compiler.java.metadata.TypeInfo("ceylon.language::Anything")
    static void tryCatchGenericIntersection() {
        final .com.redhat.ceylon.compiler.java.test.statement.trycatch.TryCatchGenericIntersection t = new .com.redhat.ceylon.compiler.java.test.statement.trycatch.TryCatchGenericIntersection();
        t.catchIntersection(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection());
        try {
            t.catchIntersection(new .ceylon.language.Exception());
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
        }
        t.catchExceptionSubIntersection(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSubIntersection());
        try {
            t.catchExceptionSubIntersection(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub());
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub e$11;
            .java.lang.Object e$10 = null;
            if ((e$10 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub) {
                e$11 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub)e$10;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionSub e"));
            }
        }
        try {
            t.catchExceptionSubIntersection(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection());
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection e$15;
            .java.lang.Object e$14 = null;
            if ((e$14 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection) {
                e$15 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionIntersection)e$14;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionIntersection e"));
            }
        }
        t.catchExceptionGenericString(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>(.ceylon.language.String.$TypeDescriptor$));
        try {
            t.catchExceptionGenericString(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>(.ceylon.language.Integer.$TypeDescriptor$));
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer> e$19;
            .java.lang.Object e$18 = null;
            if ((e$18 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(e$18, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Integer.$TypeDescriptor$))) {
                e$19 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)e$18;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionGeneric<Integer> e"));
            }
        }
        try {
            t.catchExceptionGenericString(new .ceylon.language.Exception());
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
        }
        t.catchExceptionGenericStringOrInteger(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>(.ceylon.language.String.$TypeDescriptor$));
        t.catchExceptionGenericStringOrInteger(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>(.ceylon.language.Integer.$TypeDescriptor$));
        try {
            t.catchExceptionGenericStringOrInteger(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>(.ceylon.language.Boolean.$TypeDescriptor$));
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean> e$24;
            .java.lang.Object e$23 = null;
            if ((e$23 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(e$23, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Boolean.$TypeDescriptor$))) {
                e$24 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)e$23;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionGeneric<Boolean> e"));
            }
        }
        t.catchExceptionGenericStringOrInteger2(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>(.ceylon.language.String.$TypeDescriptor$));
        t.catchExceptionGenericStringOrInteger2(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>(.ceylon.language.Integer.$TypeDescriptor$));
        try {
            t.catchExceptionGenericStringOrInteger2(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>(.ceylon.language.Boolean.$TypeDescriptor$));
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean> e$28;
            .java.lang.Object e$27 = null;
            if ((e$27 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(e$27, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Boolean.$TypeDescriptor$))) {
                e$28 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)e$27;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionGeneric<Boolean> e"));
            }
        }
        t.catchExceptionGenericStringOrIntegerOrExceptionSub(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>(.ceylon.language.String.$TypeDescriptor$));
        t.catchExceptionGenericStringOrIntegerOrExceptionSub(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>(.ceylon.language.Integer.$TypeDescriptor$));
        t.catchExceptionGenericStringOrIntegerOrExceptionSub(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub());
        try {
            t.catchExceptionGenericStringOrInteger2(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>(.ceylon.language.Boolean.$TypeDescriptor$));
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean> e$32;
            .java.lang.Object e$31 = null;
            if ((e$31 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(e$31, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Boolean.$TypeDescriptor$))) {
                e$32 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)e$31;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionGeneric<Boolean> e"));
            }
        }
        try {
            t.catchExceptionGenericStringOrInteger2(new .ceylon.language.Exception());
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
        }
        t.catchExceptionGenericStringOrIntegerOrExceptionSubIntersect(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.String>(.ceylon.language.String.$TypeDescriptor$));
        t.catchExceptionGenericStringOrIntegerOrExceptionSubIntersect(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Integer>(.ceylon.language.Integer.$TypeDescriptor$));
        t.catchExceptionGenericStringOrIntegerOrExceptionSubIntersect(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSubIntersection());
        try {
            t.catchExceptionGenericStringOrInteger2(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>(.ceylon.language.Boolean.$TypeDescriptor$));
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean> e$37;
            .java.lang.Object e$36 = null;
            if ((e$36 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric && .com.redhat.ceylon.compiler.java.Util.isReified(e$36, .com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.klass(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric.class, .ceylon.language.Boolean.$TypeDescriptor$))) {
                e$37 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric<.ceylon.language.Boolean>)(.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionGeneric)e$36;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionGeneric<Boolean> e"));
            }
        }
        try {
            t.catchExceptionGenericStringOrInteger2(new .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub());
            throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "false"));
        } catch (final .ceylon.language.AssertionError e) {
            throw e;
        } catch (final .java.lang.Exception e) {
            final .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub e$41;
            .java.lang.Object e$40 = null;
            if ((e$40 = e) instanceof .com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub) {
                e$41 = (.com.redhat.ceylon.compiler.java.test.statement.trycatch.ExceptionSub)e$40;
            } else {
                throw new .ceylon.language.AssertionError("Assertion failed" + (.java.lang.System.lineSeparator() + "\tviolated " + "is ExceptionSub e"));
            }
        }
    }
}