code: function updateDescriptor(newDescriptor, options) {
  
  	var descriptor,
  		typeTest,
  		eventType;
  	
  	if (newDescriptor) {
  		if (!currentProperty)
  			throw exception('name');
  		
  		descriptor = newDescriptor;
  	}
  	
  	if (options) {
  		if (!currentProperty)
  			throw exception('property');
  		
  		descriptor = getCurrentDescriptor();
  		
  		if (options.type)
  			typeTest = getTestFor(options.type);
  		
  		if (options.event)
  			eventType = options.event === true ? ProtoTyper.CHANGE : options.event;
  		
  		if (descriptor.hasOwnProperty('value') && (typeTest || eventType)) {
  			// We need to define a "private" variable.
  			push(currentTarget, '_'+currentProperty, {
  				'value': descriptor.value,
  				'enumerable': false,
  				'writable': true
  			});
  			delete descriptor.value;
  		}
  		
  		if (descriptor.hasOwnProperty('writable') && (typeTest || eventType))
  			delete descriptor.writable;
  		
  		if (typeTest || eventType) {
  			descriptor.get = generateGet(currentProperty);
  			descriptor.set = generateSet(descriptor.set, currentProperty, typeTest, eventType);
  		}
  		
  		if (options.notKey)
  			descriptor.enumerable = false;
  		
  		if (options.final)
  			descriptor.configurable = false;
  	}
  	
  	
  	push(currentTarget, currentProperty, descriptor);
  }
docs: //////////////////// // DESCRIPTOR    // // ////////////////////