sO convertPrimitiveIfNecessary(O o, Class b) { if (b.isPrimitive()) { if (o cast Char) { char x = cast o; if (b == int.class) ret Int.valueOf(x); if (b == long.class) ret Long.valueOf(x); if (b == float.class) ret Float.valueOf(x); if (b == double.class) ret Double.valueOf(x); } else if (o cast Number) { if (b == char.class) ret Char.valueOf((char) o.intValue()); if (b == short.class) ret o.shortValue(); if (b == int.class) ret o.intValue(); if (b == long.class) ret o.longValue(); if (b == float.class) ret o.floatValue(); } } ret o; }