private static bool SavePrimitiveValueToStream(Stream stream, Type typeOfvalue, object value)
 {
     if (typeOfvalue == typeof(long))
     {
         MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, BitConverter.GetBytes((long)value));
         return(true);
     }
     if (typeOfvalue == typeof(int))
     {
         MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, BitConverter.GetBytes((int)value));
         return(true);
     }
     if (typeOfvalue == typeof(Guid))
     {
         MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, ((Guid)value).ToByteArray());
         return(true);
     }
     if (typeOfvalue == typeof(string))
     {
         string text = value as string;
         if (Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(text)) == text)
         {
             MessageTraceCollapsedProperty.SaveSingleByteToStream(stream, 2);
             MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, Encoding.ASCII.GetBytes((string)value));
         }
         else
         {
             MessageTraceCollapsedProperty.SaveSingleByteToStream(stream, 3);
             MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, Encoding.Unicode.GetBytes((string)value));
         }
         return(true);
     }
     if (typeOfvalue == typeof(DateTime))
     {
         return(MessageTraceCollapsedProperty.SavePrimitiveValueToStream(stream, typeof(long), ((DateTime)value).ToBinary()));
     }
     if (MessageTraceCollapsedProperty.PrimitiveValueToByteArrayConvertor.ContainsKey(typeOfvalue))
     {
         MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, MessageTraceCollapsedProperty.PrimitiveValueToByteArrayConvertor[typeOfvalue](value));
         return(true);
     }
     return(typeOfvalue.IsEnum && MessageTraceCollapsedProperty.SavePrimitiveValueToStream(stream, typeof(int), Convert.ToInt32(value)));
 }