private Object consume(IRunnable runnable, Object parameter)
        {
            var consumers = runnableManager.GetConsumers(runnable);
            var converter = consumers.FirstOrDefault(c => c.IsConvertable(parameter));

            if (converter == null)
            {
                return(ExecuteRunnable(runnable, parameter));
            }
            return(converter.Convert(parameter, param => ExecuteRunnable(runnable, param)));
        }