abstract class A : Number { constructor() /* primary */ { super/*Number*/() /* () */ } } class B : Number { constructor() /* primary */ { super/*Number*/() /* () */ } override fun doubleValue(): Double { return 4.0 } override fun floatValue(): Float { return 3.0F } override fun intValue(): Int { return 1 } override fun longValue(): Long { return 2L } } abstract class C : Number, Java2 { constructor() /* primary */ { super/*Number*/() /* () */ } } abstract class D : Number, Java2 { constructor() /* primary */ { super/*Number*/() /* () */ } override fun intValue(): Int { return 1 } override fun longValue(): Long { return 2L } } abstract class E : Number, KotlinInterface { constructor() /* primary */ { super/*Number*/() /* () */ } } abstract class F : Number, KotlinInterface { constructor() /* primary */ { super/*Number*/() /* () */ } override fun doubleValue(): Double { return 4.0 } override fun floatValue(): Float { return 3.0F } } abstract class G : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } } abstract class H : Java1 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun toByte(): Byte { return 1B } override fun toDouble(): Double { return 1.0 } } abstract class I : Java3 { constructor() /* primary */ { super/*Java3*/() /* () */ } } class J : Java3 { constructor() /* primary */ { super/*Java3*/() /* () */ } override fun toByte(): Byte { return 1B } override fun toShort(): Short { return 2S } } abstract class K : Java4 { constructor() /* primary */ { super/*Java4*/() /* () */ } } class L : Java4 { constructor() /* primary */ { super/*Java4*/() /* () */ } override fun doubleValue(): Double { return 4.0 } override fun floatValue(): Float { return 3.0F } override fun intValue(): Int { return 1 } override fun longValue(): Long { return 2L } } class M : Java5 { constructor() /* primary */ { super/*Java5*/() /* () */ } } class N : Java5 { constructor() /* primary */ { super/*Java5*/() /* () */ } override fun intValue(): Int { return 10 } } abstract class O : A, Java2 { constructor() /* primary */ { super/*A*/() /* () */ } } abstract class P : A, Java2 { constructor() /* primary */ { super/*A*/() /* () */ } override fun intValue(): Int { return 1 } override fun longValue(): Long { return 2L } } abstract class Q : Java1, Java2 { constructor() /* primary */ { super/*Java1*/() /* () */ } } abstract class R : Java1, Java2 { constructor() /* primary */ { super/*Java1*/() /* () */ } override fun toInt(): Int { return 1 } } interface KotlinInterface { abstract fun byteValue(): Byte } fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L, m: M, n: N, o: O, p: P, q: Q, r: R) { a.shortValue() /*~> Unit */ a.intValue() /*~> Unit */ b.byteValue() /*~> Unit */ b.longValue() /*~> Unit */ c.intValue() /*~> Unit */ d.intValue() /*~> Unit */ d.longValue() /*~> Unit */ e.byteValue() /*~> Unit */ e.intValue() /*~> Unit */ f.intValue() /*~> Unit */ f.doubleValue() /*~> Unit */ g.toShort() /*~> Unit */ g.toByte() /*~> Unit */ h.toShort() /*~> Unit */ h.toInt() /*~> Unit */ i.toInt() /*~> Unit */ j.toByte() /*~> Unit */ k.intValue() /*~> Unit */ k.byteValue() /*~> Unit */ l.intValue() /*~> Unit */ l.doubleValue() /*~> Unit */ m.intValue() /*~> Unit */ m.doubleValue() /*~> Unit */ n.intValue() /*~> Unit */ o.intValue() /*~> Unit */ o.byteValue() /*~> Unit */ p.intValue() /*~> Unit */ p.shortValue() /*~> Unit */ q.intValue() /*~> Unit */ q.toByte() /*~> Unit */ r.intValue() /*~> Unit */ }