/// <summary>
        /// Return a XML representation of this object.
        /// </summary>
        /// <param name="CustomAuthorizeRemoteReservationStartRequestSerializer">A delegate to customize the serialization of AuthorizeRemoteReservationStart requests.</param>
        /// <param name="CustomIdentificationSerializer">A delegate to serialize custom Identification XML elements.</param>
        public XElement ToXML(CustomXMLSerializerDelegate <AuthorizeRemoteReservationStartRequest> CustomAuthorizeRemoteReservationStartRequestSerializer = null,
                              CustomXMLSerializerDelegate <Identification> CustomIdentificationSerializer = null)

        {
            var XML = new XElement(OICPNS.Reservation + "eRoamingAuthorizeRemoteReservationStart",

                                   SessionId.HasValue
                                           ? new XElement(OICPNS.Reservation + "SessionID", SessionId.ToString())
                                           : null,

                                   CPOPartnerSessionId.HasValue
                                           ? new XElement(OICPNS.Reservation + "CPOPartnerSessionID", CPOPartnerSessionId.ToString())
                                           : null,

                                   EMPPartnerSessionId.HasValue
                                           ? new XElement(OICPNS.Reservation + "EMPPartnerSessionID", EMPPartnerSessionId.ToString())
                                           : null,

                                   new XElement(OICPNS.Reservation + "ProviderID", ProviderId.ToString()),
                                   new XElement(OICPNS.Reservation + "EVSEID", EVSEId.ToString()),

                                   Identification.ToXML(OICPNS.Reservation + "Identification",
                                                        CustomIdentificationSerializer),

                                   PartnerProductId.HasValue
                                           ? new XElement(OICPNS.Reservation + "PartnerProductID", PartnerProductId.ToString())
                                           : null,

                                   Duration.HasValue
                                           ? new XElement(OICPNS.Reservation + "Duration", Convert.ToInt32(Math.Round(Duration.Value.TotalMinutes, 0)))
                                           : null

                                   );

            return(CustomAuthorizeRemoteReservationStartRequestSerializer != null
                       ? CustomAuthorizeRemoteReservationStartRequestSerializer(this, XML)
                       : XML);
        }
        /// <summary>
        /// Return a XML representation of this object.
        /// </summary>
        /// <param name="CustomAuthorizeStopRequestSerializer">A delegate to customize the serialization of AuthorizeStop requests.</param>
        /// <param name="CustomIdentificationSerializer">A delegate to serialize custom Identification XML elements.</param>
        public XElement ToXML(CustomXMLSerializerDelegate <AuthorizeStopRequest> CustomAuthorizeStopRequestSerializer = null,
                              CustomXMLSerializerDelegate <Identification> CustomIdentificationSerializer             = null)

        {
            var XML = new XElement(OICPNS.Authorization + "eRoamingAuthorizeStop",

                                   new XElement(OICPNS.Authorization + "SessionID", SessionId.ToString()),

                                   CPOPartnerSessionId.HasValue
                                          ? new XElement(OICPNS.Authorization + "CPOPartnerSessionID", CPOPartnerSessionId.ToString())
                                          : null,

                                   EMPPartnerSessionId.HasValue
                                          ? new XElement(OICPNS.Authorization + "EMPPartnerSessionID", EMPPartnerSessionId.ToString())
                                          : null,

                                   new XElement(OICPNS.Authorization + "OperatorID", OperatorId.ToString()),

                                   EVSEId.HasValue
                                          ? new XElement(OICPNS.Authorization + "EvseID", EVSEId.ToString())
                                          : null,

                                   Identification.ToXML(CustomIdentificationSerializer: CustomIdentificationSerializer)

                                   );

            return(CustomAuthorizeStopRequestSerializer != null
                       ? CustomAuthorizeStopRequestSerializer(this, XML)
                       : XML);
        }
        /// <summary>
        /// Return a XML representation of this object.
        /// </summary>
        /// <param name="CustomAuthorizeRemoteStopRequestSerializer">A delegate to customize the serialization of AuthorizeRemoteStop requests.</param>
        public XElement ToXML(CustomXMLSerializerDelegate <AuthorizeRemoteStopRequest> CustomAuthorizeRemoteStopRequestSerializer = null)
        {
            var XML = new XElement(OICPNS.Authorization + "eRoamingAuthorizeRemoteStop",

                                   new XElement(OICPNS.Authorization + "SessionID", SessionId.ToString()),

                                   CPOPartnerSessionId.HasValue
                                          ? new XElement(OICPNS.Authorization + "CPOPartnerSessionID", CPOPartnerSessionId.ToString())
                                          : null,

                                   EMPPartnerSessionId.HasValue
                                          ? new XElement(OICPNS.Authorization + "EMPPartnerSessionID", EMPPartnerSessionId.ToString())
                                          : null,

                                   new XElement(OICPNS.Authorization + "ProviderID", ProviderId.ToString()),
                                   new XElement(OICPNS.Authorization + "EvseID", EVSEId.ToString())

                                   );

            return(CustomAuthorizeRemoteStopRequestSerializer != null
                       ? CustomAuthorizeRemoteStopRequestSerializer(this, XML)
                       : XML);
        }