code: protected static ICalParameters handleTzidParameter(ICalProperty property, boolean hasTime, WriteContext context) {
  		ICalParameters parameters = property.getParameters();
  
  		//date values don't have timezones
  		if (!hasTime) {
  			return parameters;
  		}
  
  		//vCal doesn't use the TZID parameter
  		if (context.getVersion() == ICalVersion.V1_0) {
  			return parameters;
  		}
  
  		//floating values don't have timezones
  		TimezoneInfo tzinfo = context.getTimezoneInfo();
  		boolean floating = tzinfo.isFloating(property);
  		if (floating) {
  			return parameters;
  		}
  
  		TimezoneAssignment tz;
  		TimezoneAssignment globalTz = context.getGlobalTimezone();
  		if (globalTz == null) {
  			tz = tzinfo.getTimezoneToWriteIn(property);
  			if (tz == null) {
  				//write in UTC
  				return parameters;
  			}
  		} else {
  			tz = globalTz;
  		}
  
  		String tzid = null;
  		VTimezone component = tz.getComponent();
  		String globalId = tz.getGlobalId();
  		if (component != null) {
  			tzid = ValuedProperty.getValue(component.getTimezoneId());
  		} else if (globalId != null) {
  			tzid = '/' + globalId;
  		}
  
  		if (tzid == null) {
  			//should never happen
  			tzid = tz.getTimeZone().getID();
  		}
  
  		parameters = new ICalParameters(parameters);
  		parameters.setTimezoneId(tzid);
  		return parameters;
  	}
docs: Adds a TZID parameter to a property's parameter list if necessary.
  @param property the property
  @param hasTime true if the property value has a time component, false if
  not
  @param context the write context
  @return the property's new set of parameters