code: public void write(ICalendar ical) throws IOException {
  		Collection<Class<?>> unregistered = findScribeless(ical);
  		if (!unregistered.isEmpty()) {
  			List<String> classNames = new ArrayList<String>(unregistered.size());
  			for (Class<?> clazz : unregistered) {
  				classNames.add(clazz.getName());
  			}
  			throw Messages.INSTANCE.getIllegalArgumentException(13, classNames);
  		}
  
  		tzinfo = ical.getTimezoneInfo();
  		context = new WriteContext(getTargetVersion(), tzinfo, globalTimezone);
  		_write(ical);
  	}
docs: Writes an iCalendar object to the data stream.
  @param ical the iCalendar object to write
  @throws IllegalArgumentException if the scribe class for a component or
  property object cannot be found (only happens when an experimental
  property/component scribe is not registered with the
  {@code registerScribe} method.)
  @throws IOException if there's a problem writing to the data stream