compile with -Xlint:unchecked