code: function fromData(aData, aZone) {
        if (aData) {
          for (var key in aData) {
            /* istanbul ignore else */
            if (Object.prototype.hasOwnProperty.call(aData, key)) {
              // ical type cannot be set
              if (key === 'icaltype') continue;
              this[key] = aData[key];
            }
          }
        }
  
        if (aZone) {
          this.zone = aZone;
        }
  
        if (aData && !("isDate" in aData)) {
          this.isDate = !("hour" in aData);
        } else if (aData && ("isDate" in aData)) {
          this.isDate = aData.isDate;
        }
  
        if (aData && "timezone" in aData) {
          var zone = ICAL.TimezoneService.get(
            aData.timezone
          );
  
          this.zone = zone || ICAL.Timezone.localTimezone;
        }
  
        if (aData && "zone" in aData) {
          this.zone = aData.zone;
        }
  
        if (!this.zone) {
          this.zone = ICAL.Timezone.localTimezone;
        }
  
        this._cachedUnixTime = null;
        return this;
      }
docs: Sets up the current instance using members from the passed data object.
  
  @param {Object} aData            Time initialization
  @param {Number=} aData.year      The year for this date
  @param {Number=} aData.month     The month for this date
  @param {Number=} aData.day       The day for this date
  @param {Number=} aData.hour      The hour for this date
  @param {Number=} aData.minute    The minute for this date
  @param {Number=} aData.second    The second for this date
  @param {Boolean=} aData.isDate   If true, the instance represents a date
  (as opposed to a date-time)
  @param {ICAL.Timezone=} aZone    Timezone this position occurs in