@SuppressWarnings("unchecked")
	public void registerListener( EventListener listener, Plugin plugin )
	{
		List< Method > methods = new ArrayList< Method >();
		
		Collections.addAll( methods, listener.getClass().getMethods() );
		
		for( Method method : methods )
		{
			EventHandler handler = method.getAnnotation( EventHandler.class );
			
			if( handler == null )
			{
				continue;
			}
			
			Class< ? >[] parameters = method.getParameterTypes();
			
			if( parameters.length != 1 )
			{
				continue;
			}
			
			Class< ? extends Event> eventClass = ( Class<? extends Event> ) parameters[ 0 ];
			EventExecutor executor = new EventExecutor( plugin, listener, handler, method );
			
			List< EventExecutor > ex = null;
			
			if( executors.containsKey( eventClass ) )
			{
				ex = executors.get( eventClass );
			}
			else
			{
				ex = new ArrayList< EventExecutor >();
			}
			
			ex.add( executor );
			executors.put( eventClass, ex );
		}
	}