@Override
	public void processPlugins() {
		for(Plugin plugin : this.registry.getPlugins()) {
			List<Class<?>> interfaces = ClassUtils.getAllInterfaces(plugin.getClass());
			if(interfaces.contains(HasInvocationHandler.class)) {
				Class<? extends InvocationHandler> handler = ((HasInvocationHandler) plugin).getInvocationHandler();
				//FIXME What if the plugin implements 2 interfaces?
				provider.setDefaultInvocationHandler(plugin.getClass().getInterfaces()[0], handler);
			}
		}
		
		for(Plugin plugin : this.registry.getPlugins()) {
			//FIXME What if the plugin implements 2 interfaces?
			@SuppressWarnings("unchecked")
			Class<? extends Plugin> inf = (Class<? extends Plugin>) plugin.getClass().getInterfaces()[0];
			Plugin wrapped = (Plugin) this.registry.getManager().getPlugin(inf, provider.getInvocationHandler(inf));
			registry.registerPlugin(plugin.getClass(), wrapped);
		}
	}