public new void SerializeX (Writer _Writer, bool _wrap, ref bool _first) {
if (_wrap) {
_Writer.WriteObjectStart ();
}
if (Protected != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("protected", 1);
_Writer.WriteBinary (Protected);
}
if (Unprotected != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("unprotected", 1);
_Writer.WriteBinary (Unprotected);
}
if (IV != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("iv", 1);
_Writer.WriteBinary (IV);
}
if (CipherText != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("ciphertext", 1);
_Writer.WriteBinary (CipherText);
}
if (JTag != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("tag", 1);
_Writer.WriteBinary (JTag);
}
if (AdditionalAuthenticatedData != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("aad", 1);
_Writer.WriteBinary (AdditionalAuthenticatedData);
}
if (Recipients != null) {
_Writer.WriteObjectSeparator (ref _first);
_Writer.WriteToken ("recipients", 1);
_Writer.WriteArrayStart ();
bool _firstarray = true;
foreach (var _index in Recipients) {
_Writer.WriteArraySeparator (ref _firstarray);
// This is an untagged structure. Cannot inherit.
//_Writer.WriteObjectStart();
//_Writer.WriteToken(_index.Tag(), 1);
bool firstinner = true;
_index.Serialize (_Writer, true, ref firstinner);
//_Writer.WriteObjectEnd();
}
_Writer.WriteArrayEnd ();
}
if (_wrap) {
_Writer.WriteObjectEnd ();
}
}