public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = BooleanFalse.GetHashCode();
         hashCode = (hashCode * 397) ^ BooleanTrue.GetHashCode();
         hashCode = (hashCode * 397) ^ Char.GetHashCode();
         hashCode = (hashCode * 397) ^ SByte.GetHashCode();
         hashCode = (hashCode * 397) ^ Byte.GetHashCode();
         hashCode = (hashCode * 397) ^ Int16.GetHashCode();
         hashCode = (hashCode * 397) ^ UInt16.GetHashCode();
         hashCode = (hashCode * 397) ^ Int32;
         hashCode = (hashCode * 397) ^ (int)UInt32;
         hashCode = (hashCode * 397) ^ Int64.GetHashCode();
         hashCode = (hashCode * 397) ^ UInt64.GetHashCode();
         hashCode = (hashCode * 397) ^ Single.GetHashCode();
         hashCode = (hashCode * 397) ^ Double.GetHashCode();
         hashCode = (hashCode * 397) ^ Decimal.GetHashCode();
         hashCode = (hashCode * 397) ^ String.GetHashCode();
         hashCode = (hashCode * 397) ^ DateTime.GetHashCode();
         hashCode = (hashCode * 397) ^ DateTimeOffset.GetHashCode();
         hashCode = (hashCode * 397) ^ Guid.GetHashCode();
         hashCode = (hashCode * 397) ^ NonGenericType.GetHashCode();
         hashCode = (hashCode * 397) ^ GenericTypeDefinition.GetHashCode();
         hashCode = (hashCode * 397) ^ ClosedConstructedGenericType.GetHashCode();
         hashCode = (hashCode * 397) ^ (NullReference != null ? NullReference.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Enum_S8.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_U8.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_S16.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_U16.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_S32.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_U32.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_S64.GetHashCode();
         hashCode = (hashCode * 397) ^ Enum_U64.GetHashCode();
         hashCode = (hashCode * 397) ^ SerializableObject.GetHashCode();
         hashCode = (hashCode * 397) ^ ByteArrayEqualityComparer.GetHashCode(Buffer1);
         hashCode = (hashCode * 397) ^ ByteArrayEqualityComparer.GetHashCode(Buffer2);
         return(hashCode);
     }
 }