Marvin: FrontLoader.cs

using System;
using System.Collections.Generic;
using System.Linq;
 
namespace Marvin.Examples.FrontLoader
{
    internal class FrontLoader {
        public FrontLoader(IEnumerable<Activity> activities){
            allActivities = activities;
        }
 
        role allActivities {
            void Plan(){
                IEnumerable<Activity> list;
                do{
                    list = ((IEnumerable<Activity>)self).Where(a => !a.Planned);
                    foreach(var activity in list){
                        activity.Plan();
                    }
                } while(list.Any());
            }
        }
 
       public IEnumerable<Activity> Plan() {
           allActivities.Plan();
           return allActivities;
       }
    }
}