code: public static VTimezone convert(List<Daylight> daylights, Timezone tz) {
  		UtcOffset tzOffset = ValuedProperty.getValue(tz);
  		if (daylights.isEmpty() && tzOffset == null) {
  			return null;
  		}
  
  		VTimezone timezone = new VTimezone("TZ");
  		if (daylights.isEmpty() && tzOffset != null) {
  			StandardTime st = new StandardTime();
  			st.setTimezoneOffsetFrom(tzOffset);
  			st.setTimezoneOffsetTo(tzOffset);
  			timezone.addStandardTime(st);
  			return timezone;
  		}
  
  		for (Daylight daylight : daylights) {
  			if (!daylight.isDaylight()) {
  				continue;
  			}
  
  			UtcOffset daylightOffset = daylight.getOffset();
  			UtcOffset standardOffset = new UtcOffset(daylightOffset.getMillis() - (1000 * 60 * 60));
  
  			DaylightSavingsTime dst = new DaylightSavingsTime();
  			dst.setDateStart(daylight.getStart());
  			dst.setTimezoneOffsetFrom(standardOffset);
  			dst.setTimezoneOffsetTo(daylightOffset);
  			dst.addTimezoneName(daylight.getDaylightName());
  			timezone.addDaylightSavingsTime(dst);
  
  			StandardTime st = new StandardTime();
  			st.setDateStart(daylight.getEnd());
  			st.setTimezoneOffsetFrom(daylightOffset);
  			st.setTimezoneOffsetTo(standardOffset);
  			st.addTimezoneName(daylight.getStandardName());
  			timezone.addStandardTime(st);
  		}
  
  		return timezone.getComponents().isEmpty() ? null : timezone;
  	}
docs: Converts vCalendar timezone information to an iCalendar {@link VTimezone}
  component.
  @param daylights the DAYLIGHT properties
  @param tz the TZ property
  @return the VTIMEZONE component