public PKSimTransport TransportFor(string individualProcessName, string compoundProcessName)
        {
            //do we have a process with the individual name? yes, then use it
            var transport = ProcessFor <PKSimTransport>(individualProcessName);

            if (transport != null)
            {
                return(transport);
            }

            var compoundProcess = _flatProcessesRepository.FindByName(compoundProcessName);

            if (compoundProcess == null)
            {
                throw new ArgumentException($"Cannot find compound process named '{compoundProcessName}'");
            }

            var simulationProcessName = simulationProcessNameFrom(individualProcessName, compoundProcessName);

            return(_allSimulationActiveProcesses.FindByName(simulationProcessName).DowncastTo <PKSimTransport>());
        }
        private string simulationProcessNameFrom(string simulationPrefix, string compoundProcessName)
        {
            var compoundProcess = _flatProcessesRepository.FindByName(compoundProcessName);

            //already a process in simulation. Nothing to do
            if (compoundProcess.GroupName == CoreConstants.Groups.SIMULATION_ACTIVE_PROCESS)
            {
                return(compoundProcessName);
            }

            //this is a composed name
            return(string.Format("{0}_{1}", simulationPrefix, compoundProcess.KineticType));
        }