private Trigger instantiate(Element node, String classname) throws CollectionConfigurationException {
private Trigger instantiate(DBBroker broker, Collection parent, Element node, String classname) throws CollectionConfigurationException {
	private Trigger instantiate(Element node, String classname) throws CollectionConfigurationException {		try {			Class clazz = Class.forName(classname);			if(!Trigger.class.isAssignableFrom(clazz))				throw new CollectionConfigurationException("supplied class is not a subclass of org.exist.collections.Trigger");			Trigger trigger = (Trigger)clazz.newInstance();			NodeList nodes = node.getChildNodes();			Node next;			Element param;			String name, value;			Map parameters = new HashMap(5);			for(int i = 0; i < nodes.getLength(); i++) {				next = nodes.item(i);				if(next.getNodeType() == Node.ELEMENT_NODE &&					next.getNamespaceURI().equals(NAMESPACE) &&					next.getLocalName().equals(PARAMETER_ELEMENT)) {					param = (Element)next;					name = param.getAttribute(PARAM_NAME_ATTRIBUTE);					value = param.getAttribute(PARAM_VALUE_ATTRIBUTE);					if(name == null || value == null)						throw new CollectionConfigurationException("element parameter requires attributes " +							"'name' and 'value'");					parameters.put(name, value);				}			}			trigger.configure(parameters);			return trigger;		} catch (ClassNotFoundException e) {			throw new CollectionConfigurationException(e.getMessage(), e);		} catch (InstantiationException e) {			throw new CollectionConfigurationException(e.getMessage(), e);		} catch (IllegalAccessException e) {			throw new CollectionConfigurationException(e.getMessage(), e);		}	}