code: function Property(jCal, parent) {
      this._parent = parent || null;
  
      if (typeof(jCal) === 'string') {
        // We are creating the property by name and need to detect the type
        this.jCal = [jCal, {}, design.defaultType];
        this.jCal[TYPE_INDEX] = this.getDefaultType();
      } else {
        this.jCal = jCal;
      }
      this._updateType();
    }
docs: @classdesc
  Provides a layer on top of the raw jCal object for manipulating a single
  property, with its parameters and value.
  
  @description
  Its important to note that mutations done in the wrapper
  directly mutate the jCal object used to initialize.
  
  Can also be used to create new properties by passing
  the name of the property (as a String).
  
  @class
  @alias ICAL.Property
  @param {Array|String} jCal         Raw jCal representation OR
  the new name of the property
  
  @param {ICAL.Component=} parent    Parent component