code: function(o, val) {
  		
  		// getter
  		if (val === undefined) {
  			return this.__options[o];
  		}
  		// setter
  		else {
  			
  			if (!this.__destroyed) {
  				
  				// change value
  				this.__options[o] = val;
  				
  				// format
  				this.__optionsFormat();
  				
  				// re-prepare the triggers if needed
  				if ($.inArray(o, ['trigger', 'triggerClose', 'triggerOpen']) >= 0) {
  					this.__prepareOrigin();
  				}
  				
  				if (o === 'selfDestruction') {
  					this.__prepareGC();
  				}
  			}
  			else {
  				this.__destroyError();
  			}
  			
  			return this;
  		}
  	}
docs: Get or set options. For internal use and advanced users only.
  
  @param {string} o Option name
  @param {mixed} val optional A new value for the option
  @return {mixed|self} If val is omitted, the value of the option
  is returned, otherwise the instance itself is returned
  @public