@Override
    public void enablePlugin(Plugin plugin) {
        Validate.isTrue(plugin instanceof InjectablePlugin, "Plugin is not associated with this PluginLoader");
        
        if (!plugin.isEnabled()) {
            Injector.getLogger().info("Injecting plugin " + plugin.getName());
            
            InjectablePlugin iPlugin = (InjectablePlugin) plugin;
            
            String pluginName = iPlugin.getName();
            
            if (!loaders.containsKey(pluginName)) {
                loaders.put(pluginName, (InjectorClassLoader) iPlugin.getClass().getClassLoader());
            }
            
            try {
                iPlugin.setEnabled(true);
            } catch (Throwable e) {
                e.printStackTrace();
                Injector.getLogger().log(Level.SEVERE, "Error while injecting " + plugin.getName());
            }
            
            Bukkit.getPluginManager().callEvent(new PluginEnableEvent(plugin));
        }
    }