/**
   * Writes elements to XML.
   *
   * @param writer accepts EwsServiceXmlWriter
   * @throws Exception throws Exception
   */
  @Override
  public void writeElementsToXml(EwsServiceXmlWriter writer) throws Exception {
    if (this.offset != null) {
      writer.writeElementValue(
          XmlNamespace.Types,
          XmlElementNames.Offset,
          EwsUtilities.getTimeSpanToXSDuration(this.getOffset()));
    }

    if (this.recurrence != null) {
      this.recurrence.writeToXml(writer, XmlElementNames.RelativeYearlyRecurrence);
    }

    if (this.absoluteDate != null) {
      writer.writeElementValue(
          XmlNamespace.Types,
          XmlElementNames.AbsoluteDate,
          EwsUtilities.dateTimeToXSDate(this.getAbsoluteDate()));
    }

    if (this.time != null) {
      writer.writeElementValue(XmlNamespace.Types, XmlElementNames.Time, this.getTime().toXSTime());
    }
  }