abstract class Box<T> : IBar, IFoo where T : IBar, T : IFoo {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  fun bar(vararg serializers: I<*>): I<*> {
    return <this>.foo<IBase>(tSerializer = serializers.get(index = 0))
  }

  abstract fun <F> foo(tSerializer: I<F>): I<Box<F>> where F : IBar, F : IFoo

}

interface I<G> where G : IBar, G : IFoo {
}

interface IBar : IBase {
}

interface IBase {
}

interface IFoo : IBase {
}

