final Class<?> argType = SCJavaDefn.getJavaArgumentType(foreignFunctionInfo, 0);
final Class<?> resultType = SCJavaDefn.getJavaReturnType(foreignFunctionInfo);
final ExpressionContextPair argExprPair = generateUnboxedForeignFunctionArgument(JavaTypeName.make(argType), basicOpExpressions.getArgument(0), variableContext);
final JavaExpression argExpr = argExprPair.getJavaExpression();
returnContext.addStatement(argExprPair.getContextBlock());
if (kind == ForeignFunctionInfo.JavaKind.IDENTITY_CAST ||
kind == ForeignFunctionInfo.JavaKind.WIDENING_REFERENCE_CAST) {
//it is important to do nothing for a widening reference cast (except for evaluating)