Упустил. Сделать, сделал, но как это работает? Почему print((short) 1); идёт в public static void print(double i), а не в ближайший public static void print(Integer i), ведь даже по смыслу ближайший апкаст short'а - это Integer.