code: private Collection<Class<?>> findScribeless(ICalendar ical) {
  		Set<Class<?>> unregistered = new HashSet<Class<?>>();
  		LinkedList<ICalComponent> components = new LinkedList<ICalComponent>();
  		components.add(ical);
  
  		while (!components.isEmpty()) {
  			ICalComponent component = components.removeLast();
  
  			Class<? extends ICalComponent> componentClass = component.getClass();
  			if (componentClass != RawComponent.class && index.getComponentScribe(componentClass) == null) {
  				unregistered.add(componentClass);
  			}
  
  			for (Map.Entry<Class<? extends ICalProperty>, List<ICalProperty>> entry : component.getProperties()) {
  				List<ICalProperty> properties = entry.getValue();
  				if (properties.isEmpty()) {
  					continue;
  				}
  
  				Class<? extends ICalProperty> clazz = entry.getKey();
  				if (clazz != RawProperty.class && index.getPropertyScribe(clazz) == null) {
  					unregistered.add(clazz);
  				}
  			}
  
  			components.addAll(component.getComponents().values());
  		}
  
  		return unregistered;
  	}
docs: Gets the component/property classes that don't have scribes associated
  with them.
  @param ical the iCalendar object
  @return the component/property classes