void operator()(V& v) const {
		typedef typename V::value_type::type bare_type;
		typedef injection_destination_container<bare_type> container;

		for(typename V::const_iterator it = v.begin(), itEnd = v.end(); it != itEnd; ++it) {
			if(*it) {
				injection_destination<bare_type> destination = 
					container::remove(injection_destination_key(subject,it->get_injection_type_id()));

				destination.transfer_from(const_cast<injection_source<bare_type>*>(*it));
			}
		}
		if(succeeded != NULL) {
			diagnose<V>();
		}
	}