private Expression CreateNullableInstantiation(Expression val, IType type)
{
MethodInvocationExpression mie = new MethodInvocationExpression();
GenericReferenceExpression gre = new GenericReferenceExpression();
gre.Target = new MemberReferenceExpression(new ReferenceExpression("System"), "Nullable");
gre.GenericArguments.Add(TypeReference.Lift(Nullable.GetUnderlyingType(((ExternalType) type).ActualType)));
mie.Target = gre;
if (null != val && !IsNull(val))
mie.Arguments.Add(val);
return mie;
}