static IEnumerable<IEvent> CondTester(IEnvironment env)
    {
        var t1 = env.NamedTimeout(5, "VAL_T", "T");
        var aProc = env.Start(AProcess(env), name: "P");
        var cond = env.AllOf(t1, aProc);
        yield return cond;
        Console.WriteLine("ALL: {0}", cond.Value);

        var t2 = env.NamedTimeout(5, "VAL_T", "T");
        aProc = env.Start(AProcess(env), name: "P");
        cond = env.AnyOf(t2, aProc);
        yield return cond;
        Console.WriteLine("ANY: {0}", cond.Value);

        aProc = env.Start(AProcess(env), name: "P");
        var aTime = env.NamedTimeout(5, "VAL_T", "T");
        ConditionEval<ITimeout<string>, IProcess> pred =
            c => c.Ev1.Succeeded && c.Ev2.Succeeded &&
            c.Ev1.Value.Equals("VAL_T") &&
            c.Ev2.Value.Equals("VAL_P");
        cond = env.Condition(aTime, aProc, pred);
        yield return cond;
        Console.WriteLine("CUSTOM: {0}", cond.Value);
    }