code: function fromData(aData) {
        this.expandedUntilYear = 0;
        this.changes = [];
  
        if (aData instanceof ICAL.Component) {
          // Either a component is passed directly
          this.component = aData;
        } else {
          // Otherwise the component may be in the data object
          if (aData && "component" in aData) {
            if (typeof aData.component == "string") {
              // If a string was passed, parse it as a component
              var jCal = ICAL.parse(aData.component);
              this.component = new ICAL.Component(jCal);
            } else if (aData.component instanceof ICAL.Component) {
              // If it was a component already, then just set it
              this.component = aData.component;
            } else {
              // Otherwise just null out the component
              this.component = null;
            }
          }
  
          // Copy remaining passed properties
          for (var key in OPTIONS) {
            /* istanbul ignore else */
            if (OPTIONS.hasOwnProperty(key)) {
              var prop = OPTIONS[key];
              if (aData && prop in aData) {
                this[prop] = aData[prop];
              }
            }
          }
        }
  
        // If we have a component but no TZID, attempt to get it from the
        // component's properties.
        if (this.component instanceof ICAL.Component && !this.tzid) {
          this.tzid = this.component.getFirstPropertyValue('tzid');
        }
  
        return this;
      }
docs: Sets up the current instance using members from the passed data object.
  
  @param {ICAL.Component|Object} aData options for class
  @param {String|ICAL.Component} aData.component
  If aData is a simple object, then this member can be set to either a
  string containing the component data, or an already parsed
  ICAL.Component
  @param {String} aData.tzid      The timezone identifier
  @param {String} aData.location  The timezone locationw
  @param {String} aData.tznames   An alternative string representation of the
  timezone
  @param {Number} aData.latitude  The latitude of the timezone
  @param {Number} aData.longitude The longitude of the timezone