/// <inheritdoc/> public override void Serialize(ref T urlReference, ArchiveMode mode, [NotNull] SerializationStream stream) { if (mode == ArchiveMode.Serialize) { var attachedReference = AttachedReferenceManager.GetAttachedReference(urlReference); if (attachedReference is null) { throw new InvalidOperationException("UrlReference does not have an AttachedReference."); } stream.Write(attachedReference.Id); stream.Write(attachedReference.Url); } else { var id = stream.Read <AssetId>(); var url = stream.ReadString(); urlReference = (T)UrlReferenceHelper.CreateReference(typeof(T), id, url); } }