protected static T CurrentProcedureStep <T>(Procedure rp, ActivityStatus status) where T : ProcedureStep { ProcedureStep uncastProcedureStep = CollectionUtils.SelectFirst( rp.ProcedureSteps, delegate(ProcedureStep ps) { return(ps.Is <T>() && ps.State == status); }); return(uncastProcedureStep != null?uncastProcedureStep.Downcast <T>() : null); }