text: 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"));
              }
          }
      }
  }