It seems just a little strange that we reject a typed null value -- it seems like that extra type info could be more useful than harmful?
Otherwise, there's an identical block just above this for "if (dataType == null)". Merge the two blocks?