int i = (type == MSILType.CHAR) ?
int i = (obj instanceof Character) ?
    Item.StackItem loadLiteral(MSILType type, Object obj) {	switch (type) {	case I1:	case I2:	case I4:	case CHAR:	    int i = (type == MSILType.CHAR) ?		(int)((Character) obj).charValue() :		((Number)obj).intValue();	    switch (i) {	    case -1:code.Emit(OpCodes.Ldc_I4_M1); break;	    case 0: code.Emit(OpCodes.Ldc_I4_0); break;	    case 1: code.Emit(OpCodes.Ldc_I4_1); break;	    case 2: code.Emit(OpCodes.Ldc_I4_2); break;	    case 3: code.Emit(OpCodes.Ldc_I4_3); break;	    case 4: code.Emit(OpCodes.Ldc_I4_4); break;	    case 5: code.Emit(OpCodes.Ldc_I4_5); break;	    case 6: code.Emit(OpCodes.Ldc_I4_6); break;	    case 7: code.Emit(OpCodes.Ldc_I4_7); break;	    case 8: code.Emit(OpCodes.Ldc_I4_8); break;	    default:		if (i >= -128 && i <= 127)		    code.Emit(OpCodes.Ldc_I4_S, i);		else		    code.Emit(OpCodes.Ldc_I4, i);	    }	    break;	case I8:	    code.Emit(OpCodes.Ldc_I8, ((Number)obj).longValue());	    break;	case R4:	    code.Emit(OpCodes.Ldc_R4, ((Number)obj).floatValue());	    break;	case R8:	    code.Emit(OpCodes.Ldc_R8, ((Number)obj).doubleValue());	    break; 	case BOOL:	    if (((Boolean)obj).booleanValue())		code.Emit(OpCodes.Ldc_I4_1);	    else		code.Emit(OpCodes.Ldc_I4_0);	    break;	case VOID:	    code.Emit(OpCodes.Ldsfld, tc.RUNTIME_UNIT_VAL);	    break;	case REF(Type refType):	    if (obj == null) {		code.Emit(OpCodes.Ldnull);	    } else if (refType == tc.STRING) {		code.Emit(OpCodes.Ldstr, obj.toString());	    } else {		throw new ApplicationError		    ("loadLiteral(): unexpected literal type: " + refType +		     "; value = " + obj);	    }	    break;	default:	    throw new ApplicationError		("loadLiteral(): Unknown literal type: " + type);	}	return items.StackItem(type);    } // genLiteral()