private static void WriteValueHead(BinaryWriter writer, byte typeCode, Type type, object value) {
var nullCheck = value == null;
writer.Write(typeCode);
writer.Write(nullCheck);
if (nullCheck)
return;
if (typeCode == ArrayType) {
var typeString = type.GetElementType().FullName;
writer.Write(typeString);
var array = (Array) value;
var arrayLength = array.Length;
writer.Write(arrayLength);
}
}