internal static UserInvitationApiModel DeserializeUserInvitationApiModel(XElement element)
        {
            string                     email          = default;
            DateTimeOffset?            expirationTime = default;
            long?                      id             = default;
            UserInvitationApiModelRole?role           = default;

            if (element.Element("email") is XElement emailElement)
            {
                email = (string)emailElement;
            }
            if (element.Element("expirationTime") is XElement expirationTimeElement)
            {
                expirationTime = expirationTimeElement.GetDateTimeOffsetValue("O");
            }
            if (element.Element("id") is XElement idElement)
            {
                id = (long?)idElement;
            }
            if (element.Element("role") is XElement roleElement)
            {
                role = new UserInvitationApiModelRole(roleElement.Value);
            }
            return(new UserInvitationApiModel(email, expirationTime, id, role));
        }
        internal static UserInvitationApiModel DeserializeUserInvitationApiModel(JsonElement element)
        {
            Optional <string>                     email          = default;
            Optional <DateTimeOffset>             expirationTime = default;
            Optional <long>                       id             = default;
            Optional <UserInvitationApiModelRole> role           = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("email"))
                {
                    email = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("expirationTime"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    expirationTime = property.Value.GetDateTimeOffset("O");
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    id = property.Value.GetInt64();
                    continue;
                }
                if (property.NameEquals("role"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    role = new UserInvitationApiModelRole(property.Value.GetString());
                    continue;
                }
            }
            return(new UserInvitationApiModel(email.Value, Optional.ToNullable(expirationTime), Optional.ToNullable(id), Optional.ToNullable(role)));
        }