@SuppressWarnings({ "unchecked", "rawtypes" })
	public static List<?> invoke(Signal signal, Object[] varargs)
	{
		List returnVal = new ArrayList();
		if (USE_WORKER_THREADS && signal.isVoid() && linker.get(signal.getSignalName()).getRegisteredSlots().size() > 1)
		{
			for (Slot slot : linker.get(signal.getSignalName()).getRegisteredSlots())
			{
				exec.execute(new SASRunner(slot, varargs));
			}
		}
        else
		{
			for (Slot slot : linker.get(signal.getSignalName()).getRegisteredSlots())
			{
				Object o = slot.invoke(varargs);
				returnVal.add(o);
			}
		}
		return returnVal;
	}