import `java::java`java.*
import java.`java::java.util`util.*

~c~fun c(~x~x : java.lang.`java::java.lang.Number`Number) {
  `x`x.`java::java.lang.Number.intValue()`intValue()
}

fun <T> t(t : T) : T {
  `c`c(java.lang.Integer(1))
  System.out.`java::java.io.PrintStream.print(Object)`print(t)
  System.out.`java::java.io.PrintStream.print(char[])`print(null as CharArray?)
  System.out.`java::java.io.PrintStream.print(Object)`print(null as Object?)
  System.out.`java::java.io.PrintStream.print(Int)`print(1)
  System.out.`java::java.io.PrintStream.print(Double)`print(1.0)
}
